⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tomcrypt_cipher.h

📁 AES加密算法对socket通信过程进行加密传输
💻 H
📖 第 1 页 / 共 3 页
字号:
    /** The scheduled symmetric key */    symmetric_key     key;#ifdef LRW_TABLES    /** The pre-computed multiplication table */    unsigned char     PC[16][256][16];#endif} symmetric_LRW;#endif#ifdef LTC_F8_MODE/** A block cipher F8 structure */typedef struct {   /** The index of the cipher chosen */   int                 cipher,    /** The block size of the given cipher */                                               blocklen,    /** The padding offset */                       padlen;   /** The current IV */   unsigned char       IV[MAXBLOCKSIZE],                       MIV[MAXBLOCKSIZE];   /** Current block count */   ulong32             blockcnt;   /** The scheduled key */   symmetric_key       key;} symmetric_F8;#endif/** cipher descriptor table, last entry has "name == NULL" to mark the end of table */extern struct ltc_cipher_descriptor {   /** name of cipher */   char *name;   /** internal ID */   unsigned char ID;   /** min keysize (octets) */   int  min_key_length,    /** max keysize (octets) */        max_key_length,    /** block size (octets) */        block_length,    /** default number of rounds */        default_rounds;   /** Setup the cipher       @param key         The input symmetric key      @param keylen      The length of the input key (octets)      @param num_rounds  The requested number of rounds (0==default)      @param skey        [out] The destination of the scheduled key      @return CRYPT_OK if successful   */   int  (*setup)(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);   /** Encrypt a block      @param pt      The plaintext      @param ct      [out] The ciphertext      @param skey    The scheduled key      @return CRYPT_OK if successful   */   int (*ecb_encrypt)(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);   /** Decrypt a block      @param ct      The ciphertext      @param pt      [out] The plaintext      @param skey    The scheduled key      @return CRYPT_OK if successful   */   int (*ecb_decrypt)(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);   /** Test the block cipher       @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled   */   int (*test)(void);   /** Terminate the context       @param skey    The scheduled key   */   void (*done)(symmetric_key *skey);         /** Determine a key size       @param keysize    [in/out] The size of the key desired and the suggested size       @return CRYPT_OK if successful   */   int  (*keysize)(int *keysize);/** Accelerators **/   /** Accelerated ECB encryption        @param pt      Plaintext       @param ct      Ciphertext       @param blocks  The number of complete blocks to process       @param skey    The scheduled key context       @return CRYPT_OK if successful   */   int (*accel_ecb_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, symmetric_key *skey);   /** Accelerated ECB decryption        @param pt      Plaintext       @param ct      Ciphertext       @param blocks  The number of complete blocks to process       @param skey    The scheduled key context       @return CRYPT_OK if successful   */   int (*accel_ecb_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, symmetric_key *skey);   /** Accelerated CBC encryption        @param pt      Plaintext       @param ct      Ciphertext       @param blocks  The number of complete blocks to process       @param IV      The initial value (input/output)       @param skey    The scheduled key context       @return CRYPT_OK if successful   */   int (*accel_cbc_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, symmetric_key *skey);   /** Accelerated CBC decryption        @param pt      Plaintext       @param ct      Ciphertext       @param blocks  The number of complete blocks to process       @param IV      The initial value (input/output)       @param skey    The scheduled key context       @return CRYPT_OK if successful   */   int (*accel_cbc_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, unsigned char *IV, symmetric_key *skey);   /** Accelerated CTR encryption        @param pt      Plaintext       @param ct      Ciphertext       @param blocks  The number of complete blocks to process       @param IV      The initial value (input/output)       @param mode    little or big endian counter (mode=0 or mode=1)       @param skey    The scheduled key context       @return CRYPT_OK if successful   */   int (*accel_ctr_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, int mode, symmetric_key *skey);   /** Accelerated LRW        @param pt      Plaintext       @param ct      Ciphertext       @param blocks  The number of complete blocks to process       @param IV      The initial value (input/output)       @param tweak   The LRW tweak       @param skey    The scheduled key context       @return CRYPT_OK if successful   */   int (*accel_lrw_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, const unsigned char *tweak, symmetric_key *skey);   /** Accelerated LRW        @param ct      Ciphertext       @param pt      Plaintext       @param blocks  The number of complete blocks to process       @param IV      The initial value (input/output)       @param tweak   The LRW tweak       @param skey    The scheduled key context       @return CRYPT_OK if successful   */   int (*accel_lrw_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, unsigned char *IV, const unsigned char *tweak, symmetric_key *skey);   /** Accelerated CCM packet (one-shot)       @param key        The secret key to use       @param keylen     The length of the secret key (octets)       @param uskey      A previously scheduled key [optional can be NULL]       @param nonce      The session nonce [use once]       @param noncelen   The length of the nonce       @param header     The header for the session       @param headerlen  The length of the header (octets)       @param pt         [out] The plaintext       @param ptlen      The length of the plaintext (octets)       @param ct         [out] The ciphertext       @param tag        [out] The destination tag       @param taglen     [in/out] The max size and resulting size of the authentication tag       @param direction  Encrypt or Decrypt direction (0 or 1)       @return CRYPT_OK if successful   */   int (*accel_ccm_memory)(       const unsigned char *key,    unsigned long keylen,       symmetric_key       *uskey,       const unsigned char *nonce,  unsigned long noncelen,       const unsigned char *header, unsigned long headerlen,             unsigned char *pt,     unsigned long ptlen,             unsigned char *ct,             unsigned char *tag,    unsigned long *taglen,                       int  direction);   /** Accelerated GCM packet (one shot)       @param key        The secret key       @param keylen     The length of the secret key       @param IV         The initial vector        @param IVlen      The length of the initial vector       @param adata      The additional authentication data (header)       @param adatalen   The length of the adata       @param pt         The plaintext       @param ptlen      The length of the plaintext (ciphertext length is the same)       @param ct         The ciphertext       @param tag        [out] The MAC tag       @param taglen     [in/out] The MAC tag length       @param direction  Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT)       @return CRYPT_OK on success   */   int (*accel_gcm_memory)(       const unsigned char *key,    unsigned long keylen,       const unsigned char *IV,     unsigned long IVlen,       const unsigned char *adata,  unsigned long adatalen,             unsigned char *pt,     unsigned long ptlen,             unsigned char *ct,              unsigned char *tag,    unsigned long *taglen,                       int direction);   /** Accelerated one shot LTC_OMAC        @param key            The secret key       @param keylen         The key length (octets)        @param in             The message        @param inlen          Length of message (octets)       @param out            [out] Destination for tag       @param outlen         [in/out] Initial and final size of out       @return CRYPT_OK on success   */   int (*omac_memory)(       const unsigned char *key, unsigned long keylen,       const unsigned char *in,  unsigned long inlen,             unsigned char *out, unsigned long *outlen);   /** Accelerated one shot XCBC        @param key            The secret key       @param keylen         The key length (octets)        @param in             The message        @param inlen          Length of message (octets)       @param out            [out] Destination for tag       @param outlen         [in/out] Initial and final size of out       @return CRYPT_OK on success   */   int (*xcbc_memory)(       const unsigned char *key, unsigned long keylen,       const unsigned char *in,  unsigned long inlen,             unsigned char *out, unsigned long *outlen);   /** Accelerated one shot F9        @param key            The secret key       @param keylen         The key length (octets)        @param in             The message        @param inlen          Length of message (octets)       @param out            [out] Destination for tag       @param outlen         [in/out] Initial and final size of out       @return CRYPT_OK on success       @remark Requires manual padding   */   int (*f9_memory)(       const unsigned char *key, unsigned long keylen,       const unsigned char *in,  unsigned long inlen,             unsigned char *out, unsigned long *outlen);} cipher_descriptor[];#ifdef LTC_BLOWFISHint blowfish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);int blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);int blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);int blowfish_test(void);void blowfish_done(symmetric_key *skey);int blowfish_keysize(int *keysize);extern const struct ltc_cipher_descriptor blowfish_desc;#endif#ifdef LTC_RC5int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);int rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);int rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);int rc5_test(void);void rc5_done(symmetric_key *skey);int rc5_keysize(int *keysize);extern const struct ltc_cipher_descriptor rc5_desc;#endif#ifdef LTC_RC6int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);int rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);int rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);int rc6_test(void);void rc6_done(symmetric_key *skey);int rc6_keysize(int *keysize);extern const struct ltc_cipher_descriptor rc6_desc;#endif#ifdef LTC_RC2int rc2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);int rc2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);int rc2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);int rc2_test(void);void rc2_done(symmetric_key *skey);int rc2_keysize(int *keysize);extern const struct ltc_cipher_descriptor rc2_desc;#endif#ifdef LTC_SAFERPint saferp_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey);int saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey);int saferp_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey);int saferp_test(void);void saferp_done(symmetric_key *skey);int saferp_keysize(int *keysize);extern const struct ltc_cipher_descriptor saferp_desc;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -