qfDES.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*****************************************************************************
  2. Saleem N. Bhatti
  3. February 1993
  4. *****************************************************************************/
  5. #if !defined(_qfDES_h_)
  6. #define      _qfDES_h_
  7. #if defined(__cplusplus)
  8. extern "C" {
  9. #endif
  10. /* what */
  11. typedef enum {qfDES_encrypt, qfDES_decrypt} QFDES_what;
  12. /* mode */
  13. typedef enum {qfDES_ecb, qfDES_cbc, qfDES_cfb, qfDES_ofb} QFDES_mode;
  14. /* parity */
  15. typedef enum {qfDES_even, qfDES_odd} QFDES_parity;
  16. /* key/IV generation */
  17. typedef enum {qfDES_key, qfDES_iv} QFDES_generate;
  18. /* This does it all */
  19. int qfDES (unsigned char *key, unsigned char *data, unsigned int size, const QFDES_what what, const QFDES_mode mode, unsigned char *initVec);
  20. /* Handy macros */
  21. #define qfDES_ECB_e(_key, _data, _size) qfDES(_key, _data, _size, qfDES_encrypt, qfDES_ecb, (unsigned char *) 0)
  22. #define qfDES_ECB_d(_key, _data, _size) qfDES(_key, _data, _size, qfDES_decrypt, qfDES_ecb, (unsigned char *) 0)
  23. #define qfDES_CBC_e(_key, _data, _size, _initVec) qfDES(_key, _data, _size, qfDES_encrypt, qfDES_cbc, _initVec)
  24. #define qfDES_CBC_d(_key, _data, _size, _initVec) qfDES(_key, _data, _size, qfDES_decrypt, qfDES_cbc, _initVec)
  25. #define qfDES_CFB_e(_key, _data, _size, _initVec) qfDES(_key, _data, _size, qfDES_encrypt, qfDES_cfb, _initVec)
  26. #define qfDES_CFB_d(_key, _data, _size, _initVec) qfDES(_key, _data, _size, qfDES_decrypt, qfDES_cfb, _initVec)
  27. #define qfDES_OFB_e(_key, _data, _size, _initVec) qfDES(_key, _data, _size, qfDES_encrypt, qfDES_ofb, _initVec)
  28. #define qfDES_OFB_d(_key, _data, _size, _initVec) qfDES(_key, _data, _size, qfDES_decrypt, qfDES_ofb, _initVec)
  29. /* Padded [m|re]alloc() */
  30. unsigned char    qfDES_setPad (unsigned char pad);
  31. #define qfDES_padSpace() qfDES_setPad((unsigned char) ' ')
  32. #define qfDES_padZero() qfDES_setPad((unsigned char) '')
  33. /* The size of text in a qfDES_malloc()ed block */
  34. #define qfDES_plainTextSize(_ptr, _size) (unsigned int) ((_size) - (unsigned int) (_ptr)[(_size) - 1])
  35. /* Keys */
  36. void qfDES_setParity (unsigned char *ptr, unsigned int size, const QFDES_parity parity);
  37. unsigned int qfDES_checkParity (unsigned char *ptr, unsigned int size, const QFDES_parity parity);
  38. unsigned char *qfDES_generate (const QFDES_generate what); /* returns a pointer to static memory */
  39. #define qfDES_generateKey() qfDES_generate(qfDES_key)
  40. #define qfDES_generateIV() qfDES_generate(qfDES_iv)
  41. int qfDES_checkWeakKeys (unsigned char *key);
  42. #if defined(__cplusplus)
  43. }
  44. #endif
  45. #endif /* !_qfDES_h_ */