xref: /dragonfly/crypto/libressl/crypto/evp/m_wp.c (revision de0e0e4d)
1*de0e0e4dSAntonio Huete Jimenez /* $OpenBSD: m_wp.c,v 1.10 2022/01/14 08:38:06 tb Exp $ */
2f5b1c8a1SJohn Marino 
3f5b1c8a1SJohn Marino #include <stdio.h>
4f5b1c8a1SJohn Marino 
5f5b1c8a1SJohn Marino #include <openssl/opensslconf.h>
6f5b1c8a1SJohn Marino 
7f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_WHIRLPOOL
8f5b1c8a1SJohn Marino 
9f5b1c8a1SJohn Marino #include <openssl/evp.h>
10f5b1c8a1SJohn Marino #include <openssl/objects.h>
11f5b1c8a1SJohn Marino #include <openssl/x509.h>
12f5b1c8a1SJohn Marino #include <openssl/whrlpool.h>
13f5b1c8a1SJohn Marino 
14*de0e0e4dSAntonio Huete Jimenez #include "evp_locl.h"
15*de0e0e4dSAntonio Huete Jimenez 
16f5b1c8a1SJohn Marino static int
init(EVP_MD_CTX * ctx)17f5b1c8a1SJohn Marino init(EVP_MD_CTX *ctx)
18f5b1c8a1SJohn Marino {
19f5b1c8a1SJohn Marino 	return WHIRLPOOL_Init(ctx->md_data);
20f5b1c8a1SJohn Marino }
21f5b1c8a1SJohn Marino 
22f5b1c8a1SJohn Marino static int
update(EVP_MD_CTX * ctx,const void * data,size_t count)23f5b1c8a1SJohn Marino update(EVP_MD_CTX *ctx, const void *data, size_t count)
24f5b1c8a1SJohn Marino {
25f5b1c8a1SJohn Marino 	return WHIRLPOOL_Update(ctx->md_data, data, count);
26f5b1c8a1SJohn Marino }
27f5b1c8a1SJohn Marino 
28f5b1c8a1SJohn Marino static int
final(EVP_MD_CTX * ctx,unsigned char * md)29f5b1c8a1SJohn Marino final(EVP_MD_CTX *ctx, unsigned char *md)
30f5b1c8a1SJohn Marino {
31f5b1c8a1SJohn Marino 	return WHIRLPOOL_Final(md, ctx->md_data);
32f5b1c8a1SJohn Marino }
33f5b1c8a1SJohn Marino 
34f5b1c8a1SJohn Marino static const EVP_MD whirlpool_md = {
35f5b1c8a1SJohn Marino 	.type = NID_whirlpool,
36f5b1c8a1SJohn Marino 	.pkey_type = 0,
37f5b1c8a1SJohn Marino 	.md_size = WHIRLPOOL_DIGEST_LENGTH,
38f5b1c8a1SJohn Marino 	.flags = 0,
39f5b1c8a1SJohn Marino 	.init = init,
40f5b1c8a1SJohn Marino 	.update = update,
41f5b1c8a1SJohn Marino 	.final = final,
42f5b1c8a1SJohn Marino 	.copy = NULL,
43f5b1c8a1SJohn Marino 	.cleanup = NULL,
44f5b1c8a1SJohn Marino 	.block_size = WHIRLPOOL_BBLOCK / 8,
45f5b1c8a1SJohn Marino 	.ctx_size = sizeof(EVP_MD *) + sizeof(WHIRLPOOL_CTX),
46f5b1c8a1SJohn Marino };
47f5b1c8a1SJohn Marino 
48f5b1c8a1SJohn Marino const EVP_MD *
EVP_whirlpool(void)49f5b1c8a1SJohn Marino EVP_whirlpool(void)
50f5b1c8a1SJohn Marino {
51f5b1c8a1SJohn Marino 	return (&whirlpool_md);
52f5b1c8a1SJohn Marino }
53f5b1c8a1SJohn Marino #endif
54