30 #if !defined(POLARSSL_CONFIG_FILE)
33 #include POLARSSL_CONFIG_FILE
36 #if defined(POLARSSL_MD_C)
40 #if defined(POLARSSL_MD2_C)
44 #if defined(POLARSSL_MD4_C)
48 #if defined(POLARSSL_MD5_C)
52 #if defined(POLARSSL_RIPEMD160_C)
56 #if defined(POLARSSL_SHA1_C)
60 #if defined(POLARSSL_SHA256_C)
64 #if defined(POLARSSL_SHA512_C)
68 #if defined(POLARSSL_PLATFORM_C)
71 #define polarssl_malloc malloc
72 #define polarssl_free free
77 #if defined(POLARSSL_MD2_C)
79 static void md2_starts_wrap(
void *ctx )
84 static void md2_update_wrap(
void *ctx,
const unsigned char *input,
90 static void md2_finish_wrap(
void *ctx,
unsigned char *output )
95 static int md2_file_wrap(
const char *path,
unsigned char *output )
97 #if defined(POLARSSL_FS_IO)
106 static void md2_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
112 static void md2_hmac_update_wrap(
void *ctx,
const unsigned char *input,
118 static void md2_hmac_finish_wrap(
void *ctx,
unsigned char *output )
123 static void md2_hmac_reset_wrap(
void *ctx )
128 static void * md2_ctx_alloc(
void )
133 static void md2_ctx_free(
void *ctx )
138 static void md2_process_wrap(
void *ctx,
const unsigned char *data )
154 md2_hmac_starts_wrap,
155 md2_hmac_update_wrap,
156 md2_hmac_finish_wrap,
166 #if defined(POLARSSL_MD4_C)
168 static void md4_starts_wrap(
void *ctx )
173 static void md4_update_wrap(
void *ctx,
const unsigned char *input,
179 static void md4_finish_wrap(
void *ctx,
unsigned char *output )
184 static int md4_file_wrap(
const char *path,
unsigned char *output )
186 #if defined(POLARSSL_FS_IO)
195 static void md4_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
201 static void md4_hmac_update_wrap(
void *ctx,
const unsigned char *input,
207 static void md4_hmac_finish_wrap(
void *ctx,
unsigned char *output )
212 static void md4_hmac_reset_wrap(
void *ctx )
217 static void *md4_ctx_alloc(
void )
222 static void md4_ctx_free(
void *ctx )
227 static void md4_process_wrap(
void *ctx,
const unsigned char *data )
241 md4_hmac_starts_wrap,
242 md4_hmac_update_wrap,
243 md4_hmac_finish_wrap,
253 #if defined(POLARSSL_MD5_C)
255 static void md5_starts_wrap(
void *ctx )
260 static void md5_update_wrap(
void *ctx,
const unsigned char *input,
266 static void md5_finish_wrap(
void *ctx,
unsigned char *output )
271 static int md5_file_wrap(
const char *path,
unsigned char *output )
273 #if defined(POLARSSL_FS_IO)
282 static void md5_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
288 static void md5_hmac_update_wrap(
void *ctx,
const unsigned char *input,
294 static void md5_hmac_finish_wrap(
void *ctx,
unsigned char *output )
299 static void md5_hmac_reset_wrap(
void *ctx )
304 static void * md5_ctx_alloc(
void )
309 static void md5_ctx_free(
void *ctx )
314 static void md5_process_wrap(
void *ctx,
const unsigned char *data )
328 md5_hmac_starts_wrap,
329 md5_hmac_update_wrap,
330 md5_hmac_finish_wrap,
340 #if defined(POLARSSL_RIPEMD160_C)
342 static void ripemd160_starts_wrap(
void *ctx )
347 static void ripemd160_update_wrap(
void *ctx,
const unsigned char *input,
353 static void ripemd160_finish_wrap(
void *ctx,
unsigned char *output )
358 static int ripemd160_file_wrap(
const char *path,
unsigned char *output )
360 #if defined(POLARSSL_FS_IO)
369 static void ripemd160_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
375 static void ripemd160_hmac_update_wrap(
void *ctx,
const unsigned char *input,
381 static void ripemd160_hmac_finish_wrap(
void *ctx,
unsigned char *output )
386 static void ripemd160_hmac_reset_wrap(
void *ctx )
391 static void * ripemd160_ctx_alloc(
void )
396 static void ripemd160_ctx_free(
void *ctx )
401 static void ripemd160_process_wrap(
void *ctx,
const unsigned char *data )
410 ripemd160_starts_wrap,
411 ripemd160_update_wrap,
412 ripemd160_finish_wrap,
415 ripemd160_hmac_starts_wrap,
416 ripemd160_hmac_update_wrap,
417 ripemd160_hmac_finish_wrap,
418 ripemd160_hmac_reset_wrap,
422 ripemd160_process_wrap,
427 #if defined(POLARSSL_SHA1_C)
429 static void sha1_starts_wrap(
void *ctx )
434 static void sha1_update_wrap(
void *ctx,
const unsigned char *input,
440 static void sha1_finish_wrap(
void *ctx,
unsigned char *output )
445 static int sha1_file_wrap(
const char *path,
unsigned char *output )
447 #if defined(POLARSSL_FS_IO)
456 static void sha1_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
462 static void sha1_hmac_update_wrap(
void *ctx,
const unsigned char *input,
468 static void sha1_hmac_finish_wrap(
void *ctx,
unsigned char *output )
473 static void sha1_hmac_reset_wrap(
void *ctx )
478 static void * sha1_ctx_alloc(
void )
483 static void sha1_ctx_free(
void *ctx )
488 static void sha1_process_wrap(
void *ctx,
const unsigned char *data )
502 sha1_hmac_starts_wrap,
503 sha1_hmac_update_wrap,
504 sha1_hmac_finish_wrap,
505 sha1_hmac_reset_wrap,
517 #if defined(POLARSSL_SHA256_C)
519 static void sha224_starts_wrap(
void *ctx )
524 static void sha224_update_wrap(
void *ctx,
const unsigned char *input,
530 static void sha224_finish_wrap(
void *ctx,
unsigned char *output )
535 static void sha224_wrap(
const unsigned char *input,
size_t ilen,
536 unsigned char *output )
538 sha256( input, ilen, output, 1 );
541 static int sha224_file_wrap(
const char *path,
unsigned char *output )
543 #if defined(POLARSSL_FS_IO)
552 static void sha224_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
558 static void sha224_hmac_update_wrap(
void *ctx,
const unsigned char *input,
564 static void sha224_hmac_finish_wrap(
void *ctx,
unsigned char *output )
569 static void sha224_hmac_reset_wrap(
void *ctx )
574 static void sha224_hmac_wrap(
const unsigned char *key,
size_t keylen,
575 const unsigned char *input,
size_t ilen,
576 unsigned char *output )
578 sha256_hmac( key, keylen, input, ilen, output, 1 );
581 static void * sha224_ctx_alloc(
void )
586 static void sha224_ctx_free(
void *ctx )
591 static void sha224_process_wrap(
void *ctx,
const unsigned char *data )
605 sha224_hmac_starts_wrap,
606 sha224_hmac_update_wrap,
607 sha224_hmac_finish_wrap,
608 sha224_hmac_reset_wrap,
615 static void sha256_starts_wrap(
void *ctx )
620 static void sha256_update_wrap(
void *ctx,
const unsigned char *input,
626 static void sha256_finish_wrap(
void *ctx,
unsigned char *output )
631 static void sha256_wrap(
const unsigned char *input,
size_t ilen,
632 unsigned char *output )
634 sha256( input, ilen, output, 0 );
637 static int sha256_file_wrap(
const char *path,
unsigned char *output )
639 #if defined(POLARSSL_FS_IO)
648 static void sha256_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
654 static void sha256_hmac_update_wrap(
void *ctx,
const unsigned char *input,
660 static void sha256_hmac_finish_wrap(
void *ctx,
unsigned char *output )
665 static void sha256_hmac_reset_wrap(
void *ctx )
670 static void sha256_hmac_wrap(
const unsigned char *key,
size_t keylen,
671 const unsigned char *input,
size_t ilen,
672 unsigned char *output )
674 sha256_hmac( key, keylen, input, ilen, output, 0 );
677 static void * sha256_ctx_alloc(
void )
682 static void sha256_ctx_free(
void *ctx )
687 static void sha256_process_wrap(
void *ctx,
const unsigned char *data )
701 sha256_hmac_starts_wrap,
702 sha256_hmac_update_wrap,
703 sha256_hmac_finish_wrap,
704 sha256_hmac_reset_wrap,
713 #if defined(POLARSSL_SHA512_C)
715 static void sha384_starts_wrap(
void *ctx )
720 static void sha384_update_wrap(
void *ctx,
const unsigned char *input,
726 static void sha384_finish_wrap(
void *ctx,
unsigned char *output )
731 static void sha384_wrap(
const unsigned char *input,
size_t ilen,
732 unsigned char *output )
734 sha512( input, ilen, output, 1 );
737 static int sha384_file_wrap(
const char *path,
unsigned char *output )
739 #if defined(POLARSSL_FS_IO)
748 static void sha384_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
754 static void sha384_hmac_update_wrap(
void *ctx,
const unsigned char *input,
760 static void sha384_hmac_finish_wrap(
void *ctx,
unsigned char *output )
765 static void sha384_hmac_reset_wrap(
void *ctx )
770 static void sha384_hmac_wrap(
const unsigned char *key,
size_t keylen,
771 const unsigned char *input,
size_t ilen,
772 unsigned char *output )
774 sha512_hmac( key, keylen, input, ilen, output, 1 );
777 static void * sha384_ctx_alloc(
void )
782 static void sha384_ctx_free(
void *ctx )
787 static void sha384_process_wrap(
void *ctx,
const unsigned char *data )
801 sha384_hmac_starts_wrap,
802 sha384_hmac_update_wrap,
803 sha384_hmac_finish_wrap,
804 sha384_hmac_reset_wrap,
811 static void sha512_starts_wrap(
void *ctx )
816 static void sha512_update_wrap(
void *ctx,
const unsigned char *input,
822 static void sha512_finish_wrap(
void *ctx,
unsigned char *output )
827 static void sha512_wrap(
const unsigned char *input,
size_t ilen,
828 unsigned char *output )
830 sha512( input, ilen, output, 0 );
833 static int sha512_file_wrap(
const char *path,
unsigned char *output )
835 #if defined(POLARSSL_FS_IO)
844 static void sha512_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
850 static void sha512_hmac_update_wrap(
void *ctx,
const unsigned char *input,
856 static void sha512_hmac_finish_wrap(
void *ctx,
unsigned char *output )
861 static void sha512_hmac_reset_wrap(
void *ctx )
866 static void sha512_hmac_wrap(
const unsigned char *key,
size_t keylen,
867 const unsigned char *input,
size_t ilen,
868 unsigned char *output )
870 sha512_hmac( key, keylen, input, ilen, output, 0 );
873 static void * sha512_ctx_alloc(
void )
878 static void sha512_ctx_free(
void *ctx )
883 static void sha512_process_wrap(
void *ctx,
const unsigned char *data )
897 sha512_hmac_starts_wrap,
898 sha512_hmac_update_wrap,
899 sha512_hmac_finish_wrap,
900 sha512_hmac_reset_wrap,
void sha256_hmac_update(sha256_context *ctx, const unsigned char *input, size_t ilen)
SHA-256 HMAC process buffer.
void sha512_hmac_update(sha512_context *ctx, const unsigned char *input, size_t ilen)
SHA-512 HMAC process buffer.
void sha1_hmac_finish(sha1_context *ctx, unsigned char output[20])
SHA-1 HMAC final digest.
void md2_update(md2_context *ctx, const unsigned char *input, size_t ilen)
MD2 process buffer.
void ripemd160_hmac_finish(ripemd160_context *ctx, unsigned char output[20])
RIPEMD-160 HMAC final digest.
int sha256_file(const char *path, unsigned char output[32], int is224)
Output = SHA-256( file contents )
void sha256_update(sha256_context *ctx, const unsigned char *input, size_t ilen)
SHA-256 process buffer.
void sha256(const unsigned char *input, size_t ilen, unsigned char output[32], int is224)
Output = SHA-256( input buffer )
void md2_process(md2_context *ctx)
void ripemd160_hmac_starts(ripemd160_context *ctx, const unsigned char *key, size_t keylen)
RIPEMD-160 HMAC context setup.
void md2_hmac_update(md2_context *ctx, const unsigned char *input, size_t ilen)
MD2 HMAC process buffer.
void ripemd160_update(ripemd160_context *ctx, const unsigned char *input, size_t ilen)
RIPEMD-160 process buffer.
void sha1(const unsigned char *input, size_t ilen, unsigned char output[20])
Output = SHA-1( input buffer )
void sha1_finish(sha1_context *ctx, unsigned char output[20])
SHA-1 final digest.
void ripemd160_hmac_reset(ripemd160_context *ctx)
RIPEMD-160 HMAC context reset.
#define POLARSSL_ERR_MD_FEATURE_UNAVAILABLE
The selected feature is not available.
RIPEMD-160 context structure.
void md4_finish(md4_context *ctx, unsigned char output[16])
MD4 final digest.
void sha256_hmac(const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[32], int is224)
Output = HMAC-SHA-256( hmac key, input buffer )
void sha1_hmac(const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[20])
Output = HMAC-SHA-1( hmac key, input buffer )
void md4_hmac(const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[16])
Output = HMAC-MD4( hmac key, input buffer )
void md4_starts(md4_context *ctx)
MD4 context setup.
Configuration options (set of defines)
void md2(const unsigned char *input, size_t ilen, unsigned char output[16])
Output = MD2( input buffer )
void md5_finish(md5_context *ctx, unsigned char output[16])
MD5 final digest.
void ripemd160(const unsigned char *input, size_t ilen, unsigned char output[20])
Output = RIPEMD-160( input buffer )
void md5_hmac(const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[16])
Output = HMAC-MD5( hmac key, input buffer )
void sha512_process(sha512_context *ctx, const unsigned char data[128])
void md4(const unsigned char *input, size_t ilen, unsigned char output[16])
Output = MD4( input buffer )
RIPE MD-160 message digest.
void sha256_hmac_finish(sha256_context *ctx, unsigned char output[32])
SHA-256 HMAC final digest.
void md2_hmac_finish(md2_context *ctx, unsigned char output[16])
MD2 HMAC final digest.
void md4_process(md4_context *ctx, const unsigned char data[64])
void sha256_hmac_starts(sha256_context *ctx, const unsigned char *key, size_t keylen, int is224)
SHA-256 HMAC context setup.
int md2_file(const char *path, unsigned char output[16])
Output = MD2( file contents )
int md5_file(const char *path, unsigned char output[16])
Output = MD5( file contents )
void md5_hmac_starts(md5_context *ctx, const unsigned char *key, size_t keylen)
MD5 HMAC context setup.
void sha1_hmac_reset(sha1_context *ctx)
SHA-1 HMAC context reset.
void md4_update(md4_context *ctx, const unsigned char *input, size_t ilen)
MD4 process buffer.
void sha256_starts(sha256_context *ctx, int is224)
SHA-256 context setup.
void md4_hmac_starts(md4_context *ctx, const unsigned char *key, size_t keylen)
MD4 HMAC context setup.
SHA-512 context structure.
void sha512_hmac_finish(sha512_context *ctx, unsigned char output[64])
SHA-512 HMAC final digest.
const md_info_t sha224_info
void md4_hmac_finish(md4_context *ctx, unsigned char output[16])
MD4 HMAC final digest.
int sha1_file(const char *path, unsigned char output[20])
Output = SHA-1( file contents )
void md5_process(md5_context *ctx, const unsigned char data[64])
void sha512_starts(sha512_context *ctx, int is384)
SHA-512 context setup.
void md5_hmac_reset(md5_context *ctx)
MD5 HMAC context reset.
void sha512(const unsigned char *input, size_t ilen, unsigned char output[64], int is384)
Output = SHA-512( input buffer )
int sha512_file(const char *path, unsigned char output[64], int is384)
Output = SHA-512( file contents )
void md5_starts(md5_context *ctx)
MD5 context setup.
void ripemd160_hmac_update(ripemd160_context *ctx, const unsigned char *input, size_t ilen)
RIPEMD-160 HMAC process buffer.
void sha1_hmac_starts(sha1_context *ctx, const unsigned char *key, size_t keylen)
SHA-1 HMAC context setup.
void md5_hmac_finish(md5_context *ctx, unsigned char output[16])
MD5 HMAC final digest.
void sha1_starts(sha1_context *ctx)
SHA-1 context setup.
void sha512_hmac(const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[64], int is384)
Output = HMAC-SHA-512( hmac key, input buffer )
void md2_starts(md2_context *ctx)
MD2 context setup.
void ripemd160_finish(ripemd160_context *ctx, unsigned char output[20])
RIPEMD-160 final digest.
void sha256_hmac_reset(sha256_context *ctx)
SHA-256 HMAC context reset.
void sha256_process(sha256_context *ctx, const unsigned char data[64])
void sha512_finish(sha512_context *ctx, unsigned char output[64])
SHA-512 final digest.
const md_info_t sha1_info
void md2_hmac_starts(md2_context *ctx, const unsigned char *key, size_t keylen)
MD2 HMAC context setup.
const md_info_t sha512_info
SHA-1 cryptographic hash function.
void ripemd160_hmac(const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[20])
Output = HMAC-RIPEMD-160( hmac key, input buffer )
void md2_hmac(const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char output[16])
Output = HMAC-MD2( hmac key, input buffer )
SHA-384 and SHA-512 cryptographic hash function.
const md_info_t sha256_info
void sha256_finish(sha256_context *ctx, unsigned char output[32])
SHA-256 final digest.
void sha1_update(sha1_context *ctx, const unsigned char *input, size_t ilen)
SHA-1 process buffer.
void sha512_hmac_starts(sha512_context *ctx, const unsigned char *key, size_t keylen, int is384)
SHA-512 HMAC context setup.
void md5_update(md5_context *ctx, const unsigned char *input, size_t ilen)
MD5 process buffer.
void md2_hmac_reset(md2_context *ctx)
MD2 HMAC context reset.
void sha1_process(sha1_context *ctx, const unsigned char data[64])
void sha512_hmac_reset(sha512_context *ctx)
SHA-512 HMAC context reset.
SHA-256 context structure.
void md2_finish(md2_context *ctx, unsigned char output[16])
MD2 final digest.
void sha1_hmac_update(sha1_context *ctx, const unsigned char *input, size_t ilen)
SHA-1 HMAC process buffer.
MD4 message digest algorithm (hash function)
void ripemd160_process(ripemd160_context *ctx, const unsigned char data[64])
void md5_hmac_update(md5_context *ctx, const unsigned char *input, size_t ilen)
MD5 HMAC process buffer.
int md4_file(const char *path, unsigned char output[16])
Output = MD4( file contents )
const md_info_t ripemd160_info
MD5 message digest algorithm (hash function)
SHA-224 and SHA-256 cryptographic hash function.
void md5(const unsigned char *input, size_t ilen, unsigned char output[16])
Output = MD5( input buffer )
void sha512_update(sha512_context *ctx, const unsigned char *input, size_t ilen)
SHA-512 process buffer.
Message digest information.
void ripemd160_starts(ripemd160_context *ctx)
RIPEMD-160 context setup.
MD2 message digest algorithm (hash function)
const md_info_t sha384_info
void md4_hmac_reset(md4_context *ctx)
MD4 HMAC context reset.
void md4_hmac_update(md4_context *ctx, const unsigned char *input, size_t ilen)
MD4 HMAC process buffer.
int ripemd160_file(const char *path, unsigned char output[20])
Output = RIPEMD-160( file contents )