1 /* crypto/evp/m_wp.c */ 2 3 #include <stdio.h> 4 #include "cryptlib.h" 5 6 #ifndef OPENSSL_NO_WHIRLPOOL 7 8 #include <openssl/evp.h> 9 #include <openssl/objects.h> 10 #include <openssl/x509.h> 11 #include <openssl/whrlpool.h> 12 13 static int init(EVP_MD_CTX *ctx) 14 { return WHIRLPOOL_Init(ctx->md_data); } 15 16 static int update(EVP_MD_CTX *ctx,const void *data,size_t count) 17 { return WHIRLPOOL_Update(ctx->md_data,data,count); } 18 19 static int final(EVP_MD_CTX *ctx,unsigned char *md) 20 { return WHIRLPOOL_Final(md,ctx->md_data); } 21 22 static const EVP_MD whirlpool_md= 23 { 24 NID_whirlpool, 25 0, 26 WHIRLPOOL_DIGEST_LENGTH, 27 0, 28 init, 29 update, 30 final, 31 NULL, 32 NULL, 33 EVP_PKEY_NULL_method, 34 WHIRLPOOL_BBLOCK/8, 35 sizeof(EVP_MD *)+sizeof(WHIRLPOOL_CTX), 36 }; 37 38 const EVP_MD *EVP_whirlpool(void) 39 { 40 return(&whirlpool_md); 41 } 42 #endif 43