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_SHA1_C)
52 #if defined(POLARSSL_SHA256_C)
56 #if defined(POLARSSL_SHA512_C)
60 #if defined(POLARSSL_MEMORY_C)
63 #define polarssl_malloc malloc
64 #define polarssl_free free
69 #if defined(POLARSSL_MD2_C)
71 static void md2_starts_wrap(
void *ctx )
76 static void md2_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
81 static void md2_finish_wrap(
void *ctx,
unsigned char *output )
86 static int md2_file_wrap(
const char *path,
unsigned char *output )
88 #if defined(POLARSSL_FS_IO)
97 static void md2_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
102 static void md2_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
107 static void md2_hmac_finish_wrap(
void *ctx,
unsigned char *output )
112 static void md2_hmac_reset_wrap(
void *ctx )
117 static void * md2_ctx_alloc(
void )
122 static void md2_ctx_free(
void *ctx )
127 static void md2_process_wrap(
void *ctx,
const unsigned char *data )
143 md2_hmac_starts_wrap,
144 md2_hmac_update_wrap,
145 md2_hmac_finish_wrap,
155 #if defined(POLARSSL_MD4_C)
157 static void md4_starts_wrap(
void *ctx )
162 static void md4_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
167 static void md4_finish_wrap(
void *ctx,
unsigned char *output )
172 static int md4_file_wrap(
const char *path,
unsigned char *output )
174 #if defined(POLARSSL_FS_IO)
183 static void md4_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
188 static void md4_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
193 static void md4_hmac_finish_wrap(
void *ctx,
unsigned char *output )
198 static void md4_hmac_reset_wrap(
void *ctx )
203 static void *md4_ctx_alloc(
void )
208 static void md4_ctx_free(
void *ctx )
213 static void md4_process_wrap(
void *ctx,
const unsigned char *data )
227 md4_hmac_starts_wrap,
228 md4_hmac_update_wrap,
229 md4_hmac_finish_wrap,
239 #if defined(POLARSSL_MD5_C)
241 static void md5_starts_wrap(
void *ctx )
246 static void md5_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
251 static void md5_finish_wrap(
void *ctx,
unsigned char *output )
256 static int md5_file_wrap(
const char *path,
unsigned char *output )
258 #if defined(POLARSSL_FS_IO)
267 static void md5_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
272 static void md5_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
277 static void md5_hmac_finish_wrap(
void *ctx,
unsigned char *output )
282 static void md5_hmac_reset_wrap(
void *ctx )
287 static void * md5_ctx_alloc(
void )
292 static void md5_ctx_free(
void *ctx )
297 static void md5_process_wrap(
void *ctx,
const unsigned char *data )
311 md5_hmac_starts_wrap,
312 md5_hmac_update_wrap,
313 md5_hmac_finish_wrap,
323 #if defined(POLARSSL_SHA1_C)
325 static void sha1_starts_wrap(
void *ctx )
330 static void sha1_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
335 static void sha1_finish_wrap(
void *ctx,
unsigned char *output )
340 static int sha1_file_wrap(
const char *path,
unsigned char *output )
342 #if defined(POLARSSL_FS_IO)
351 static void sha1_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
356 static void sha1_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
361 static void sha1_hmac_finish_wrap(
void *ctx,
unsigned char *output )
366 static void sha1_hmac_reset_wrap(
void *ctx )
371 static void * sha1_ctx_alloc(
void )
376 static void sha1_ctx_free(
void *ctx )
381 static void sha1_process_wrap(
void *ctx,
const unsigned char *data )
395 sha1_hmac_starts_wrap,
396 sha1_hmac_update_wrap,
397 sha1_hmac_finish_wrap,
398 sha1_hmac_reset_wrap,
410 #if defined(POLARSSL_SHA256_C)
412 static void sha224_starts_wrap(
void *ctx )
417 static void sha224_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
422 static void sha224_finish_wrap(
void *ctx,
unsigned char *output )
427 static void sha224_wrap(
const unsigned char *input,
size_t ilen,
428 unsigned char *output )
430 sha256( input, ilen, output, 1 );
433 static int sha224_file_wrap(
const char *path,
unsigned char *output )
435 #if defined(POLARSSL_FS_IO)
444 static void sha224_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
449 static void sha224_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
454 static void sha224_hmac_finish_wrap(
void *ctx,
unsigned char *output )
459 static void sha224_hmac_reset_wrap(
void *ctx )
464 static void sha224_hmac_wrap(
const unsigned char *key,
size_t keylen,
465 const unsigned char *input,
size_t ilen,
466 unsigned char *output )
468 sha256_hmac( key, keylen, input, ilen, output, 1 );
471 static void * sha224_ctx_alloc(
void )
476 static void sha224_ctx_free(
void *ctx )
481 static void sha224_process_wrap(
void *ctx,
const unsigned char *data )
495 sha224_hmac_starts_wrap,
496 sha224_hmac_update_wrap,
497 sha224_hmac_finish_wrap,
498 sha224_hmac_reset_wrap,
505 static void sha256_starts_wrap(
void *ctx )
510 static void sha256_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
515 static void sha256_finish_wrap(
void *ctx,
unsigned char *output )
520 static void sha256_wrap(
const unsigned char *input,
size_t ilen,
521 unsigned char *output )
523 sha256( input, ilen, output, 0 );
526 static int sha256_file_wrap(
const char *path,
unsigned char *output )
528 #if defined(POLARSSL_FS_IO)
537 static void sha256_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
542 static void sha256_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
547 static void sha256_hmac_finish_wrap(
void *ctx,
unsigned char *output )
552 static void sha256_hmac_reset_wrap(
void *ctx )
557 static void sha256_hmac_wrap(
const unsigned char *key,
size_t keylen,
558 const unsigned char *input,
size_t ilen,
559 unsigned char *output )
561 sha256_hmac( key, keylen, input, ilen, output, 0 );
564 static void * sha256_ctx_alloc(
void )
569 static void sha256_ctx_free(
void *ctx )
574 static void sha256_process_wrap(
void *ctx,
const unsigned char *data )
588 sha256_hmac_starts_wrap,
589 sha256_hmac_update_wrap,
590 sha256_hmac_finish_wrap,
591 sha256_hmac_reset_wrap,
600 #if defined(POLARSSL_SHA512_C)
602 static void sha384_starts_wrap(
void *ctx )
607 static void sha384_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
612 static void sha384_finish_wrap(
void *ctx,
unsigned char *output )
617 static void sha384_wrap(
const unsigned char *input,
size_t ilen,
618 unsigned char *output )
620 sha512( input, ilen, output, 1 );
623 static int sha384_file_wrap(
const char *path,
unsigned char *output )
625 #if defined(POLARSSL_FS_IO)
634 static void sha384_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
639 static void sha384_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
644 static void sha384_hmac_finish_wrap(
void *ctx,
unsigned char *output )
649 static void sha384_hmac_reset_wrap(
void *ctx )
654 static void sha384_hmac_wrap(
const unsigned char *key,
size_t keylen,
655 const unsigned char *input,
size_t ilen,
656 unsigned char *output )
658 sha512_hmac( key, keylen, input, ilen, output, 1 );
661 static void * sha384_ctx_alloc(
void )
666 static void sha384_ctx_free(
void *ctx )
671 static void sha384_process_wrap(
void *ctx,
const unsigned char *data )
685 sha384_hmac_starts_wrap,
686 sha384_hmac_update_wrap,
687 sha384_hmac_finish_wrap,
688 sha384_hmac_reset_wrap,
695 static void sha512_starts_wrap(
void *ctx )
700 static void sha512_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
705 static void sha512_finish_wrap(
void *ctx,
unsigned char *output )
710 static void sha512_wrap(
const unsigned char *input,
size_t ilen,
711 unsigned char *output )
713 sha512( input, ilen, output, 0 );
716 static int sha512_file_wrap(
const char *path,
unsigned char *output )
718 #if defined(POLARSSL_FS_IO)
727 static void sha512_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
size_t keylen )
732 static void sha512_hmac_update_wrap(
void *ctx,
const unsigned char *input,
size_t ilen )
737 static void sha512_hmac_finish_wrap(
void *ctx,
unsigned char *output )
742 static void sha512_hmac_reset_wrap(
void *ctx )
747 static void sha512_hmac_wrap(
const unsigned char *key,
size_t keylen,
748 const unsigned char *input,
size_t ilen,
749 unsigned char *output )
751 sha512_hmac( key, keylen, input, ilen, output, 0 );
754 static void * sha512_ctx_alloc(
void )
759 static void sha512_ctx_free(
void *ctx )
764 static void sha512_process_wrap(
void *ctx,
const unsigned char *data )
778 sha512_hmac_starts_wrap,
779 sha512_hmac_update_wrap,
780 sha512_hmac_finish_wrap,
781 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.
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 md2_hmac_update(md2_context *ctx, const unsigned char *input, size_t ilen)
MD2 HMAC 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.
#define POLARSSL_ERR_MD_FEATURE_UNAVAILABLE
The selected feature is not available.
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 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 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 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 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 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 )
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.
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.