Codebase list libcryptx-perl / upstream/0.064+git20190614.1d5ef1b src / ltc / headers / tomcrypt_misc.h
upstream/0.064+git20190614.1d5ef1b

Tree @upstream/0.064+git20190614.1d5ef1b (Download .tar.gz)

tomcrypt_misc.h @upstream/0.064+git20190614.1d5ef1b

d3aea61
 
 
 
 
 
 
 
 
dd9a707
 
448b761
0a8f76d
07b3e29
448b761
0a8f76d
448b761
dd9a707
0a8f76d
9d831fd
5165293
f72040a
5165293
448b761
0a8f76d
07b3e29
0a8f76d
07b3e29
448b761
0a8f76d
448b761
f72040a
0a8f76d
9d831fd
dd9a707
 
2c9995f
 
 
 
 
 
 
 
 
5fd7132
2c9995f
5fd7132
2c9995f
 
 
 
5fd7132
 
 
 
5dbccdc
0a8f76d
5fd7132
 
 
5165293
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dd9a707
6adf73b
448b761
dd9a707
 
 
 
 
 
 
 
 
6adf73b
 
 
 
 
 
 
 
79c1bad
6adf73b
 
79c1bad
6adf73b
 
79c1bad
6adf73b
79c1bad
6adf73b
728a388
 
 
 
 
 
 
 
2a90bfe
728a388
 
 
 
 
 
 
 
 
 
 
2a90bfe
728a388
 
 
5fd7132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2a90bfe
5fd7132
 
82d1e42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d3fa6a4
6adf73b
d3aea61
 
 
/* LibTomCrypt, modular cryptographic library -- Tom St Denis
 *
 * LibTomCrypt is a library that provides various cryptographic
 * algorithms in a highly modular and flexible manner.
 *
 * The library is free for all purposes without any express
 * guarantee it works.
 */

/* ---- LTC_BASE64 Routines ---- */
#ifdef LTC_BASE64
int base64_encode(const unsigned char *in,  unsigned long inlen,
                                 char *out, unsigned long *outlen);

int base64_decode(const char *in,  unsigned long inlen,
                        unsigned char *out, unsigned long *outlen);
int base64_strict_decode(const char *in,  unsigned long inlen,
                        unsigned char *out, unsigned long *outlen);
int base64_sane_decode(const char *in,  unsigned long inlen,
                        unsigned char *out, unsigned long *outlen);
#endif

#ifdef LTC_BASE64_URL
int base64url_encode(const unsigned char *in,  unsigned long inlen,
                                    char *out, unsigned long *outlen);
int base64url_strict_encode(const unsigned char *in,  unsigned long inlen,
                                           char *out, unsigned long *outlen);

int base64url_decode(const char *in,  unsigned long inlen,
                        unsigned char *out, unsigned long *outlen);
int base64url_strict_decode(const char *in,  unsigned long inlen,
                        unsigned char *out, unsigned long *outlen);
int base64url_sane_decode(const char *in,  unsigned long inlen,
                        unsigned char *out, unsigned long *outlen);
#endif

/* ---- BASE32 Routines ---- */
#ifdef LTC_BASE32
typedef enum {
   BASE32_RFC4648   = 0,
   BASE32_BASE32HEX = 1,
   BASE32_ZBASE32   = 2,
   BASE32_CROCKFORD = 3
} base32_alphabet;
int base32_encode(const unsigned char *in,  unsigned long inlen,
                                 char *out, unsigned long *outlen,
                        base32_alphabet id);
int base32_decode(const          char *in,  unsigned long inlen,
                        unsigned char *out, unsigned long *outlen,
                        base32_alphabet id);
#endif

/* ---- BASE16 Routines ---- */
#ifdef LTC_BASE16
int base16_encode(const unsigned char *in,  unsigned long  inlen,
                                 char *out, unsigned long *outlen,
                        unsigned int   options);
int base16_decode(const          char *in,  unsigned long  inlen,
                        unsigned char *out, unsigned long *outlen);
#endif

/* ===> LTC_HKDF -- RFC5869 HMAC-based Key Derivation Function <=== */
#ifdef LTC_HKDF

int hkdf_test(void);

int hkdf_extract(int hash_idx,
                 const unsigned char *salt, unsigned long saltlen,
                 const unsigned char *in,   unsigned long inlen,
                       unsigned char *out,  unsigned long *outlen);

int hkdf_expand(int hash_idx,
                const unsigned char *info, unsigned long infolen,
                const unsigned char *in,   unsigned long inlen,
                      unsigned char *out,  unsigned long outlen);

int hkdf(int hash_idx,
         const unsigned char *salt, unsigned long saltlen,
         const unsigned char *info, unsigned long infolen,
         const unsigned char *in,   unsigned long inlen,
               unsigned char *out,  unsigned long outlen);

#endif  /* LTC_HKDF */

/* ---- MEM routines ---- */
int mem_neq(const void *a, const void *b, size_t len);
void zeromem(volatile void *out, size_t outlen);
void burn_stack(unsigned long len);

const char *error_to_string(int err);

extern const char *crypt_build_settings;

/* ---- HMM ---- */
int crypt_fsa(void *mp, ...);

/* ---- Dynamic language support ---- */
int crypt_get_constant(const char* namein, int *valueout);
int crypt_list_all_constants(char *names_list, unsigned int *names_list_size);

int crypt_get_size(const char* namein, unsigned int *sizeout);
int crypt_list_all_sizes(char *names_list, unsigned int *names_list_size);

#ifdef LTM_DESC
LTC_DEPRECATED void init_LTM(void);
#endif
#ifdef TFM_DESC
LTC_DEPRECATED void init_TFM(void);
#endif
#ifdef GMP_DESC
LTC_DEPRECATED void init_GMP(void);
#endif
int crypt_mp_init(const char* mpi);

#ifdef LTC_ADLER32
typedef struct adler32_state_s
{
   unsigned short s[2];
} adler32_state;

void adler32_init(adler32_state *ctx);
void adler32_update(adler32_state *ctx, const unsigned char *input, unsigned long length);
void adler32_finish(const adler32_state *ctx, void *hash, unsigned long size);
int adler32_test(void);
#endif

#ifdef LTC_CRC32
typedef struct crc32_state_s
{
   ulong32 crc;
} crc32_state;

void crc32_init(crc32_state *ctx);
void crc32_update(crc32_state *ctx, const unsigned char *input, unsigned long length);
void crc32_finish(const crc32_state *ctx, void *hash, unsigned long size);
int crc32_test(void);
#endif


#ifdef LTC_PADDING

enum padding_type {
   LTC_PAD_PKCS7        = 0x0000U,
#ifdef LTC_RNG_GET_BYTES
   LTC_PAD_ISO_10126    = 0x1000U,
#endif
   LTC_PAD_ANSI_X923    = 0x2000U,
   LTC_PAD_ONE_AND_ZERO = 0x8000U,
   LTC_PAD_ZERO         = 0x9000U,
   LTC_PAD_ZERO_ALWAYS  = 0xA000U,
};

int padding_pad(unsigned char *data, unsigned long length, unsigned long* padded_length, unsigned long mode);
int padding_depad(const unsigned char *data, unsigned long *length, unsigned long mode);
#endif  /* LTC_PADDING */

#ifdef LTC_SSH
typedef enum ssh_data_type_ {
   LTC_SSHDATA_BYTE,
   LTC_SSHDATA_BOOLEAN,
   LTC_SSHDATA_UINT32,
   LTC_SSHDATA_UINT64,
   LTC_SSHDATA_STRING,
   LTC_SSHDATA_MPINT,
   LTC_SSHDATA_NAMELIST,
   LTC_SSHDATA_EOL
} ssh_data_type;

/* VA list handy helpers with tuples of <type, data> */
int ssh_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...);
int ssh_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...);
#endif /* LTC_SSH */

int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which);

/* ref:         $Format:%D$ */
/* git commit:  $Format:%H$ */
/* commit time: $Format:%ai$ */