crypto.h
上传用户:fubang
上传日期:2009-06-18
资源大小:2071k
文件大小:1k
源码类别:

其他

开发平台:

Unix_Linux

  1. #ifndef _CRYPTO_H
  2. #define _CRYPTO_H
  3. #ifndef uint8
  4. #define uint8  unsigned char
  5. #endif
  6. #ifndef uint32
  7. #define uint32 unsigned long int
  8. #endif
  9. typedef struct
  10. {
  11.     uint32 total[2];
  12.     uint32 state[4];
  13.     uint8 buffer[64];
  14. }
  15. md5_context;
  16. void md5_starts( md5_context *ctx );
  17. void md5_update( md5_context *ctx, uint8 *input, uint32 length );
  18. void md5_finish( md5_context *ctx, uint8 digest[16] );
  19. void hmac_md5( uint8 *key, int keylen, uint8 *buffer, int length,
  20.                uint8 digest[16] );
  21. typedef struct
  22. {
  23.     uint32 total[2];
  24.     uint32 state[5];
  25.     uint8 buffer[64];
  26. }
  27. sha1_context;
  28. void sha1_starts( sha1_context *ctx );
  29. void sha1_update( sha1_context *ctx, uint8 *input, uint32 length );
  30. void sha1_finish( sha1_context *ctx, uint8 digest[20] );
  31. void hmac_sha1( uint8 *key, int keylen, uint8 *buffer, int length,
  32.                 uint8 digest[20] );
  33. struct rc4_state
  34. {
  35.     int x, y, m[256];
  36. };
  37. void rc4_setup( struct rc4_state *s, unsigned char *key,  int length );
  38. void rc4_crypt( struct rc4_state *s, unsigned char *data, int length );
  39. typedef struct
  40. {
  41.     uint32 erk[64];     /* encryption round keys */
  42.     uint32 drk[64];     /* decryption round keys */
  43.     int nr;             /* number of rounds */
  44. }
  45. aes_context;
  46. int  aes_set_key( aes_context *ctx, uint8 *key, int nbits );
  47. void aes_encrypt( aes_context *ctx, uint8 input[16], uint8 output[16] );
  48. void aes_decrypt( aes_context *ctx, uint8 input[16], uint8 output[16] );
  49. #endif /* crypto.h */