xref: /freebsd-src/crypto/openssl/include/openssl/whrlpool.h (revision b077aed33b7b6aefca7b17ddb250cf521f938613)
1e71b7053SJung-uk Kim /*
2*b077aed3SPierre Pronchery  * Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
3e71b7053SJung-uk Kim  *
4*b077aed3SPierre Pronchery  * Licensed under the Apache License 2.0 (the "License").  You may not use
5e71b7053SJung-uk Kim  * this file except in compliance with the License.  You can obtain a copy
6e71b7053SJung-uk Kim  * in the file LICENSE in the source distribution or at
7e71b7053SJung-uk Kim  * https://www.openssl.org/source/license.html
8e71b7053SJung-uk Kim  */
9e71b7053SJung-uk Kim 
10*b077aed3SPierre Pronchery #ifndef OPENSSL_WHRLPOOL_H
11*b077aed3SPierre Pronchery # define OPENSSL_WHRLPOOL_H
12*b077aed3SPierre Pronchery # pragma once
13*b077aed3SPierre Pronchery 
14*b077aed3SPierre Pronchery # include <openssl/macros.h>
15*b077aed3SPierre Pronchery # ifndef OPENSSL_NO_DEPRECATED_3_0
16e71b7053SJung-uk Kim #  define HEADER_WHRLPOOL_H
17*b077aed3SPierre Pronchery # endif
18e71b7053SJung-uk Kim 
19e71b7053SJung-uk Kim # include <openssl/opensslconf.h>
20e71b7053SJung-uk Kim 
21e71b7053SJung-uk Kim # ifndef OPENSSL_NO_WHIRLPOOL
22e71b7053SJung-uk Kim #  include <openssl/e_os2.h>
23e71b7053SJung-uk Kim #  include <stddef.h>
24e71b7053SJung-uk Kim #  ifdef __cplusplus
25e71b7053SJung-uk Kim extern "C" {
26e71b7053SJung-uk Kim #  endif
27e71b7053SJung-uk Kim 
28e71b7053SJung-uk Kim #  define WHIRLPOOL_DIGEST_LENGTH (512/8)
29*b077aed3SPierre Pronchery 
30*b077aed3SPierre Pronchery #  if !defined(OPENSSL_NO_DEPRECATED_3_0)
31*b077aed3SPierre Pronchery 
32e71b7053SJung-uk Kim #   define WHIRLPOOL_BBLOCK        512
33e71b7053SJung-uk Kim #   define WHIRLPOOL_COUNTER       (256/8)
34e71b7053SJung-uk Kim 
35e71b7053SJung-uk Kim typedef struct {
36e71b7053SJung-uk Kim     union {
37e71b7053SJung-uk Kim         unsigned char c[WHIRLPOOL_DIGEST_LENGTH];
38e71b7053SJung-uk Kim         /* double q is here to ensure 64-bit alignment */
39e71b7053SJung-uk Kim         double q[WHIRLPOOL_DIGEST_LENGTH / sizeof(double)];
40e71b7053SJung-uk Kim     } H;
41e71b7053SJung-uk Kim     unsigned char data[WHIRLPOOL_BBLOCK / 8];
42e71b7053SJung-uk Kim     unsigned int bitoff;
43e71b7053SJung-uk Kim     size_t bitlen[WHIRLPOOL_COUNTER / sizeof(size_t)];
44e71b7053SJung-uk Kim } WHIRLPOOL_CTX;
45*b077aed3SPierre Pronchery #  endif
46*b077aed3SPierre Pronchery #  ifndef OPENSSL_NO_DEPRECATED_3_0
47*b077aed3SPierre Pronchery OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Init(WHIRLPOOL_CTX *c);
48*b077aed3SPierre Pronchery OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Update(WHIRLPOOL_CTX *c,
49*b077aed3SPierre Pronchery                                            const void *inp, size_t bytes);
50*b077aed3SPierre Pronchery OSSL_DEPRECATEDIN_3_0 void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,
51*b077aed3SPierre Pronchery                                                const void *inp, size_t bits);
52*b077aed3SPierre Pronchery OSSL_DEPRECATEDIN_3_0 int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c);
53*b077aed3SPierre Pronchery OSSL_DEPRECATEDIN_3_0 unsigned char *WHIRLPOOL(const void *inp, size_t bytes,
54*b077aed3SPierre Pronchery                                                unsigned char *md);
55*b077aed3SPierre Pronchery #  endif
56e71b7053SJung-uk Kim 
57e71b7053SJung-uk Kim #  ifdef __cplusplus
58e71b7053SJung-uk Kim }
59e71b7053SJung-uk Kim #  endif
60e71b7053SJung-uk Kim # endif
61e71b7053SJung-uk Kim 
62e71b7053SJung-uk Kim #endif
63