forked from wolfSSL/wolfssl
Allow SHA384 to be compiled in without SHA512
This commit is contained in:
29
configure.ac
29
configure.ac
@ -1079,15 +1079,41 @@ fi
|
||||
if test "$ENABLED_OPENSSH" = "yes" || test "$ENABLED_WPAS" = "yes" || test "$ENABLED_FORTRESS" = "yes"
|
||||
then
|
||||
ENABLED_SHA512="yes"
|
||||
ENABLED_SHA384="yes"
|
||||
fi
|
||||
|
||||
if test "$ENABLED_SHA512" = "yes" && test "$ENABLED_32BIT" = "no"
|
||||
then
|
||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SHA512 -DWOLFSSL_SHA384"
|
||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SHA512"
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([BUILD_SHA512], [test "x$ENABLED_SHA512" = "xyes"])
|
||||
|
||||
# SHA384
|
||||
AC_ARG_ENABLE([sha384],
|
||||
[AS_HELP_STRING([--enable-sha384],[Enable wolfSSL SHA-384 support (default: enabled)])],
|
||||
[ ENABLED_SHA384=$enableval ],
|
||||
[ ENABLED_SHA384=yes ]
|
||||
)
|
||||
|
||||
# options that don't require sha512
|
||||
if test "$ENABLED_LEANPSK" = "yes" || test "$ENABLED_LEANTLS" = "yes"
|
||||
then
|
||||
ENABLED_SHA384=no
|
||||
fi
|
||||
|
||||
# options that require sha384
|
||||
if test "$ENABLED_OPENSSH" = "yes" || test "$ENABLED_WPAS" = "yes" || test "$ENABLED_FORTRESS" = "yes"
|
||||
then
|
||||
ENABLED_SHA384="yes"
|
||||
fi
|
||||
if test "$ENABLED_SHA384" = "yes" && test "$ENABLED_32BIT" = "no"
|
||||
then
|
||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SHA384"
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([BUILD_SHA512], [test "x$ENABLED_SHA384" = "xyes"])
|
||||
|
||||
|
||||
# SESSION CERTS
|
||||
AC_ARG_ENABLE([sessioncerts],
|
||||
@ -4389,6 +4415,7 @@ echo " * MD5: $ENABLED_MD5"
|
||||
echo " * RIPEMD: $ENABLED_RIPEMD"
|
||||
echo " * SHA: $ENABLED_SHA"
|
||||
echo " * SHA-224: $ENABLED_SHA224"
|
||||
echo " * SHA-384: $ENABLED_SHA384"
|
||||
echo " * SHA-512: $ENABLED_SHA512"
|
||||
echo " * SHA3: $ENABLED_SHA3"
|
||||
echo " * BLAKE2: $ENABLED_BLAKE2"
|
||||
|
12
src/ssl.c
12
src/ssl.c
@ -88,7 +88,7 @@
|
||||
#if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL)
|
||||
#include <wolfssl/openssl/ocsp.h>
|
||||
#endif /* WITH_STUNNEL */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
#endif
|
||||
#if defined(WOLFCRYPT_HAVE_SRP) && !defined(NO_SHA256) \
|
||||
@ -13706,13 +13706,13 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
||||
mdlen = WC_SHA256_DIGEST_SIZE;
|
||||
} else
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
if (XSTRNCMP(evp_md, "SHA384", 6) == 0) {
|
||||
type = WC_SHA384;
|
||||
mdlen = WC_SHA384_DIGEST_SIZE;
|
||||
} else
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
if (XSTRNCMP(evp_md, "SHA512", 6) == 0) {
|
||||
type = WC_SHA512;
|
||||
mdlen = WC_SHA512_DIGEST_SIZE;
|
||||
@ -24830,13 +24830,13 @@ int wolfSSL_HMAC_CTX_copy(WOLFSSL_HMAC_CTX* des, WOLFSSL_HMAC_CTX* src)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
XMEMCPY(&des->hmac.hash.sha384, &src->hmac.hash.sha384,
|
||||
sizeof(wc_Sha384));
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
XMEMCPY(&des->hmac.hash.sha512, &src->hmac.hash.sha512,
|
||||
sizeof(wc_Sha512));
|
||||
@ -24911,12 +24911,12 @@ static int _HMAC_Init(Hmac* hmac, int type, void* heap)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
ret = wc_InitSha384(&hmac->hash.sha384);
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
ret = wc_InitSha512(&hmac->hash.sha512);
|
||||
break;
|
||||
@ -29721,7 +29721,7 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
|
||||
}
|
||||
#endif /* ! NO_SHA256 */
|
||||
|
||||
#if defined(WOLFSSL_SHA384) && defined(WOLFSSL_SHA512)
|
||||
#ifdef WOLFSSL_SHA384
|
||||
/* One shot SHA384 hash of message.
|
||||
*
|
||||
* d message to hash
|
||||
@ -29766,7 +29766,7 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
|
||||
return (unsigned char*)dig;
|
||||
}
|
||||
}
|
||||
#endif /* defined(WOLFSSL_SHA384) && defined(WOLFSSL_SHA512) */
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
|
||||
|
||||
#if defined(WOLFSSL_SHA512)
|
||||
|
@ -17662,7 +17662,7 @@ static void test_wolfSSL_HMAC(void)
|
||||
AssertNotNull(HMAC(EVP_sha224(), key, (int)sizeof(key), NULL, 0, hash, &len));
|
||||
AssertIntEQ(len, (int)WC_SHA224_DIGEST_SIZE);
|
||||
#endif
|
||||
#if defined(OPENSSL_EXTRA) && (defined(WOLFSSL_SHA384) && defined(WOLFSSL_SHA512))
|
||||
#if defined(OPENSSL_EXTRA) && defined(WOLFSSL_SHA384)
|
||||
len = 0;
|
||||
AssertNotNull(HMAC(EVP_sha384(), key, (int)sizeof(key), NULL, 0, hash, &len));
|
||||
AssertIntEQ(len, (int)WC_SHA384_DIGEST_SIZE);
|
||||
@ -18414,7 +18414,6 @@ static void test_wolfSSL_HMAC_CTX(void)
|
||||
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
AssertIntEQ((digestSz = test_HMAC_CTX_helper(EVP_sha384(), digest)), 48);
|
||||
AssertIntEQ(XMEMCMP("\x9E\xCB\x07\x0C\x11\x76\x3F\x23\xC3\x25\x0E\xC4\xB7"
|
||||
@ -18423,6 +18422,7 @@ static void test_wolfSSL_HMAC_CTX(void)
|
||||
"\xCD\xFB\xC2\xCC\x9F\x2B\xC5\x41\xAB",
|
||||
digest, digestSz), 0);
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
AssertIntEQ((digestSz = test_HMAC_CTX_helper(EVP_sha512(), digest)), 64);
|
||||
AssertIntEQ(XMEMCMP("\xD4\x21\x0C\x8B\x60\x6F\xF4\xBF\x07\x2F\x26\xCC\xAD"
|
||||
"\xBC\x06\x0B\x34\x78\x8B\x4F\xD6\xC0\x42\xF1\x33\x10"
|
||||
@ -18518,7 +18518,7 @@ static void test_wolfSSL_SHA(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_SHA384) && defined(WOLFSSL_SHA512)
|
||||
#if defined(WOLFSSL_SHA384)
|
||||
{
|
||||
const unsigned char in[] = "abc";
|
||||
unsigned char expected[] = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b\xb5\xa0\x3d\x69\x9a\xc6\x50"
|
||||
|
@ -92,12 +92,12 @@ enum wc_HashType wc_HashTypeConvert(int hashType)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
eHashType = WC_HASH_TYPE_SHA384;
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
eHashType = WC_HASH_TYPE_SHA512;
|
||||
break;
|
||||
@ -343,7 +343,7 @@ int wc_HashGetBlockSize(enum wc_HashType hash_type)
|
||||
#endif
|
||||
break;
|
||||
case WC_HASH_TYPE_SHA384:
|
||||
#if defined(WOLFSSL_SHA512) && defined(WOLFSSL_SHA384)
|
||||
#ifdef WOLFSSL_SHA384
|
||||
block_size = WC_SHA384_BLOCK_SIZE;
|
||||
#endif
|
||||
break;
|
||||
@ -431,7 +431,7 @@ int wc_Hash(enum wc_HashType hash_type, const byte* data,
|
||||
#endif
|
||||
break;
|
||||
case WC_HASH_TYPE_SHA384:
|
||||
#if defined(WOLFSSL_SHA512) && defined(WOLFSSL_SHA384)
|
||||
#ifdef WOLFSSL_SHA384
|
||||
ret = wc_Sha384Hash(data, data_len, hash);
|
||||
#endif
|
||||
break;
|
||||
@ -822,42 +822,42 @@ int wc_HashFinal(wc_HashAlg* hash, enum wc_HashType type, byte* out)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if defined(WOLFSSL_SHA384)
|
||||
int wc_Sha384Hash(const byte* data, word32 len, byte* hash)
|
||||
{
|
||||
int ret = 0;
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
wc_Sha384* sha384;
|
||||
#else
|
||||
wc_Sha384 sha384[1];
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
sha384 = (wc_Sha384*)XMALLOC(sizeof(wc_Sha384), NULL,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (sha384 == NULL)
|
||||
return MEMORY_E;
|
||||
#endif
|
||||
|
||||
if ((ret = wc_InitSha384(sha384)) != 0) {
|
||||
WOLFSSL_MSG("InitSha384 failed");
|
||||
}
|
||||
else {
|
||||
if ((ret = wc_Sha384Update(sha384, data, len)) != 0) {
|
||||
WOLFSSL_MSG("Sha384Update failed");
|
||||
}
|
||||
else if ((ret = wc_Sha384Final(sha384, hash)) != 0) {
|
||||
WOLFSSL_MSG("Sha384Final failed");
|
||||
}
|
||||
wc_Sha384Free(sha384);
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(sha384, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
#if defined(WOLFSSL_SHA384)
|
||||
int wc_Sha384Hash(const byte* data, word32 len, byte* hash)
|
||||
{
|
||||
int ret = 0;
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
wc_Sha384* sha384;
|
||||
#else
|
||||
wc_Sha384 sha384[1];
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
sha384 = (wc_Sha384*)XMALLOC(sizeof(wc_Sha384), NULL,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (sha384 == NULL)
|
||||
return MEMORY_E;
|
||||
#endif
|
||||
|
||||
if ((ret = wc_InitSha384(sha384)) != 0) {
|
||||
WOLFSSL_MSG("InitSha384 failed");
|
||||
}
|
||||
else {
|
||||
if ((ret = wc_Sha384Update(sha384, data, len)) != 0) {
|
||||
WOLFSSL_MSG("Sha384Update failed");
|
||||
}
|
||||
else if ((ret = wc_Sha384Final(sha384, hash)) != 0) {
|
||||
WOLFSSL_MSG("Sha384Final failed");
|
||||
}
|
||||
wc_Sha384Free(sha384);
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(sha384, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
|
@ -157,12 +157,12 @@ int wc_HmacSizeByType(int type)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
ret = WC_SHA384_DIGEST_SIZE;
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
ret = WC_SHA512_DIGEST_SIZE;
|
||||
break;
|
||||
@ -230,12 +230,12 @@ int _InitHmac(Hmac* hmac, int type, void* heap)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
ret = wc_InitSha384(&hmac->hash.sha384);
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
ret = wc_InitSha512(&hmac->hash.sha512);
|
||||
break;
|
||||
@ -397,7 +397,6 @@ int wc_HmacSetKey(Hmac* hmac, int type, const byte* key, word32 length)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
hmac_block_size = WC_SHA384_BLOCK_SIZE;
|
||||
@ -418,6 +417,7 @@ int wc_HmacSetKey(Hmac* hmac, int type, const byte* key, word32 length)
|
||||
}
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
hmac_block_size = WC_SHA512_BLOCK_SIZE;
|
||||
if (length <= WC_SHA512_BLOCK_SIZE) {
|
||||
@ -604,13 +604,13 @@ static int HmacKeyInnerHash(Hmac* hmac)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
ret = wc_Sha384Update(&hmac->hash.sha384, (byte*)hmac->ipad,
|
||||
WC_SHA384_BLOCK_SIZE);
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
ret = wc_Sha512Update(&hmac->hash.sha512, (byte*)hmac->ipad,
|
||||
WC_SHA512_BLOCK_SIZE);
|
||||
@ -706,12 +706,12 @@ int wc_HmacUpdate(Hmac* hmac, const byte* msg, word32 length)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
ret = wc_Sha384Update(&hmac->hash.sha384, msg, length);
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
ret = wc_Sha512Update(&hmac->hash.sha512, msg, length);
|
||||
break;
|
||||
@ -850,7 +850,6 @@ int wc_HmacFinal(Hmac* hmac, byte* hash)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
ret = wc_Sha384Final(&hmac->hash.sha384, (byte*)hmac->innerHash);
|
||||
@ -867,6 +866,7 @@ int wc_HmacFinal(Hmac* hmac, byte* hash)
|
||||
ret = wc_Sha384Final(&hmac->hash.sha384, hash);
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
ret = wc_Sha512Final(&hmac->hash.sha512, (byte*)hmac->innerHash);
|
||||
if (ret != 0)
|
||||
@ -1027,12 +1027,12 @@ void wc_HmacFree(Hmac* hmac)
|
||||
break;
|
||||
#endif /* !NO_SHA256 */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_SHA384:
|
||||
wc_Sha384Free(&hmac->hash.sha384);
|
||||
break;
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_SHA512:
|
||||
wc_Sha512Free(&hmac->hash.sha512);
|
||||
break;
|
||||
|
@ -619,12 +619,12 @@ static int RsaMGF(int type, byte* seed, word32 seedSz, byte* out,
|
||||
ret = RsaMGF1(WC_HASH_TYPE_SHA256, seed, seedSz, out, outSz, heap);
|
||||
break;
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
case WC_MGF1SHA384:
|
||||
ret = RsaMGF1(WC_HASH_TYPE_SHA384, seed, seedSz, out, outSz, heap);
|
||||
break;
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
case WC_MGF1SHA512:
|
||||
ret = RsaMGF1(WC_HASH_TYPE_SHA512, seed, seedSz, out, outSz, heap);
|
||||
break;
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/settings.h>
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
|
||||
#if defined(HAVE_FIPS) && \
|
||||
defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)
|
||||
@ -53,44 +53,47 @@
|
||||
#if defined(HAVE_FIPS) && \
|
||||
(!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2))
|
||||
|
||||
int wc_InitSha512(wc_Sha512* sha)
|
||||
{
|
||||
if (sha == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
return InitSha512_fips(sha);
|
||||
}
|
||||
int wc_InitSha512_ex(wc_Sha512* sha, void* heap, int devId)
|
||||
{
|
||||
(void)heap;
|
||||
(void)devId;
|
||||
if (sha == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
return InitSha512_fips(sha);
|
||||
}
|
||||
int wc_Sha512Update(wc_Sha512* sha, const byte* data, word32 len)
|
||||
{
|
||||
if (sha == NULL || (data == NULL && len > 0)) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
int wc_InitSha512(wc_Sha512* sha)
|
||||
{
|
||||
if (sha == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
return Sha512Update_fips(sha, data, len);
|
||||
}
|
||||
int wc_Sha512Final(wc_Sha512* sha, byte* out)
|
||||
{
|
||||
if (sha == NULL || out == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
return InitSha512_fips(sha);
|
||||
}
|
||||
int wc_InitSha512_ex(wc_Sha512* sha, void* heap, int devId)
|
||||
{
|
||||
(void)heap;
|
||||
(void)devId;
|
||||
if (sha == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
return InitSha512_fips(sha);
|
||||
}
|
||||
int wc_Sha512Update(wc_Sha512* sha, const byte* data, word32 len)
|
||||
{
|
||||
if (sha == NULL || (data == NULL && len > 0)) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
return Sha512Final_fips(sha, out);
|
||||
}
|
||||
void wc_Sha512Free(wc_Sha512* sha)
|
||||
{
|
||||
(void)sha;
|
||||
/* Not supported in FIPS */
|
||||
}
|
||||
return Sha512Update_fips(sha, data, len);
|
||||
}
|
||||
int wc_Sha512Final(wc_Sha512* sha, byte* out)
|
||||
{
|
||||
if (sha == NULL || out == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
return Sha512Final_fips(sha, out);
|
||||
}
|
||||
void wc_Sha512Free(wc_Sha512* sha)
|
||||
{
|
||||
(void)sha;
|
||||
/* Not supported in FIPS */
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_SHA384) || defined(HAVE_AESGCM)
|
||||
int wc_InitSha384(wc_Sha384* sha)
|
||||
@ -186,6 +189,8 @@
|
||||
/* functions defined in wolfcrypt/src/port/caam/caam_sha.c */
|
||||
#else
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
static int InitSha512(wc_Sha512* sha512)
|
||||
{
|
||||
if (sha512 == NULL)
|
||||
@ -207,10 +212,13 @@ static int InitSha512(wc_Sha512* sha512)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
/* Hardware Acceleration */
|
||||
#if defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
/*****
|
||||
Intel AVX1/AVX2 Macro Control Structure
|
||||
|
||||
@ -358,9 +366,13 @@ static int InitSha512(wc_Sha512* sha512)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
#else
|
||||
#define Transform_Sha512(sha512) _Transform_Sha512(sha512)
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
int wc_InitSha512_ex(wc_Sha512* sha512, void* heap, int devId)
|
||||
{
|
||||
int ret = 0;
|
||||
@ -388,6 +400,8 @@ static int InitSha512(wc_Sha512* sha512)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
#endif /* Hardware Acceleration */
|
||||
|
||||
static const word64 K512[80] = {
|
||||
@ -640,6 +654,8 @@ static WC_INLINE int Sha512Update(wc_Sha512* sha512, const byte* data, word32 le
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
int wc_Sha512Update(wc_Sha512* sha512, const byte* data, word32 len)
|
||||
{
|
||||
if (sha512 == NULL || (data == NULL && len > 0)) {
|
||||
@ -656,6 +672,9 @@ int wc_Sha512Update(wc_Sha512* sha512, const byte* data, word32 len)
|
||||
|
||||
return Sha512Update(sha512, data, len);
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
#endif /* WOLFSSL_IMX6_CAAM */
|
||||
|
||||
static WC_INLINE int Sha512Final(wc_Sha512* sha512)
|
||||
@ -725,6 +744,8 @@ static WC_INLINE int Sha512Final(wc_Sha512* sha512)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
int wc_Sha512FinalRaw(wc_Sha512* sha512, byte* hash)
|
||||
{
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
@ -2595,6 +2616,7 @@ static int Transform_Sha512_AVX2_RORX_Len(wc_Sha512* sha512, word32 len)
|
||||
#endif /* HAVE_INTEL_RORX */
|
||||
#endif /* HAVE_INTEL_AVX2 */
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
@ -2763,6 +2785,7 @@ void wc_Sha384Free(wc_Sha384* sha384)
|
||||
|
||||
#endif /* HAVE_FIPS */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
int wc_Sha512GetHash(wc_Sha512* sha512, byte* hash)
|
||||
{
|
||||
@ -2799,7 +2822,10 @@ int wc_Sha512Copy(wc_Sha512* src, wc_Sha512* dst)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
#ifdef WOLFSSL_SHA384
|
||||
|
||||
int wc_Sha384GetHash(wc_Sha384* sha384, byte* hash)
|
||||
{
|
||||
int ret;
|
||||
@ -2833,6 +2859,7 @@ int wc_Sha384Copy(wc_Sha384* src, wc_Sha384* dst)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* WOLFSSL_SHA384 */
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
#endif /* WOLFSSL_SHA512 || WOLFSSL_SHA384 */
|
||||
|
@ -84,6 +84,9 @@
|
||||
#ifdef HAVE_OCSP
|
||||
#include <wolfssl/ocsp.h>
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
#endif
|
||||
|
@ -146,22 +146,24 @@ WOLFSSL_API int wc_Md5Hash(const byte* data, word32 len, byte* hash);
|
||||
WOLFSSL_API int wc_ShaHash(const byte*, word32, byte*);
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SHA224
|
||||
#include <wolfssl/wolfcrypt/sha256.h>
|
||||
WOLFSSL_API int wc_Sha224Hash(const byte*, word32, byte*);
|
||||
#endif /* defined(WOLFSSL_SHA224) */
|
||||
|
||||
#ifndef NO_SHA256
|
||||
#include <wolfssl/wolfcrypt/sha256.h>
|
||||
WOLFSSL_API int wc_Sha256Hash(const byte*, word32, byte*);
|
||||
|
||||
#if defined(WOLFSSL_SHA224)
|
||||
WOLFSSL_API int wc_Sha224Hash(const byte*, word32, byte*);
|
||||
#endif /* defined(WOLFSSL_SHA224) */
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SHA384
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
WOLFSSL_API int wc_Sha384Hash(const byte*, word32, byte*);
|
||||
#endif /* defined(WOLFSSL_SHA384) */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#include <wolfssl/wolfcrypt/sha512.h>
|
||||
WOLFSSL_API int wc_Sha512Hash(const byte*, word32, byte*);
|
||||
|
||||
#if defined(WOLFSSL_SHA384)
|
||||
WOLFSSL_API int wc_Sha384Hash(const byte*, word32, byte*);
|
||||
#endif /* defined(WOLFSSL_SHA384) */
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -119,10 +119,10 @@ typedef union {
|
||||
#ifndef NO_SHA256
|
||||
wc_Sha256 sha256;
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
wc_Sha384 sha384;
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
wc_Sha512 sha512;
|
||||
#endif
|
||||
#ifdef HAVE_BLAKE2
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/types.h>
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
|
||||
|
||||
#if defined(HAVE_FIPS) && \
|
||||
defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)
|
||||
@ -38,11 +38,13 @@
|
||||
|
||||
#if defined(HAVE_FIPS) && \
|
||||
(!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2))
|
||||
#define wc_Sha512 Sha512
|
||||
#define WC_SHA512 SHA512
|
||||
#define WC_SHA512_BLOCK_SIZE SHA512_BLOCK_SIZE
|
||||
#define WC_SHA512_DIGEST_SIZE SHA512_DIGEST_SIZE
|
||||
#define WC_SHA512_PAD_SIZE SHA512_PAD_SIZE
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#define wc_Sha512 Sha512
|
||||
#define WC_SHA512 SHA512
|
||||
#define WC_SHA512_BLOCK_SIZE SHA512_BLOCK_SIZE
|
||||
#define WC_SHA512_DIGEST_SIZE SHA512_DIGEST_SIZE
|
||||
#define WC_SHA512_PAD_SIZE SHA512_PAD_SIZE
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
#ifdef WOLFSSL_SHA384
|
||||
#define wc_Sha384 Sha384
|
||||
#define WC_SHA384 SHA384
|
||||
@ -79,6 +81,8 @@
|
||||
#define SHA512_NOINLINE
|
||||
#endif
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
#if !defined(NO_OLD_SHA_NAMES)
|
||||
#define SHA512 WC_SHA512
|
||||
#endif
|
||||
@ -90,9 +94,13 @@
|
||||
#define SHA512_PAD_SIZE WC_SHA512_PAD_SIZE
|
||||
#endif
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
/* in bytes */
|
||||
enum {
|
||||
#ifdef WOLFSSL_SHA512
|
||||
WC_SHA512 = WC_HASH_TYPE_SHA512,
|
||||
#endif
|
||||
WC_SHA512_BLOCK_SIZE = 128,
|
||||
WC_SHA512_DIGEST_SIZE = 64,
|
||||
WC_SHA512_PAD_SIZE = 112
|
||||
@ -124,6 +132,8 @@ typedef struct wc_Sha512 {
|
||||
|
||||
#endif /* HAVE_FIPS */
|
||||
|
||||
#ifdef WOLFSSL_SHA512
|
||||
|
||||
WOLFSSL_API int wc_InitSha512(wc_Sha512*);
|
||||
WOLFSSL_API int wc_InitSha512_ex(wc_Sha512*, void*, int);
|
||||
WOLFSSL_API int wc_Sha512Update(wc_Sha512*, const byte*, word32);
|
||||
@ -134,6 +144,8 @@ WOLFSSL_API void wc_Sha512Free(wc_Sha512*);
|
||||
WOLFSSL_API int wc_Sha512GetHash(wc_Sha512*, byte*);
|
||||
WOLFSSL_API int wc_Sha512Copy(wc_Sha512* src, wc_Sha512* dst);
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
|
||||
#if defined(WOLFSSL_SHA384)
|
||||
|
||||
/* avoid redefinition of structs */
|
||||
@ -179,6 +191,6 @@ WOLFSSL_API int wc_Sha384Copy(wc_Sha384* src, wc_Sha384* dst);
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* WOLFSSL_SHA512 */
|
||||
#endif /* WOLFSSL_SHA512 || WOLFSSL_SHA384 */
|
||||
#endif /* WOLF_CRYPT_SHA512_H */
|
||||
|
||||
|
Reference in New Issue
Block a user