1 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
3 * LibTomCrypt is a library that provides various cryptographic
4 * algorithms in a highly modular and flexible manner.
6 * The library is free for all purposes without any express
10 /* ---- LTC_BASE64 Routines ---- */
12 int base64_encode(const unsigned char *in, unsigned long len,
13 unsigned char *out, unsigned long *outlen);
15 int base64_decode(const unsigned char *in, unsigned long len,
16 unsigned char *out, unsigned long *outlen);
17 int base64_strict_decode(const unsigned char *in, unsigned long len,
18 unsigned char *out, unsigned long *outlen);
22 int base64url_encode(const unsigned char *in, unsigned long len,
23 unsigned char *out, unsigned long *outlen);
24 int base64url_strict_encode(const unsigned char *in, unsigned long inlen,
25 unsigned char *out, unsigned long *outlen);
27 int base64url_decode(const unsigned char *in, unsigned long len,
28 unsigned char *out, unsigned long *outlen);
29 int base64url_strict_decode(const unsigned char *in, unsigned long len,
30 unsigned char *out, unsigned long *outlen);
33 /* ===> LTC_HKDF -- RFC5869 HMAC-based Key Derivation Function <=== */
38 int hkdf_extract(int hash_idx,
39 const unsigned char *salt, unsigned long saltlen,
40 const unsigned char *in, unsigned long inlen,
41 unsigned char *out, unsigned long *outlen);
43 int hkdf_expand(int hash_idx,
44 const unsigned char *info, unsigned long infolen,
45 const unsigned char *in, unsigned long inlen,
46 unsigned char *out, unsigned long outlen);
48 int hkdf(int hash_idx,
49 const unsigned char *salt, unsigned long saltlen,
50 const unsigned char *info, unsigned long infolen,
51 const unsigned char *in, unsigned long inlen,
52 unsigned char *out, unsigned long outlen);
56 /* ---- MEM routines ---- */
57 int mem_neq(const void *a, const void *b, size_t len);
58 void zeromem(volatile void *dst, size_t len);
59 void burn_stack(unsigned long len);
61 const char *error_to_string(int err);
63 extern const char *crypt_build_settings;
66 int crypt_fsa(void *mp, ...);
68 /* ---- Dynamic language support ---- */
69 int crypt_get_constant(const char* namein, int *valueout);
70 int crypt_list_all_constants(char *names_list, unsigned int *names_list_size);
72 int crypt_get_size(const char* namein, unsigned int *sizeout);
73 int crypt_list_all_sizes(char *names_list, unsigned int *names_list_size);
86 typedef struct adler32_state_s
91 void adler32_init(adler32_state *ctx);
92 void adler32_update(adler32_state *ctx, const unsigned char *input, unsigned long length);
93 void adler32_finish(adler32_state *ctx, void *hash, unsigned long size);
94 int adler32_test(void);
98 typedef struct crc32_state_s
103 void crc32_init(crc32_state *ctx);
104 void crc32_update(crc32_state *ctx, const unsigned char *input, unsigned long length);
105 void crc32_finish(crc32_state *ctx, void *hash, unsigned long size);
106 int crc32_test(void);
109 int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which);
111 /* ref: $Format:%D$ */
112 /* git commit: $Format:%H$ */
113 /* commit time: $Format:%ai$ */