?? mycrypt_hash.h
字號:
extern int rmd160_test(void);extern const struct _hash_descriptor rmd160_desc;#endifextern int find_hash(const char *name);extern int find_hash_id(unsigned char ID);extern int find_hash_any(const char *name, int digestlen);extern int register_hash(const struct _hash_descriptor *hash);extern int unregister_hash(const struct _hash_descriptor *hash);extern int hash_is_valid(int idx);extern int hash_memory(int hash, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *outlen);extern int hash_filehandle(int hash, FILE *in, unsigned char *dst, unsigned long *outlen);extern int hash_file(int hash, const char *fname, unsigned char *dst, 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 *buf, unsigned long len) \{ \ unsigned long n; \ _ARGCHK(md != NULL); \ _ARGCHK(buf != NULL); \ if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \ return CRYPT_INVALID_ARG; \ } \ while (len > 0) { \ if (md-> state_var .curlen == 0 && len >= block_size) { \ compress_name (md, (unsigned char *)buf); \ md-> state_var .length += block_size * 8; \ buf += block_size; \ len -= block_size; \ } else { \ n = MIN(len, (block_size - md-> state_var .curlen)); \ memcpy(md-> state_var .buf + md-> state_var.curlen, buf, (size_t)n); \ md-> state_var .curlen += n; \ buf += n; \ len -= n; \ if (md-> state_var .curlen == block_size) { \ compress_name (md, md-> state_var .buf); \ 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[MAXBLOCKSIZE];} hmac_state;extern int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen);extern int hmac_process(hmac_state *hmac, const unsigned char *buf, unsigned long len);extern int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen);extern int hmac_test(void);extern int hmac_memory(int hash, const unsigned char *key, unsigned long keylen, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *dstlen);extern 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;extern int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen);extern int omac_process(omac_state *state, const unsigned char *buf, unsigned long len);extern int omac_done(omac_state *state, unsigned char *out, unsigned long *outlen);extern int omac_memory(int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *msg, unsigned long msglen, unsigned char *out, unsigned long *outlen);extern int omac_file(int cipher, const unsigned char *key, unsigned long keylen, const char *filename, unsigned char *out, unsigned long *outlen);extern 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;extern int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen);extern int pmac_process(pmac_state *state, const unsigned char *buf, unsigned long len);extern int pmac_done(pmac_state *state, unsigned char *out, unsigned long *outlen);extern 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);extern int pmac_file(int cipher, const unsigned char *key, unsigned long keylen, const char *filename, unsigned char *out, unsigned long *outlen);extern int pmac_test(void);/* internal functions */extern int pmac_ntz(unsigned long x);extern 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;extern 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);extern int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length);extern int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length);extern int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length);extern int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen);extern 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);extern 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 *res);extern 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;extern int ocb_init(ocb_state *ocb, int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *nonce);extern int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct);extern int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt);extern int ocb_done_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tag, unsigned long *taglen);extern 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 *res);extern 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);extern 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 *res);extern int ocb_test(void);/* internal functions */extern void ocb_shift_xor(ocb_state *ocb, unsigned char *Z);extern int ocb_ntz(unsigned long x);extern int __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 + -