whirlpool-algorithm.h
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. /**
  2.  * The Whirlpool hashing function.
  3.  *
  4.  * The Whirlpool algorithm was developed by
  5.  * Paulo S. L. M. Barreto and Vincent Rijmen.
  6.  *
  7.  * See
  8.  *      P.S.L.M. Barreto, V. Rijmen,
  9.  *      ``The Whirlpool hashing function,''
  10.  *      NESSIE submission, 2000 (tweaked version, 2001),
  11.  *      <https://www.cosic.esat.kuleuven.ac.be/nessie/workshop/submissions/whirlpool.zip>
  12.  *
  13.  * @version 3.0 (2003.03.12)
  14.  *
  15.  * Modified for use in this software package.
  16.  */
  17. #ifndef _WHIRLPOOL_ALGORITHM_H_
  18. #define _WHIRLPOOL_ALGORITHM_H_
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. /**
  23.  * The size, in bytes, of a Whirlpool hash.
  24.  */
  25. #define WP_DIGEST_SIZE 64
  26. typedef struct WP_Struct WP_Struct;
  27. /**
  28.  * Create a new WP_Struct handle and initialize the hashing state.
  29.  *
  30.  * @return A new WP_Struct handle, which must be freed by WP_Free() when no longer
  31.  *         needed, or NULL if failed to allocate memory.
  32.  */
  33. WP_Struct *WP_Create();
  34. /**
  35.  * (Re-)Initialize the hashing state.
  36.  *
  37.  * @param wp  A WP_Struct handle, as created by WP_Create()
  38.  * @require   wp != NULL
  39.  */
  40. void       WP_Init(WP_Struct *wp);
  41. /**
  42.  * Delivers input data to the hashing algorithm.
  43.  *
  44.  * @param source      Plaintext data to hash.
  45.  * @param sourceBits  How many bits of plaintext to process.
  46.  * @param wp          A WP_Struct handle, as created by WP_Create()
  47.  * @require source != NULL && wp != NULL
  48.  */
  49. void       WP_Add(const unsigned char * const source,
  50.                   unsigned long sourceBits,
  51.                   WP_Struct * const wp);
  52. /**
  53.  * Get the hash value from the hashing state.
  54.  *
  55.  * @param wp      A WP_Struct handle, as created by WP_Create()
  56.  * @param result  A string to store the hash to.
  57.  * @require
  58.  *     wp != NULL
  59.  *     result != NULL
  60.  *     result must be able to hold at least WP_DIGEST_SIZE bytes.
  61.  */
  62. void       WP_Finalize(WP_Struct * const wp,
  63.                        unsigned char * const result);
  64. /**
  65.  * Free a created WP_Struct handle.
  66.  *
  67.  * @param wp  A WP_Struct handle, as created by WP_Create().
  68.  * @require   wp != NULL
  69.  */
  70. void       WP_Free(WP_Struct *wp);
  71. #ifdef __cplusplus
  72. }
  73. #endif
  74. #endif