]>
Dogcows Code - chaz/p5-File-KDBX-XS/blob - tomcrypt_misc.h
ae861fe385b8e53e857550bb78eda2e1a1b2ae76
1 /* LibTomCrypt, modular cryptographic library -- Tom St Denis */
2 /* SPDX-License-Identifier: Unlicense */
4 /* ---- LTC_BASE64 Routines ---- */
6 int base64_encode(const unsigned char *in
, unsigned long inlen
,
7 char *out
, unsigned long *outlen
);
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
);
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
);
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
);
31 /* ---- BASE32 Routines ---- */
39 int base32_encode(const unsigned char *in
, unsigned long inlen
,
40 char *out
, unsigned long *outlen
,
42 int base32_decode(const char *in
, unsigned long inlen
,
43 unsigned char *out
, unsigned long *outlen
,
47 /* ---- BASE16 Routines ---- */
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
);
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
);
63 /* ===> LTC_HKDF -- RFC5869 HMAC-based Key Derivation Function <=== */
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
);
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
);
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
);
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
);
91 const char *error_to_string(int err
);
93 extern const char *crypt_build_settings
;
96 int crypt_fsa(void *mp
, ...);
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
);
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
);
106 LTC_DEPRECATED(crypt_mp_init
) void init_LTM(void);
109 LTC_DEPRECATED(crypt_mp_init
) void init_TFM(void);
112 LTC_DEPRECATED(crypt_mp_init
) void init_GMP(void);
114 int crypt_mp_init(const char* mpi
);
117 typedef struct adler32_state_s
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);
129 typedef struct crc32_state_s
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);
144 LTC_PAD_PKCS7
= 0x0000U
,
145 #ifdef LTC_RNG_GET_BYTES
146 LTC_PAD_ISO_10126
= 0x1000U
,
148 LTC_PAD_ANSI_X923
= 0x2000U
,
149 /* The following padding modes don't contain the padding
150 * length as last byte of the padding.
152 LTC_PAD_ONE_AND_ZERO
= 0x8000U
,
153 LTC_PAD_ZERO
= 0x9000U
,
154 LTC_PAD_ZERO_ALWAYS
= 0xA000U
,
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 */
162 typedef enum ssh_data_type_
{
170 LTC_SSHDATA_NAMELIST
,
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
, ...);
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.04626 seconds and 3 git commands to generate.