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 #include "evp_locl.h"
  13 
  14 static int init(EVP_MD_CTX *ctx)
  15         { return WHIRLPOOL_Init(ctx->md_data); }
  16 
  17 static int update(EVP_MD_CTX *ctx,const void *data,size_t count)
  18         { return WHIRLPOOL_Update(ctx->md_data,data,count); }
  19 
  20 static int final(EVP_MD_CTX *ctx,unsigned char *md)
  21         { return WHIRLPOOL_Final(md,ctx->md_data); }
  22 
  23 static const EVP_MD whirlpool_md=
  24         {
  25         NID_whirlpool,
  26         0,
  27         WHIRLPOOL_DIGEST_LENGTH,
  28         0,
  29         init,
  30         update,
  31         final,
  32         NULL,
  33         NULL,
  34         EVP_PKEY_NULL_method,
  35         WHIRLPOOL_BBLOCK/8,
  36         sizeof(EVP_MD *)+sizeof(WHIRLPOOL_CTX),
  37         };
  38 
  39 const EVP_MD *EVP_whirlpool(void)
  40         {
  41         return(&whirlpool_md);
  42         }
  43 #endif