Path: blob/master/libs/tomcrypt/src/headers/tomcrypt_misc.h
5971 views
/* LibTomCrypt, modular cryptographic library -- Tom St Denis1*2* LibTomCrypt is a library that provides various cryptographic3* algorithms in a highly modular and flexible manner.4*5* The library is free for all purposes without any express6* guarantee it works.7*/89/* ---- LTC_BASE64 Routines ---- */10#ifdef LTC_BASE6411int base64_encode(const unsigned char *in, unsigned long len,12unsigned char *out, unsigned long *outlen);1314int base64_decode(const unsigned char *in, unsigned long len,15unsigned char *out, unsigned long *outlen);16int base64_strict_decode(const unsigned char *in, unsigned long len,17unsigned char *out, unsigned long *outlen);18#endif1920#ifdef LTC_BASE64_URL21int base64url_encode(const unsigned char *in, unsigned long len,22unsigned char *out, unsigned long *outlen);23int base64url_strict_encode(const unsigned char *in, unsigned long inlen,24unsigned char *out, unsigned long *outlen);2526int base64url_decode(const unsigned char *in, unsigned long len,27unsigned char *out, unsigned long *outlen);28int base64url_strict_decode(const unsigned char *in, unsigned long len,29unsigned char *out, unsigned long *outlen);30#endif3132/* ===> LTC_HKDF -- RFC5869 HMAC-based Key Derivation Function <=== */33#ifdef LTC_HKDF3435int hkdf_test(void);3637int hkdf_extract(int hash_idx,38const unsigned char *salt, unsigned long saltlen,39const unsigned char *in, unsigned long inlen,40unsigned char *out, unsigned long *outlen);4142int hkdf_expand(int hash_idx,43const unsigned char *info, unsigned long infolen,44const unsigned char *in, unsigned long inlen,45unsigned char *out, unsigned long outlen);4647int hkdf(int hash_idx,48const unsigned char *salt, unsigned long saltlen,49const unsigned char *info, unsigned long infolen,50const unsigned char *in, unsigned long inlen,51unsigned char *out, unsigned long outlen);5253#endif /* LTC_HKDF */5455/* ---- MEM routines ---- */56int mem_neq(const void *a, const void *b, size_t len);57void zeromem(volatile void *dst, size_t len);58void burn_stack(unsigned long len);5960const char *error_to_string(int err);6162extern const char *crypt_build_settings;6364/* ---- HMM ---- */65int crypt_fsa(void *mp, ...);6667/* ---- Dynamic language support ---- */68int crypt_get_constant(const char* namein, int *valueout);69int crypt_list_all_constants(char *names_list, unsigned int *names_list_size);7071int crypt_get_size(const char* namein, unsigned int *sizeout);72int crypt_list_all_sizes(char *names_list, unsigned int *names_list_size);7374#ifdef LTM_DESC75void init_LTM(void);76#endif77#ifdef TFM_DESC78void init_TFM(void);79#endif80#ifdef GMP_DESC81void init_GMP(void);82#endif8384#ifdef LTC_ADLER3285typedef struct adler32_state_s86{87unsigned short s[2];88} adler32_state;8990void adler32_init(adler32_state *ctx);91void adler32_update(adler32_state *ctx, const unsigned char *input, unsigned long length);92void adler32_finish(adler32_state *ctx, void *hash, unsigned long size);93int adler32_test(void);94#endif9596#ifdef LTC_CRC3297typedef struct crc32_state_s98{99ulong32 crc;100} crc32_state;101102void crc32_init(crc32_state *ctx);103void crc32_update(crc32_state *ctx, const unsigned char *input, unsigned long length);104void crc32_finish(crc32_state *ctx, void *hash, unsigned long size);105int crc32_test(void);106#endif107108int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which);109110111