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

📄 tomcrypt_hash.h

📁 这是一个用来加解密的算法库
💻 H
📖 第 1 页 / 共 2 页
字号:
int rmd128_test(void);extern const struct ltc_hash_descriptor rmd128_desc;#endif#ifdef RIPEMD160int rmd160_init(hash_state * md);int rmd160_process(hash_state * md, const unsigned char *in, unsigned long inlen);int rmd160_done(hash_state * md, unsigned char *hash);int rmd160_test(void);extern const struct ltc_hash_descriptor rmd160_desc;#endifint find_hash(const char *name);int find_hash_id(unsigned char ID);int find_hash_any(const char *name, int digestlen);int register_hash(const struct ltc_hash_descriptor *hash);int unregister_hash(const struct ltc_hash_descriptor *hash);int hash_is_valid(int idx);int hash_memory(int hash,                 const unsigned char *in,  unsigned long inlen,                       unsigned char *out, unsigned long *outlen);int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen,                      const unsigned char *in, unsigned long inlen, ...);int hash_filehandle(int hash, FILE *in, unsigned char *out, unsigned long *outlen);int hash_file(int hash, const char *fname, unsigned char *out, unsigned long *outlen);/* a simple macro for making hash "process" functions */#define HASH_PROCESS(func_name, compress_name, state_var, block_size)                       \int func_name (hash_state * md, const unsigned char *in, unsigned long inlen)               \{                                                                                           \    unsigned long n;                                                                        \    int           err;                                                                      \    LTC_ARGCHK(md != NULL);                                                                    \    LTC_ARGCHK(in != NULL);                                                                   \    if (md-> state_var .curlen > sizeof(md-> state_var .buf)) {                             \       return CRYPT_INVALID_ARG;                                                            \    }                                                                                       \    while (inlen > 0) {                                                                       \        if (md-> state_var .curlen == 0 && inlen >= block_size) {                             \           if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \              return err;         \           }                                        \           md-> state_var .length += block_size * 8;                                        \           in             += block_size;                                                   \           inlen          -= block_size;                                                   \        } else {                                                                            \           n = MIN(inlen, (block_size - md-> state_var .curlen));                             \           memcpy(md-> state_var .buf + md-> state_var.curlen, in, (size_t)n);             \           md-> state_var .curlen += n;                                                     \           in             += n;                                                            \           inlen          -= n;                                                            \           if (md-> state_var .curlen == block_size) {                                      \              if ((err = compress_name (md, md-> state_var .buf)) != CRYPT_OK) {\                 return err;                                      \              } \              md-> state_var .length += 8*block_size;                                       \              md-> state_var .curlen = 0;                                                   \           }                                                                                \       }                                                                                    \    }                                                                                       \    return CRYPT_OK;                                                                        \}#ifdef HMACtypedef struct Hmac_state {     hash_state     md;     int            hash;     hash_state     hashstate;     unsigned char  *key;} hmac_state;int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen);int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen);int hmac_done(hmac_state *hmac, unsigned char *out, unsigned long *outlen);int hmac_test(void);int hmac_memory(int hash,                 const unsigned char *key, unsigned long keylen,                const unsigned char *in,  unsigned long inlen,                       unsigned char *out, unsigned long *outlen);int hmac_memory_multi(int hash,                 const unsigned char *key,  unsigned long keylen,                      unsigned char *out,  unsigned long *outlen,                const unsigned char *in,   unsigned long inlen, ...);int hmac_file(int hash, const char *fname, const unsigned char *key,              unsigned long keylen,               unsigned char *dst, unsigned long *dstlen);#endif#ifdef OMACtypedef struct {   int             cipher_idx,                    buflen,                   blklen;   unsigned char   block[MAXBLOCKSIZE],                   prev[MAXBLOCKSIZE],                   Lu[2][MAXBLOCKSIZE];   symmetric_key   key;} omac_state;int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen);int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen);int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen);int omac_memory(int cipher,                const unsigned char *key, unsigned long keylen,               const unsigned char *in,  unsigned long inlen,                     unsigned char *out, unsigned long *outlen);int omac_memory_multi(int cipher,                 const unsigned char *key, unsigned long keylen,                      unsigned char *out, unsigned long *outlen,                const unsigned char *in,  unsigned long inlen, ...);int omac_file(int cipher,               const unsigned char *key, unsigned long keylen,              const          char *filename,                     unsigned char *out, unsigned long *outlen);int omac_test(void);#endif /* OMAC */#ifdef PMACtypedef struct {   unsigned char     Ls[32][MAXBLOCKSIZE],    /* L shifted by i bits to the left */                     Li[MAXBLOCKSIZE],        /* value of Li [current value, we calc from previous recall] */                     Lr[MAXBLOCKSIZE],        /* L * x^-1 */                     block[MAXBLOCKSIZE],     /* currently accumulated block */                     checksum[MAXBLOCKSIZE];  /* current checksum */   symmetric_key     key;                     /* scheduled key for cipher */   unsigned long     block_index;             /* index # for current block */   int               cipher_idx,              /* cipher idx */                     block_len,               /* length of block */                     buflen;                  /* number of bytes in the buffer */} pmac_state;int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen);int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen);int pmac_done(pmac_state *pmac, unsigned char *out, unsigned long *outlen);int pmac_memory(int cipher,                const unsigned char *key, unsigned long keylen,               const unsigned char *msg, unsigned long msglen,                     unsigned char *out, unsigned long *outlen);int pmac_memory_multi(int cipher,                 const unsigned char *key, unsigned long keylen,                      unsigned char *out, unsigned long *outlen,                const unsigned char *in, unsigned long inlen, ...);int pmac_file(int cipher,              const unsigned char *key, unsigned long keylen,             const          char *filename,                    unsigned char *out, unsigned long *outlen);int pmac_test(void);/* internal functions */int pmac_ntz(unsigned long x);void pmac_shift_xor(pmac_state *pmac);#endif /* PMAC */#ifdef EAX_MODE#if !(defined(OMAC) && defined(CTR))   #error EAX_MODE requires OMAC and CTR#endiftypedef struct {   unsigned char N[MAXBLOCKSIZE];   symmetric_CTR ctr;   omac_state    headeromac, ctomac;} eax_state;int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen,             const unsigned char *nonce, unsigned long noncelen,             const unsigned char *header, unsigned long headerlen);int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length);int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length);int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length);int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen);int eax_encrypt_authenticate_memory(int cipher,    const unsigned char *key,    unsigned long keylen,    const unsigned char *nonce,  unsigned long noncelen,    const unsigned char *header, unsigned long headerlen,    const unsigned char *pt,     unsigned long ptlen,          unsigned char *ct,          unsigned char *tag,    unsigned long *taglen);int eax_decrypt_verify_memory(int cipher,    const unsigned char *key,    unsigned long keylen,    const unsigned char *nonce,  unsigned long noncelen,    const unsigned char *header, unsigned long headerlen,    const unsigned char *ct,     unsigned long ctlen,          unsigned char *pt,          unsigned char *tag,    unsigned long taglen,          int           *stat); int eax_test(void);#endif /* EAX MODE */#ifdef OCB_MODEtypedef struct {   unsigned char     L[MAXBLOCKSIZE],         /* L value */                     Ls[32][MAXBLOCKSIZE],    /* L shifted by i bits to the left */                     Li[MAXBLOCKSIZE],        /* value of Li [current value, we calc from previous recall] */                     Lr[MAXBLOCKSIZE],        /* L * x^-1 */                     R[MAXBLOCKSIZE],         /* R value */                     checksum[MAXBLOCKSIZE];  /* current checksum */   symmetric_key     key;                     /* scheduled key for cipher */   unsigned long     block_index;             /* index # for current block */   int               cipher,                  /* cipher idx */                     block_len;               /* length of block */} ocb_state;int ocb_init(ocb_state *ocb, int cipher,              const unsigned char *key, unsigned long keylen, const unsigned char *nonce);int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct);int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt);int ocb_done_encrypt(ocb_state *ocb,                      const unsigned char *pt,  unsigned long ptlen,                           unsigned char *ct,                            unsigned char *tag, unsigned long *taglen);int ocb_done_decrypt(ocb_state *ocb,                      const unsigned char *ct,  unsigned long ctlen,                           unsigned char *pt,                      const unsigned char *tag, unsigned long taglen, int *stat);int ocb_encrypt_authenticate_memory(int cipher,    const unsigned char *key,    unsigned long keylen,    const unsigned char *nonce,      const unsigned char *pt,     unsigned long ptlen,          unsigned char *ct,          unsigned char *tag,    unsigned long *taglen);int ocb_decrypt_verify_memory(int cipher,    const unsigned char *key,    unsigned long keylen,    const unsigned char *nonce,      const unsigned char *ct,     unsigned long ctlen,          unsigned char *pt,    const unsigned char *tag,    unsigned long taglen,          int           *stat);int ocb_test(void);/* internal functions */void ocb_shift_xor(ocb_state *ocb, unsigned char *Z);int ocb_ntz(unsigned long x);int s_ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen,               unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode);#endif /* OCB_MODE */

⌨️ 快捷键说明

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