32 #if defined(POLARSSL_MD_C)
36 #if defined(POLARSSL_MD2_C)
40 #if defined(POLARSSL_MD4_C)
44 #if defined(POLARSSL_MD5_C)
48 #if defined(POLARSSL_RIPEMD160_C)
52 #if defined(POLARSSL_SHA1_C)
56 #if defined(POLARSSL_SHA256_C)
60 #if defined(POLARSSL_SHA512_C)
64 #if defined(POLARSSL_MEMORY_C)
67 #define polarssl_malloc malloc
68 #define polarssl_free free
73 #if defined(POLARSSL_MD2_C)
75 static void md2_starts_wrap(
void *ctx )
80 static void md2_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
85 static void md2_finish_wrap(
void *ctx,
unsigned char *output )
90 static int md2_file_wrap(
const char *path,
unsigned char *output )
92 #if defined(POLARSSL_FS_IO)
101 static void md2_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
106 static void md2_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
111 static void md2_hmac_finish_wrap(
void *ctx,
unsigned char *output )
116 static void md2_hmac_reset_wrap(
void *ctx )
121 static void * md2_ctx_alloc(
void )
126 static void md2_ctx_free(
void *ctx )
131 static void md2_process_wrap(
void *ctx,
const unsigned char *data )
147 md2_hmac_starts_wrap,
148 md2_hmac_update_wrap,
149 md2_hmac_finish_wrap,
159 #if defined(POLARSSL_MD4_C)
161 static void md4_starts_wrap(
void *ctx )
166 static void md4_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
171 static void md4_finish_wrap(
void *ctx,
unsigned char *output )
176 static int md4_file_wrap(
const char *path,
unsigned char *output )
178 #if defined(POLARSSL_FS_IO)
187 static void md4_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
192 static void md4_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
197 static void md4_hmac_finish_wrap(
void *ctx,
unsigned char *output )
202 static void md4_hmac_reset_wrap(
void *ctx )
207 static void *md4_ctx_alloc(
void )
212 static void md4_ctx_free(
void *ctx )
217 static void md4_process_wrap(
void *ctx,
const unsigned char *data )
231 md4_hmac_starts_wrap,
232 md4_hmac_update_wrap,
233 md4_hmac_finish_wrap,
243 #if defined(POLARSSL_MD5_C)
245 static void md5_starts_wrap(
void *ctx )
250 static void md5_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
255 static void md5_finish_wrap(
void *ctx,
unsigned char *output )
260 static int md5_file_wrap(
const char *path,
unsigned char *output )
262 #if defined(POLARSSL_FS_IO)
271 static void md5_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
276 static void md5_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
281 static void md5_hmac_finish_wrap(
void *ctx,
unsigned char *output )
286 static void md5_hmac_reset_wrap(
void *ctx )
291 static void * md5_ctx_alloc(
void )
296 static void md5_ctx_free(
void *ctx )
301 static void md5_process_wrap(
void *ctx,
const unsigned char *data )
315 md5_hmac_starts_wrap,
316 md5_hmac_update_wrap,
317 md5_hmac_finish_wrap,
327 #if defined(POLARSSL_RIPEMD160_C)
329 static void ripemd160_starts_wrap(
void *ctx )
334 static void ripemd160_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
339 static void ripemd160_finish_wrap(
void *ctx,
unsigned char *output )
344 static int ripemd160_file_wrap(
const char *path,
unsigned char *output )
346 #if defined(POLARSSL_FS_IO)
355 static void ripemd160_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
360 static void ripemd160_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
365 static void ripemd160_hmac_finish_wrap(
void *ctx,
unsigned char *output )
370 static void ripemd160_hmac_reset_wrap(
void *ctx )
375 static void * ripemd160_ctx_alloc(
void )
380 static void ripemd160_ctx_free(
void *ctx )
385 static void ripemd160_process_wrap(
void *ctx,
const unsigned char *data )
394 ripemd160_starts_wrap,
395 ripemd160_update_wrap,
396 ripemd160_finish_wrap,
399 ripemd160_hmac_starts_wrap,
400 ripemd160_hmac_update_wrap,
401 ripemd160_hmac_finish_wrap,
402 ripemd160_hmac_reset_wrap,
406 ripemd160_process_wrap,
411 #if defined(POLARSSL_SHA1_C)
413 static void sha1_starts_wrap(
void *ctx )
418 static void sha1_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
423 static void sha1_finish_wrap(
void *ctx,
unsigned char *output )
428 static int sha1_file_wrap(
const char *path,
unsigned char *output )
430 #if defined(POLARSSL_FS_IO)
439 static void sha1_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
444 static void sha1_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
449 static void sha1_hmac_finish_wrap(
void *ctx,
unsigned char *output )
454 static void sha1_hmac_reset_wrap(
void *ctx )
459 static void * sha1_ctx_alloc(
void )
464 static void sha1_ctx_free(
void *ctx )
469 static void sha1_process_wrap(
void *ctx,
const unsigned char *data )
483 sha1_hmac_starts_wrap,
484 sha1_hmac_update_wrap,
485 sha1_hmac_finish_wrap,
486 sha1_hmac_reset_wrap,
498 #if defined(POLARSSL_SHA256_C)
500 static void sha224_starts_wrap(
void *ctx )
505 static void sha224_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
510 static void sha224_finish_wrap(
void *ctx,
unsigned char *output )
515 static void sha224_wrap(
const unsigned char *input,
size_t ilen,
516 unsigned char *output )
518 sha256( input, ilen, output, 1 );
521 static int sha224_file_wrap(
const char *path,
unsigned char *output )
523 #if defined(POLARSSL_FS_IO)
532 static void sha224_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
537 static void sha224_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
542 static void sha224_hmac_finish_wrap(
void *ctx,
unsigned char *output )
547 static void sha224_hmac_reset_wrap(
void *ctx )
552 static void sha224_hmac_wrap(
const unsigned char *key,
size_t keylen,
553 const unsigned char *input,
size_t ilen,
554 unsigned char *output )
556 sha256_hmac( key, keylen, input, ilen, output, 1 );
559 static void * sha224_ctx_alloc(
void )
564 static void sha224_ctx_free(
void *ctx )
569 static void sha224_process_wrap(
void *ctx,
const unsigned char *data )
583 sha224_hmac_starts_wrap,
584 sha224_hmac_update_wrap,
585 sha224_hmac_finish_wrap,
586 sha224_hmac_reset_wrap,
593 static void sha256_starts_wrap(
void *ctx )
598 static void sha256_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
603 static void sha256_finish_wrap(
void *ctx,
unsigned char *output )
608 static void sha256_wrap(
const unsigned char *input,
size_t ilen,
609 unsigned char *output )
611 sha256( input, ilen, output, 0 );
614 static int sha256_file_wrap(
const char *path,
unsigned char *output )
616 #if defined(POLARSSL_FS_IO)
625 static void sha256_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
630 static void sha256_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
635 static void sha256_hmac_finish_wrap(
void *ctx,
unsigned char *output )
640 static void sha256_hmac_reset_wrap(
void *ctx )
645 static void sha256_hmac_wrap(
const unsigned char *key,
size_t keylen,
646 const unsigned char *input,
size_t ilen,
647 unsigned char *output )
649 sha256_hmac( key, keylen, input, ilen, output, 0 );
652 static void * sha256_ctx_alloc(
void )
657 static void sha256_ctx_free(
void *ctx )
662 static void sha256_process_wrap(
void *ctx,
const unsigned char *data )
676 sha256_hmac_starts_wrap,
677 sha256_hmac_update_wrap,
678 sha256_hmac_finish_wrap,
679 sha256_hmac_reset_wrap,
688 #if defined(POLARSSL_SHA512_C)
690 static void sha384_starts_wrap(
void *ctx )
695 static void sha384_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
700 static void sha384_finish_wrap(
void *ctx,
unsigned char *output )
705 static void sha384_wrap(
const unsigned char *input,
size_t ilen,
706 unsigned char *output )
708 sha512( input, ilen, output, 1 );
711 static int sha384_file_wrap(
const char *path,
unsigned char *output )
713 #if defined(POLARSSL_FS_IO)
722 static void sha384_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
727 static void sha384_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
732 static void sha384_hmac_finish_wrap(
void *ctx,
unsigned char *output )
737 static void sha384_hmac_reset_wrap(
void *ctx )
742 static void sha384_hmac_wrap(
const unsigned char *key,
size_t keylen,
743 const unsigned char *input,
size_t ilen,
744 unsigned char *output )
746 sha512_hmac( key, keylen, input, ilen, output, 1 );
749 static void * sha384_ctx_alloc(
void )
754 static void sha384_ctx_free(
void *ctx )
759 static void sha384_process_wrap(
void *ctx,
const unsigned char *data )
773 sha384_hmac_starts_wrap,
774 sha384_hmac_update_wrap,
775 sha384_hmac_finish_wrap,
776 sha384_hmac_reset_wrap,
783 static void sha512_starts_wrap(
void *ctx )
788 static void sha512_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
793 static void sha512_finish_wrap(
void *ctx,
unsigned char *output )
798 static void sha512_wrap(
const unsigned char *input,
size_t ilen,
799 unsigned char *output )
801 sha512( input, ilen, output, 0 );
804 static int sha512_file_wrap(
const char *path,
unsigned char *output )
806 #if defined(POLARSSL_FS_IO)
815 static void sha512_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
820 static void sha512_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
825 static void sha512_hmac_finish_wrap(
void *ctx,
unsigned char *output )
830 static void sha512_hmac_reset_wrap(
void *ctx )
835 static void sha512_hmac_wrap(
const unsigned char *key,
size_t keylen,
836 const unsigned char *input,
size_t ilen,
837 unsigned char *output )
839 sha512_hmac( key, keylen, input, ilen, output, 0 );
842 static void * sha512_ctx_alloc(
void )
847 static void sha512_ctx_free(
void *ctx )
852 static void sha512_process_wrap(
void *ctx,
const unsigned char *data )
866 sha512_hmac_starts_wrap,
867 sha512_hmac_update_wrap,
868 sha512_hmac_finish_wrap,
869 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 *(* polarssl_malloc)(size_t len)
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 )
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(* polarssl_free)(void *ptr)
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 )