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
78 static void polarssl_zeroize(
void *v,
size_t n ) {
79 volatile unsigned char *p = v;
while( n-- ) *p++ = 0;
82 #if defined(POLARSSL_MD2_C)
84 static void md2_starts_wrap(
void *ctx )
89 static void md2_update_wrap(
void *ctx,
const unsigned char *input,
95 static void md2_finish_wrap(
void *ctx,
unsigned char *output )
100 static int md2_file_wrap(
const char *path,
unsigned char *output )
102 #if defined(POLARSSL_FS_IO)
111 static void md2_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
117 static void md2_hmac_update_wrap(
void *ctx,
const unsigned char *input,
123 static void md2_hmac_finish_wrap(
void *ctx,
unsigned char *output )
128 static void md2_hmac_reset_wrap(
void *ctx )
133 static void * md2_ctx_alloc(
void )
138 static void md2_ctx_free(
void *ctx )
144 static void md2_process_wrap(
void *ctx,
const unsigned char *data )
160 md2_hmac_starts_wrap,
161 md2_hmac_update_wrap,
162 md2_hmac_finish_wrap,
172 #if defined(POLARSSL_MD4_C)
174 static void md4_starts_wrap(
void *ctx )
179 static void md4_update_wrap(
void *ctx,
const unsigned char *input,
185 static void md4_finish_wrap(
void *ctx,
unsigned char *output )
190 static int md4_file_wrap(
const char *path,
unsigned char *output )
192 #if defined(POLARSSL_FS_IO)
201 static void md4_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
207 static void md4_hmac_update_wrap(
void *ctx,
const unsigned char *input,
213 static void md4_hmac_finish_wrap(
void *ctx,
unsigned char *output )
218 static void md4_hmac_reset_wrap(
void *ctx )
223 static void *md4_ctx_alloc(
void )
228 static void md4_ctx_free(
void *ctx )
234 static void md4_process_wrap(
void *ctx,
const unsigned char *data )
248 md4_hmac_starts_wrap,
249 md4_hmac_update_wrap,
250 md4_hmac_finish_wrap,
260 #if defined(POLARSSL_MD5_C)
262 static void md5_starts_wrap(
void *ctx )
267 static void md5_update_wrap(
void *ctx,
const unsigned char *input,
273 static void md5_finish_wrap(
void *ctx,
unsigned char *output )
278 static int md5_file_wrap(
const char *path,
unsigned char *output )
280 #if defined(POLARSSL_FS_IO)
289 static void md5_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
295 static void md5_hmac_update_wrap(
void *ctx,
const unsigned char *input,
301 static void md5_hmac_finish_wrap(
void *ctx,
unsigned char *output )
306 static void md5_hmac_reset_wrap(
void *ctx )
311 static void * md5_ctx_alloc(
void )
316 static void md5_ctx_free(
void *ctx )
322 static void md5_process_wrap(
void *ctx,
const unsigned char *data )
336 md5_hmac_starts_wrap,
337 md5_hmac_update_wrap,
338 md5_hmac_finish_wrap,
348 #if defined(POLARSSL_RIPEMD160_C)
350 static void ripemd160_starts_wrap(
void *ctx )
355 static void ripemd160_update_wrap(
void *ctx,
const unsigned char *input,
361 static void ripemd160_finish_wrap(
void *ctx,
unsigned char *output )
366 static int ripemd160_file_wrap(
const char *path,
unsigned char *output )
368 #if defined(POLARSSL_FS_IO)
377 static void ripemd160_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
383 static void ripemd160_hmac_update_wrap(
void *ctx,
const unsigned char *input,
389 static void ripemd160_hmac_finish_wrap(
void *ctx,
unsigned char *output )
394 static void ripemd160_hmac_reset_wrap(
void *ctx )
399 static void * ripemd160_ctx_alloc(
void )
412 static void ripemd160_ctx_free(
void *ctx )
418 static void ripemd160_process_wrap(
void *ctx,
const unsigned char *data )
427 ripemd160_starts_wrap,
428 ripemd160_update_wrap,
429 ripemd160_finish_wrap,
432 ripemd160_hmac_starts_wrap,
433 ripemd160_hmac_update_wrap,
434 ripemd160_hmac_finish_wrap,
435 ripemd160_hmac_reset_wrap,
439 ripemd160_process_wrap,
444 #if defined(POLARSSL_SHA1_C)
446 static void sha1_starts_wrap(
void *ctx )
451 static void sha1_update_wrap(
void *ctx,
const unsigned char *input,
457 static void sha1_finish_wrap(
void *ctx,
unsigned char *output )
462 static int sha1_file_wrap(
const char *path,
unsigned char *output )
464 #if defined(POLARSSL_FS_IO)
473 static void sha1_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
479 static void sha1_hmac_update_wrap(
void *ctx,
const unsigned char *input,
485 static void sha1_hmac_finish_wrap(
void *ctx,
unsigned char *output )
490 static void sha1_hmac_reset_wrap(
void *ctx )
495 static void * sha1_ctx_alloc(
void )
508 static void sha1_ctx_free(
void *ctx )
514 static void sha1_process_wrap(
void *ctx,
const unsigned char *data )
528 sha1_hmac_starts_wrap,
529 sha1_hmac_update_wrap,
530 sha1_hmac_finish_wrap,
531 sha1_hmac_reset_wrap,
543 #if defined(POLARSSL_SHA256_C)
545 static void sha224_starts_wrap(
void *ctx )
550 static void sha224_update_wrap(
void *ctx,
const unsigned char *input,
556 static void sha224_finish_wrap(
void *ctx,
unsigned char *output )
561 static void sha224_wrap(
const unsigned char *input,
size_t ilen,
562 unsigned char *output )
564 sha256( input, ilen, output, 1 );
567 static int sha224_file_wrap(
const char *path,
unsigned char *output )
569 #if defined(POLARSSL_FS_IO)
578 static void sha224_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
584 static void sha224_hmac_update_wrap(
void *ctx,
const unsigned char *input,
590 static void sha224_hmac_finish_wrap(
void *ctx,
unsigned char *output )
595 static void sha224_hmac_reset_wrap(
void *ctx )
600 static void sha224_hmac_wrap(
const unsigned char *key,
size_t keylen,
601 const unsigned char *input,
size_t ilen,
602 unsigned char *output )
604 sha256_hmac( key, keylen, input, ilen, output, 1 );
607 static void * sha224_ctx_alloc(
void )
612 static void sha224_ctx_free(
void *ctx )
618 static void sha224_process_wrap(
void *ctx,
const unsigned char *data )
632 sha224_hmac_starts_wrap,
633 sha224_hmac_update_wrap,
634 sha224_hmac_finish_wrap,
635 sha224_hmac_reset_wrap,
642 static void sha256_starts_wrap(
void *ctx )
647 static void sha256_update_wrap(
void *ctx,
const unsigned char *input,
653 static void sha256_finish_wrap(
void *ctx,
unsigned char *output )
658 static void sha256_wrap(
const unsigned char *input,
size_t ilen,
659 unsigned char *output )
661 sha256( input, ilen, output, 0 );
664 static int sha256_file_wrap(
const char *path,
unsigned char *output )
666 #if defined(POLARSSL_FS_IO)
675 static void sha256_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
681 static void sha256_hmac_update_wrap(
void *ctx,
const unsigned char *input,
687 static void sha256_hmac_finish_wrap(
void *ctx,
unsigned char *output )
692 static void sha256_hmac_reset_wrap(
void *ctx )
697 static void sha256_hmac_wrap(
const unsigned char *key,
size_t keylen,
698 const unsigned char *input,
size_t ilen,
699 unsigned char *output )
701 sha256_hmac( key, keylen, input, ilen, output, 0 );
704 static void * sha256_ctx_alloc(
void )
717 static void sha256_ctx_free(
void *ctx )
723 static void sha256_process_wrap(
void *ctx,
const unsigned char *data )
737 sha256_hmac_starts_wrap,
738 sha256_hmac_update_wrap,
739 sha256_hmac_finish_wrap,
740 sha256_hmac_reset_wrap,
749 #if defined(POLARSSL_SHA512_C)
751 static void sha384_starts_wrap(
void *ctx )
756 static void sha384_update_wrap(
void *ctx,
const unsigned char *input,
762 static void sha384_finish_wrap(
void *ctx,
unsigned char *output )
767 static void sha384_wrap(
const unsigned char *input,
size_t ilen,
768 unsigned char *output )
770 sha512( input, ilen, output, 1 );
773 static int sha384_file_wrap(
const char *path,
unsigned char *output )
775 #if defined(POLARSSL_FS_IO)
784 static void sha384_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
790 static void sha384_hmac_update_wrap(
void *ctx,
const unsigned char *input,
796 static void sha384_hmac_finish_wrap(
void *ctx,
unsigned char *output )
801 static void sha384_hmac_reset_wrap(
void *ctx )
806 static void sha384_hmac_wrap(
const unsigned char *key,
size_t keylen,
807 const unsigned char *input,
size_t ilen,
808 unsigned char *output )
810 sha512_hmac( key, keylen, input, ilen, output, 1 );
813 static void * sha384_ctx_alloc(
void )
818 static void sha384_ctx_free(
void *ctx )
824 static void sha384_process_wrap(
void *ctx,
const unsigned char *data )
838 sha384_hmac_starts_wrap,
839 sha384_hmac_update_wrap,
840 sha384_hmac_finish_wrap,
841 sha384_hmac_reset_wrap,
848 static void sha512_starts_wrap(
void *ctx )
853 static void sha512_update_wrap(
void *ctx,
const unsigned char *input,
859 static void sha512_finish_wrap(
void *ctx,
unsigned char *output )
864 static void sha512_wrap(
const unsigned char *input,
size_t ilen,
865 unsigned char *output )
867 sha512( input, ilen, output, 0 );
870 static int sha512_file_wrap(
const char *path,
unsigned char *output )
872 #if defined(POLARSSL_FS_IO)
881 static void sha512_hmac_starts_wrap(
void *ctx,
const unsigned char *key,
887 static void sha512_hmac_update_wrap(
void *ctx,
const unsigned char *input,
893 static void sha512_hmac_finish_wrap(
void *ctx,
unsigned char *output )
898 static void sha512_hmac_reset_wrap(
void *ctx )
903 static void sha512_hmac_wrap(
const unsigned char *key,
size_t keylen,
904 const unsigned char *input,
size_t ilen,
905 unsigned char *output )
907 sha512_hmac( key, keylen, input, ilen, output, 0 );
910 static void * sha512_ctx_alloc(
void )
923 static void sha512_ctx_free(
void *ctx )
929 static void sha512_process_wrap(
void *ctx,
const unsigned char *data )
943 sha512_hmac_starts_wrap,
944 sha512_hmac_update_wrap,
945 sha512_hmac_finish_wrap,
946 sha512_hmac_reset_wrap,