25#ifndef WOLFSSL_SHA3_H_
26#define WOLFSSL_SHA3_H_
28#include <wolfssl/wolfcrypt/settings.h>
32#include "prefix_sha.h"
43struct WOLFSSL_SHA3_CTX {
45 ALIGN16
void* holder[(424 + WC_ASYNC_DEV_SIZE) /
sizeof(
void*)];
48#ifndef WOLFSSL_NOSHA3_224
49typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_224_CTX;
51WOLFSSL_API
int wolfSSL_SHA3_224_Init(WOLFSSL_SHA3_224_CTX*);
52WOLFSSL_API
int wolfSSL_SHA3_224_Update(WOLFSSL_SHA3_224_CTX*,
const void*,
54WOLFSSL_API
int wolfSSL_SHA3_224_Final(
unsigned char*, WOLFSSL_SHA3_224_CTX*);
57 SHA3_224_DIGEST_LENGTH = 28
60typedef WOLFSSL_SHA3_224_CTX SHA3_224_CTX;
62#define SHA3_224_Init wolfSSL_SHA3_224_Init
63#define SHA3_224_Update wolfSSL_SHA3_224_Update
64#define SHA3_224_Final wolfSSL_SHA3_224_Final
65#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
66 #define SHA3_224 wolfSSL_SHA3_224
71#ifndef WOLFSSL_NOSHA3_256
72typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_256_CTX;
75WOLFSSL_API
int wolfSSL_SHA3_256_Init(WOLFSSL_SHA3_256_CTX*);
76WOLFSSL_API
int wolfSSL_SHA3_256_Update(WOLFSSL_SHA3_256_CTX*,
const void*,
78WOLFSSL_API
int wolfSSL_SHA3_256_Final(
unsigned char*, WOLFSSL_SHA3_256_CTX*);
81 SHA3_256_DIGEST_LENGTH = 32
85typedef WOLFSSL_SHA3_256_CTX SHA3_256_CTX;
87#define SHA3_256_Init wolfSSL_SHA3_256_Init
88#define SHA3_256_Update wolfSSL_SHA3_256_Update
89#define SHA3_256_Final wolfSSL_SHA3_256_Final
90#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
91 #define SHA3_256 wolfSSL_SHA3_256
96typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_384_CTX;
98WOLFSSL_API
int wolfSSL_SHA3_384_Init(WOLFSSL_SHA3_384_CTX*);
99WOLFSSL_API
int wolfSSL_SHA3_384_Update(WOLFSSL_SHA3_384_CTX*,
const void*,
101WOLFSSL_API
int wolfSSL_SHA3_384_Final(
unsigned char*, WOLFSSL_SHA3_384_CTX*);
104 SHA3_384_DIGEST_LENGTH = 48
107typedef WOLFSSL_SHA3_384_CTX SHA3_384_CTX;
109#define SHA3_384_Init wolfSSL_SHA3_384_Init
110#define SHA3_384_Update wolfSSL_SHA3_384_Update
111#define SHA3_384_Final wolfSSL_SHA3_384_Final
112#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
113 #define SHA3_384 wolfSSL_SHA3_384
117#ifndef WOLFSSL_NOSHA3_512
119typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_512_CTX;
121WOLFSSL_API
int wolfSSL_SHA3_512_Init(WOLFSSL_SHA3_512_CTX*);
122WOLFSSL_API
int wolfSSL_SHA3_512_Update(WOLFSSL_SHA3_512_CTX*,
const void*,
124WOLFSSL_API
int wolfSSL_SHA3_512_Final(
unsigned char*, WOLFSSL_SHA3_512_CTX*);
127 SHA3_512_DIGEST_LENGTH = 64
131typedef WOLFSSL_SHA3_512_CTX SHA3_512_CTX;
133#define SHA3_512_Init wolfSSL_SHA3_512_Init
134#define SHA3_512_Update wolfSSL_SHA3_512_Update
135#define SHA3_512_Final wolfSSL_SHA3_512_Final
136#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
137 #define SHA3_512 wolfSSL_SHA3_512