]> Dogcows Code - chaz/p5-File-KDBX-XS/blob - libtomcrypt/src/headers/tomcrypt_misc.h
initial commit
[chaz/p5-File-KDBX-XS] / libtomcrypt / src / headers / tomcrypt_misc.h
1 /* LibTomCrypt, modular cryptographic library -- Tom St Denis */
2 /* SPDX-License-Identifier: Unlicense */
3
4 /* ---- LTC_BASE64 Routines ---- */
5 #ifdef LTC_BASE64
6 int base64_encode(const unsigned char *in, unsigned long inlen,
7 char *out, unsigned long *outlen);
8
9 int base64_decode(const char *in, unsigned long inlen,
10 unsigned char *out, unsigned long *outlen);
11 int base64_strict_decode(const char *in, unsigned long inlen,
12 unsigned char *out, unsigned long *outlen);
13 int base64_sane_decode(const char *in, unsigned long inlen,
14 unsigned char *out, unsigned long *outlen);
15 #endif
16
17 #ifdef LTC_BASE64_URL
18 int base64url_encode(const unsigned char *in, unsigned long inlen,
19 char *out, unsigned long *outlen);
20 int base64url_strict_encode(const unsigned char *in, unsigned long inlen,
21 char *out, unsigned long *outlen);
22
23 int base64url_decode(const char *in, unsigned long inlen,
24 unsigned char *out, unsigned long *outlen);
25 int base64url_strict_decode(const char *in, unsigned long inlen,
26 unsigned char *out, unsigned long *outlen);
27 int base64url_sane_decode(const char *in, unsigned long inlen,
28 unsigned char *out, unsigned long *outlen);
29 #endif
30
31 /* ---- BASE32 Routines ---- */
32 #ifdef LTC_BASE32
33 typedef enum {
34 BASE32_RFC4648 = 0,
35 BASE32_BASE32HEX = 1,
36 BASE32_ZBASE32 = 2,
37 BASE32_CROCKFORD = 3
38 } base32_alphabet;
39 int base32_encode(const unsigned char *in, unsigned long inlen,
40 char *out, unsigned long *outlen,
41 base32_alphabet id);
42 int base32_decode(const char *in, unsigned long inlen,
43 unsigned char *out, unsigned long *outlen,
44 base32_alphabet id);
45 #endif
46
47 /* ---- BASE16 Routines ---- */
48 #ifdef LTC_BASE16
49 int base16_encode(const unsigned char *in, unsigned long inlen,
50 char *out, unsigned long *outlen,
51 unsigned int options);
52 int base16_decode(const char *in, unsigned long inlen,
53 unsigned char *out, unsigned long *outlen);
54 #endif
55
56 #ifdef LTC_BCRYPT
57 int bcrypt_pbkdf_openbsd(const void *secret, unsigned long secret_len,
58 const unsigned char *salt, unsigned long salt_len,
59 unsigned int rounds, int hash_idx,
60 unsigned char *out, unsigned long *outlen);
61 #endif
62
63 /* ===> LTC_HKDF -- RFC5869 HMAC-based Key Derivation Function <=== */
64 #ifdef LTC_HKDF
65
66 int hkdf_test(void);
67
68 int hkdf_extract(int hash_idx,
69 const unsigned char *salt, unsigned long saltlen,
70 const unsigned char *in, unsigned long inlen,
71 unsigned char *out, unsigned long *outlen);
72
73 int hkdf_expand(int hash_idx,
74 const unsigned char *info, unsigned long infolen,
75 const unsigned char *in, unsigned long inlen,
76 unsigned char *out, unsigned long outlen);
77
78 int hkdf(int hash_idx,
79 const unsigned char *salt, unsigned long saltlen,
80 const unsigned char *info, unsigned long infolen,
81 const unsigned char *in, unsigned long inlen,
82 unsigned char *out, unsigned long outlen);
83
84 #endif /* LTC_HKDF */
85
86 /* ---- MEM routines ---- */
87 int mem_neq(const void *a, const void *b, size_t len);
88 void zeromem(volatile void *out, size_t outlen);
89 void burn_stack(unsigned long len);
90
91 const char *error_to_string(int err);
92
93 extern const char *crypt_build_settings;
94
95 /* ---- HMM ---- */
96 int crypt_fsa(void *mp, ...);
97
98 /* ---- Dynamic language support ---- */
99 int crypt_get_constant(const char* namein, int *valueout);
100 int crypt_list_all_constants(char *names_list, unsigned int *names_list_size);
101
102 int crypt_get_size(const char* namein, unsigned int *sizeout);
103 int crypt_list_all_sizes(char *names_list, unsigned int *names_list_size);
104
105 #ifdef LTM_DESC
106 LTC_DEPRECATED(crypt_mp_init) void init_LTM(void);
107 #endif
108 #ifdef TFM_DESC
109 LTC_DEPRECATED(crypt_mp_init) void init_TFM(void);
110 #endif
111 #ifdef GMP_DESC
112 LTC_DEPRECATED(crypt_mp_init) void init_GMP(void);
113 #endif
114 int crypt_mp_init(const char* mpi);
115
116 #ifdef LTC_ADLER32
117 typedef struct adler32_state_s
118 {
119 unsigned short s[2];
120 } adler32_state;
121
122 void adler32_init(adler32_state *ctx);
123 void adler32_update(adler32_state *ctx, const unsigned char *input, unsigned long length);
124 void adler32_finish(const adler32_state *ctx, void *hash, unsigned long size);
125 int adler32_test(void);
126 #endif
127
128 #ifdef LTC_CRC32
129 typedef struct crc32_state_s
130 {
131 ulong32 crc;
132 } crc32_state;
133
134 void crc32_init(crc32_state *ctx);
135 void crc32_update(crc32_state *ctx, const unsigned char *input, unsigned long length);
136 void crc32_finish(const crc32_state *ctx, void *hash, unsigned long size);
137 int crc32_test(void);
138 #endif
139
140
141 #ifdef LTC_PADDING
142
143 enum padding_type {
144 LTC_PAD_PKCS7 = 0x0000U,
145 #ifdef LTC_RNG_GET_BYTES
146 LTC_PAD_ISO_10126 = 0x1000U,
147 #endif
148 LTC_PAD_ANSI_X923 = 0x2000U,
149 /* The following padding modes don't contain the padding
150 * length as last byte of the padding.
151 */
152 LTC_PAD_ONE_AND_ZERO = 0x8000U,
153 LTC_PAD_ZERO = 0x9000U,
154 LTC_PAD_ZERO_ALWAYS = 0xA000U,
155 };
156
157 int padding_pad(unsigned char *data, unsigned long length, unsigned long* padded_length, unsigned long mode);
158 int padding_depad(const unsigned char *data, unsigned long *length, unsigned long mode);
159 #endif /* LTC_PADDING */
160
161 #ifdef LTC_SSH
162 typedef enum ssh_data_type_ {
163 LTC_SSHDATA_EOL,
164 LTC_SSHDATA_BYTE,
165 LTC_SSHDATA_BOOLEAN,
166 LTC_SSHDATA_UINT32,
167 LTC_SSHDATA_UINT64,
168 LTC_SSHDATA_STRING,
169 LTC_SSHDATA_MPINT,
170 LTC_SSHDATA_NAMELIST,
171 } ssh_data_type;
172
173 /* VA list handy helpers with tuples of <type, data> */
174 int ssh_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...);
175 int ssh_decode_sequence_multi(const unsigned char *in, unsigned long *inlen, ...);
176 #endif /* LTC_SSH */
177
178 int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which);
This page took 0.043579 seconds and 4 git commands to generate.