1238384Sjkim/* crypto/evp/m_wp.c */
2238384Sjkim
3238384Sjkim#include <stdio.h>
4238384Sjkim#include "cryptlib.h"
5238384Sjkim
6238384Sjkim#ifndef OPENSSL_NO_WHIRLPOOL
7238384Sjkim
8296341Sdelphij# include <openssl/evp.h>
9296341Sdelphij# include <openssl/objects.h>
10296341Sdelphij# include <openssl/x509.h>
11296341Sdelphij# include <openssl/whrlpool.h>
12296341Sdelphij# include "evp_locl.h"
13238384Sjkim
14238384Sjkimstatic int init(EVP_MD_CTX *ctx)
15296341Sdelphij{
16296341Sdelphij    return WHIRLPOOL_Init(ctx->md_data);
17296341Sdelphij}
18238384Sjkim
19296341Sdelphijstatic int update(EVP_MD_CTX *ctx, const void *data, size_t count)
20296341Sdelphij{
21296341Sdelphij    return WHIRLPOOL_Update(ctx->md_data, data, count);
22296341Sdelphij}
23238384Sjkim
24296341Sdelphijstatic int final(EVP_MD_CTX *ctx, unsigned char *md)
25296341Sdelphij{
26296341Sdelphij    return WHIRLPOOL_Final(md, ctx->md_data);
27296341Sdelphij}
28238384Sjkim
29296341Sdelphijstatic const EVP_MD whirlpool_md = {
30296341Sdelphij    NID_whirlpool,
31296341Sdelphij    0,
32296341Sdelphij    WHIRLPOOL_DIGEST_LENGTH,
33296341Sdelphij    0,
34296341Sdelphij    init,
35296341Sdelphij    update,
36296341Sdelphij    final,
37296341Sdelphij    NULL,
38296341Sdelphij    NULL,
39296341Sdelphij    EVP_PKEY_NULL_method,
40296341Sdelphij    WHIRLPOOL_BBLOCK / 8,
41296341Sdelphij    sizeof(EVP_MD *) + sizeof(WHIRLPOOL_CTX),
42296341Sdelphij};
43238384Sjkim
44238384Sjkimconst EVP_MD *EVP_whirlpool(void)
45296341Sdelphij{
46296341Sdelphij    return (&whirlpool_md);
47296341Sdelphij}
48238384Sjkim#endif
49