Merge pull request #8345 from JacobBarthelmeh/python_update

Python update to 3.12.6
This commit is contained in:
David Garske
2025-01-24 11:37:10 -08:00
committed by GitHub
20 changed files with 1009 additions and 338 deletions
+3
View File
@@ -645,6 +645,9 @@ const char* wc_GetErrorString(int error)
case PBKDF2_KAT_FIPS_E:
return "wolfCrypt FIPS PBKDF2 Known Answer Test Failure";
case WC_KEY_MISMATCH_E:
return "key values mismatch";
case DEADLOCK_AVERTED_E:
return "Deadlock averted -- retry the call";
+281 -162
View File
@@ -52,67 +52,67 @@ static const struct s_ent {
const char *name;
} md_tbl[] = {
#ifndef NO_MD4
{WC_HASH_TYPE_MD4, WC_NID_md4, "MD4"},
{WC_HASH_TYPE_MD4, WC_NID_md4, WC_SN_md4},
#endif /* NO_MD4 */
#ifndef NO_MD5
{WC_HASH_TYPE_MD5, WC_NID_md5, "MD5"},
{WC_HASH_TYPE_MD5, WC_NID_md5, WC_SN_md5},
#endif /* NO_MD5 */
#ifndef NO_SHA
{WC_HASH_TYPE_SHA, WC_NID_sha1, "SHA1"},
{WC_HASH_TYPE_SHA, WC_NID_sha1, WC_SN_sha1},
{WC_HASH_TYPE_SHA, WC_NID_sha1, "SHA"}, /* Leave for backwards compatibility */
#endif /* NO_SHA */
#ifdef WOLFSSL_SHA224
{WC_HASH_TYPE_SHA224, WC_NID_sha224, "SHA224"},
{WC_HASH_TYPE_SHA224, WC_NID_sha224, WC_SN_sha224},
#endif /* WOLFSSL_SHA224 */
#ifndef NO_SHA256
{WC_HASH_TYPE_SHA256, WC_NID_sha256, "SHA256"},
{WC_HASH_TYPE_SHA256, WC_NID_sha256, WC_SN_sha256},
#endif
#ifdef WOLFSSL_SHA384
{WC_HASH_TYPE_SHA384, WC_NID_sha384, "SHA384"},
{WC_HASH_TYPE_SHA384, WC_NID_sha384, WC_SN_sha384},
#endif /* WOLFSSL_SHA384 */
#ifdef WOLFSSL_SHA512
{WC_HASH_TYPE_SHA512, WC_NID_sha512, "SHA512"},
{WC_HASH_TYPE_SHA512, WC_NID_sha512, WC_SN_sha512},
#endif /* WOLFSSL_SHA512 */
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224)
{WC_HASH_TYPE_SHA512_224, WC_NID_sha512_224, "SHA512_224"},
{WC_HASH_TYPE_SHA512_224, WC_NID_sha512_224, WC_SN_sha512_224},
#endif /* WOLFSSL_SHA512 && !WOLFSSL_NOSHA512_224 */
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256)
{WC_HASH_TYPE_SHA512_256, WC_NID_sha512_256, "SHA512_256"},
{WC_HASH_TYPE_SHA512_256, WC_NID_sha512_256, WC_SN_sha512_256},
#endif /* WOLFSSL_SHA512 && !WOLFSSL_NOSHA512_256 */
#ifndef WOLFSSL_NOSHA3_224
{WC_HASH_TYPE_SHA3_224, WC_NID_sha3_224, "SHA3_224"},
{WC_HASH_TYPE_SHA3_224, WC_NID_sha3_224, WC_SN_sha3_224},
#endif
#ifndef WOLFSSL_NOSHA3_256
{WC_HASH_TYPE_SHA3_256, WC_NID_sha3_256, "SHA3_256"},
{WC_HASH_TYPE_SHA3_256, WC_NID_sha3_256, WC_SN_sha3_256},
#endif
#ifndef WOLFSSL_NOSHA3_384
{WC_HASH_TYPE_SHA3_384, WC_NID_sha3_384, "SHA3_384"},
{WC_HASH_TYPE_SHA3_384, WC_NID_sha3_384, WC_SN_sha3_384},
#endif
#ifndef WOLFSSL_NOSHA3_512
{WC_HASH_TYPE_SHA3_512, WC_NID_sha3_512, "SHA3_512"},
{WC_HASH_TYPE_SHA3_512, WC_NID_sha3_512, WC_SN_sha3_512},
#endif
#ifdef WOLFSSL_SM3
{WC_HASH_TYPE_SM3, WC_NID_sm3, "SM3"},
{WC_HASH_TYPE_SM3, WC_NID_sm3, WC_SN_sm3},
#endif /* WOLFSSL_SHA512 */
#ifdef HAVE_BLAKE2
{WC_HASH_TYPE_BLAKE2B, WC_NID_blake2b512, "BLAKE2B512"},
{WC_HASH_TYPE_BLAKE2B, WC_NID_blake2b512, WC_SN_blake2b512},
#endif
#ifdef HAVE_BLAKE2S
{WC_HASH_TYPE_BLAKE2S, WC_NID_blake2s256, "BLAKE2S256"},
{WC_HASH_TYPE_BLAKE2S, WC_NID_blake2s256, WC_SN_blake2s256},
#endif
#ifdef WOLFSSL_SHAKE128
{WC_HASH_TYPE_SHAKE128, WC_NID_shake128, "SHAKE128"},
{WC_HASH_TYPE_SHAKE128, WC_NID_shake128, WC_SN_shake128},
#endif
#ifdef WOLFSSL_SHAKE256
{WC_HASH_TYPE_SHAKE256, WC_NID_shake256, "SHAKE256"},
{WC_HASH_TYPE_SHAKE256, WC_NID_shake256, WC_SN_shake256},
#endif
{WC_HASH_TYPE_NONE, 0, NULL}
};
@@ -4262,69 +4262,69 @@ static int wolfssl_evp_md_to_hash_type(const WOLFSSL_EVP_MD *type,
int ret = 0;
#ifndef NO_SHA256
if (XSTRCMP(type, "SHA256") == 0) {
if (XSTRCMP(type, WC_SN_sha256) == 0) {
*hashType = WC_SHA256;
}
else
#endif
#ifndef NO_SHA
if ((XSTRCMP(type, "SHA") == 0) || (XSTRCMP(type, "SHA1") == 0)) {
if ((XSTRCMP(type, "SHA") == 0) || (XSTRCMP(type, WC_SN_sha1) == 0)) {
*hashType = WC_SHA;
}
else
#endif /* NO_SHA */
#ifdef WOLFSSL_SHA224
if (XSTRCMP(type, "SHA224") == 0) {
if (XSTRCMP(type, WC_SN_sha224) == 0) {
*hashType = WC_SHA224;
}
else
#endif
#ifdef WOLFSSL_SHA384
if (XSTRCMP(type, "SHA384") == 0) {
if (XSTRCMP(type, WC_SN_sha384) == 0) {
*hashType = WC_SHA384;
}
else
#endif
#ifdef WOLFSSL_SHA512
if (XSTRCMP(type, "SHA512") == 0) {
if (XSTRCMP(type, WC_SN_sha512) == 0) {
*hashType = WC_SHA512;
}
else
#endif
#ifdef WOLFSSL_SHA3
#ifndef WOLFSSL_NOSHA3_224
if (XSTRCMP(type, "SHA3_224") == 0) {
if (XSTRCMP(type, WC_SN_sha3_224) == 0) {
*hashType = WC_SHA3_224;
}
else
#endif
#ifndef WOLFSSL_NOSHA3_256
if (XSTRCMP(type, "SHA3_256") == 0) {
if (XSTRCMP(type, WC_SN_sha3_256) == 0) {
*hashType = WC_SHA3_256;
}
else
#endif
#ifndef WOLFSSL_NOSHA3_384
if (XSTRCMP(type, "SHA3_384") == 0) {
if (XSTRCMP(type, WC_SN_sha3_384) == 0) {
*hashType = WC_SHA3_384;
}
else
#endif
#ifndef WOLFSSL_NOSHA3_512
if (XSTRCMP(type, "SHA3_512") == 0) {
if (XSTRCMP(type, WC_SN_sha3_512) == 0) {
*hashType = WC_SHA3_512;
}
else
#endif
#endif
#ifdef WOLFSSL_SM3
if (XSTRCMP(type, "SM3") == 0) {
if (XSTRCMP(type, WC_SN_sm3) == 0) {
*hashType = WC_SM3;
}
else
#endif
#ifndef NO_MD5
if (XSTRCMP(type, "MD5") == 0) {
if (XSTRCMP(type, WC_SN_md5) == 0) {
*hashType = WC_MD5;
}
else
@@ -9367,22 +9367,22 @@ int wolfSSL_EVP_MD_pkey_type(const WOLFSSL_EVP_MD* type)
WOLFSSL_ENTER("wolfSSL_EVP_MD_pkey_type");
if (type != NULL) {
if (XSTRCMP(type, "MD5") == 0) {
if (XSTRCMP(type, WC_SN_md5) == 0) {
ret = WC_NID_md5WithRSAEncryption;
}
else if (XSTRCMP(type, "SHA1") == 0) {
else if (XSTRCMP(type, WC_SN_sha1) == 0) {
ret = WC_NID_sha1WithRSAEncryption;
}
else if (XSTRCMP(type, "SHA224") == 0) {
else if (XSTRCMP(type, WC_SN_sha224) == 0) {
ret = WC_NID_sha224WithRSAEncryption;
}
else if (XSTRCMP(type, "SHA256") == 0) {
else if (XSTRCMP(type, WC_SN_sha256) == 0) {
ret = WC_NID_sha256WithRSAEncryption;
}
else if (XSTRCMP(type, "SHA384") == 0) {
else if (XSTRCMP(type, WC_SN_sha384) == 0) {
ret = WC_NID_sha384WithRSAEncryption;
}
else if (XSTRCMP(type, "SHA512") == 0) {
else if (XSTRCMP(type, WC_SN_sha512) == 0) {
ret = WC_NID_sha512WithRSAEncryption;
}
}
@@ -9936,54 +9936,44 @@ static const struct alias {
const char *alias;
} digest_alias_tbl[] =
{
{"MD4", "md4"},
{"MD5", "md5"},
{"SHA1", "sha1"},
{"SHA1", "SHA"},
{"SHA224", "sha224"},
{"SHA256", "sha256"},
{"SHA384", "sha384"},
{"SHA512", "sha512"},
{"SHA512_224", "sha512_224"},
{"SHA3_224", "sha3_224"},
{"SHA3_256", "sha3_256"},
{"SHA3_384", "sha3_384"},
{"SHA3_512", "sha3_512"},
{"SM3", "sm3"},
{"BLAKE2B512", "blake2b512"},
{"BLAKE2S256", "blake2s256"},
{"SHAKE128", "shake128"},
{"SHAKE256", "shake256"},
{WC_SN_md4, "md4"},
{WC_SN_md5, "md5"},
{WC_SN_sha1, "sha1"},
{WC_SN_sha1, "SHA"},
{WC_SN_sha224, "sha224"},
{WC_SN_sha256, "sha256"},
{WC_SN_sha384, "sha384"},
{WC_SN_sha512, "sha512"},
{WC_SN_sha512_224, "sha512_224"},
{WC_SN_sha3_224, "sha3_224"},
{WC_SN_sha3_256, "sha3_256"},
{WC_SN_sha3_384, "sha3_384"},
{WC_SN_sha3_512, "sha3_512"},
{WC_SN_sm3, "sm3"},
{WC_SN_blake2b512, "blake2b512"},
{WC_SN_blake2s256, "blake2s256"},
{WC_SN_shake128, "shake128"},
{WC_SN_shake256, "shake256"},
{ NULL, NULL}
};
const WOLFSSL_EVP_MD *wolfSSL_EVP_get_digestbyname(const char *name)
{
char nameUpper[15]; /* 15 bytes should be enough for any name */
size_t i;
const struct alias *al;
const struct s_ent *ent;
for (i = 0; i < sizeof(nameUpper) && name[i] != '\0'; i++) {
nameUpper[i] = (char)XTOUPPER((unsigned char) name[i]);
}
if (i < sizeof(nameUpper))
nameUpper[i] = '\0';
else
return NULL;
name = nameUpper;
for (al = digest_alias_tbl; al->name != NULL; al++)
for (al = digest_alias_tbl; al->name != NULL; al++) {
if(XSTRCMP(name, al->alias) == 0) {
name = al->name;
break;
}
}
for (ent = md_tbl; ent->name != NULL; ent++)
for (ent = md_tbl; ent->name != NULL; ent++) {
if(XSTRCMP(name, ent->name) == 0) {
return (WOLFSSL_EVP_MD *)ent->name;
}
}
return NULL;
}
@@ -10017,7 +10007,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_md4(void)
{
WOLFSSL_ENTER("EVP_md4");
return wolfSSL_EVP_get_digestbyname("MD4");
return wolfSSL_EVP_get_digestbyname(WC_SN_md4);
}
#endif /* !NO_MD4 */
@@ -10028,7 +10018,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_md5(void)
{
WOLFSSL_ENTER("EVP_md5");
return wolfSSL_EVP_get_digestbyname("MD5");
return wolfSSL_EVP_get_digestbyname(WC_SN_md5);
}
#endif /* !NO_MD5 */
@@ -10040,8 +10030,8 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
*/
const WOLFSSL_EVP_MD* wolfSSL_EVP_blake2b512(void)
{
WOLFSSL_ENTER("EVP_blake2b512");
return wolfSSL_EVP_get_digestbyname("BLAKE2b512");
WOLFSSL_ENTER("wolfSSL_EVP_blake2b512");
return wolfSSL_EVP_get_digestbyname(WC_SN_blake2b512);
}
#endif
@@ -10080,7 +10070,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha1(void)
{
WOLFSSL_ENTER("EVP_sha1");
return wolfSSL_EVP_get_digestbyname("SHA1");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha1);
}
#endif /* NO_SHA */
@@ -10089,7 +10079,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha224(void)
{
WOLFSSL_ENTER("EVP_sha224");
return wolfSSL_EVP_get_digestbyname("SHA224");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha224);
}
#endif /* WOLFSSL_SHA224 */
@@ -10098,7 +10088,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha256(void)
{
WOLFSSL_ENTER("EVP_sha256");
return wolfSSL_EVP_get_digestbyname("SHA256");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha256);
}
#ifdef WOLFSSL_SHA384
@@ -10106,7 +10096,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha384(void)
{
WOLFSSL_ENTER("EVP_sha384");
return wolfSSL_EVP_get_digestbyname("SHA384");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha384);
}
#endif /* WOLFSSL_SHA384 */
@@ -10116,7 +10106,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha512(void)
{
WOLFSSL_ENTER("EVP_sha512");
return wolfSSL_EVP_get_digestbyname("SHA512");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha512);
}
#ifndef WOLFSSL_NOSHA512_224
@@ -10124,7 +10114,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha512_224(void)
{
WOLFSSL_ENTER("EVP_sha512_224");
return wolfSSL_EVP_get_digestbyname("SHA512_224");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha512_224);
}
#endif /* !WOLFSSL_NOSHA512_224 */
@@ -10133,7 +10123,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha512_256(void)
{
WOLFSSL_ENTER("EVP_sha512_256");
return wolfSSL_EVP_get_digestbyname("SHA512_256");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha512_256);
}
#endif /* !WOLFSSL_NOSHA512_224 */
@@ -10145,7 +10135,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_224(void)
{
WOLFSSL_ENTER("EVP_sha3_224");
return wolfSSL_EVP_get_digestbyname("SHA3_224");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha3_224);
}
#endif /* WOLFSSL_NOSHA3_224 */
@@ -10154,7 +10144,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_256(void)
{
WOLFSSL_ENTER("EVP_sha3_256");
return wolfSSL_EVP_get_digestbyname("SHA3_256");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha3_256);
}
#endif /* WOLFSSL_NOSHA3_256 */
@@ -10162,7 +10152,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_384(void)
{
WOLFSSL_ENTER("EVP_sha3_384");
return wolfSSL_EVP_get_digestbyname("SHA3_384");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha3_384);
}
#endif /* WOLFSSL_NOSHA3_384 */
@@ -10170,7 +10160,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_512(void)
{
WOLFSSL_ENTER("EVP_sha3_512");
return wolfSSL_EVP_get_digestbyname("SHA3_512");
return wolfSSL_EVP_get_digestbyname(WC_SN_sha3_512);
}
#endif /* WOLFSSL_NOSHA3_512 */
@@ -10196,7 +10186,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
const WOLFSSL_EVP_MD* wolfSSL_EVP_sm3(void)
{
WOLFSSL_ENTER("EVP_sm3");
return wolfSSL_EVP_get_digestbyname("SM3");
return wolfSSL_EVP_get_digestbyname(WC_SN_sm3);
}
#endif /* WOLFSSL_SM3 */
@@ -10482,17 +10472,21 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
/* Not an error since an unused struct could be free'd or
* reset. */
break;
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
wc_Shake128_Free(&ctx->hash.digest.shake);
break;
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
wc_Shake256_Free(&ctx->hash.digest.shake);
break;
#endif
case WC_HASH_TYPE_MD2:
case WC_HASH_TYPE_MD4:
case WC_HASH_TYPE_MD5_SHA:
case WC_HASH_TYPE_BLAKE2B:
case WC_HASH_TYPE_BLAKE2S:
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
#endif
default:
ret = WOLFSSL_FAILURE;
break;
@@ -10526,76 +10520,92 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
XMEMSET(&ctx->hash.digest, 0, sizeof(WOLFSSL_Hasher));
} else
#ifndef NO_SHA
if ((XSTRCMP(md, "SHA") == 0) || (XSTRCMP(md, "SHA1") == 0)) {
if ((XSTRCMP(md, "SHA") == 0) || (XSTRCMP(md, WC_SN_sha1) == 0)) {
ret = wolfSSL_SHA_Init(&(ctx->hash.digest.sha));
} else
#endif
#ifndef NO_SHA256
if (XSTRCMP(md, "SHA256") == 0) {
if (XSTRCMP(md, WC_SN_sha256) == 0) {
ret = wolfSSL_SHA256_Init(&(ctx->hash.digest.sha256));
} else
#endif
#ifdef WOLFSSL_SHA224
if (XSTRCMP(md, "SHA224") == 0) {
if (XSTRCMP(md, WC_SN_sha224) == 0) {
ret = wolfSSL_SHA224_Init(&(ctx->hash.digest.sha224));
} else
#endif
#ifdef WOLFSSL_SHA384
if (XSTRCMP(md, "SHA384") == 0) {
if (XSTRCMP(md, WC_SN_sha384) == 0) {
ret = wolfSSL_SHA384_Init(&(ctx->hash.digest.sha384));
} else
#endif
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) && \
defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224)
if (XSTRCMP(md, "SHA512_224") == 0) {
if (XSTRCMP(md, WC_SN_sha512_224) == 0) {
ret = wolfSSL_SHA512_224_Init(&(ctx->hash.digest.sha512));
} else
#endif
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) && \
defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256)
if (XSTRCMP(md, "SHA512_256") == 0) {
if (XSTRCMP(md, WC_SN_sha512_256) == 0) {
ret = wolfSSL_SHA512_256_Init(&(ctx->hash.digest.sha512));
} else
#endif
#ifdef WOLFSSL_SHA512
if (XSTRCMP(md, "SHA512") == 0) {
if (XSTRCMP(md, WC_SN_sha512) == 0) {
ret = wolfSSL_SHA512_Init(&(ctx->hash.digest.sha512));
} else
#endif
#ifndef NO_MD4
if (XSTRCMP(md, "MD4") == 0) {
if (XSTRCMP(md, WC_SN_md4) == 0) {
wolfSSL_MD4_Init(&(ctx->hash.digest.md4));
} else
#endif
#ifndef NO_MD5
if (XSTRCMP(md, "MD5") == 0) {
if (XSTRCMP(md, WC_SN_md5) == 0) {
ret = wolfSSL_MD5_Init(&(ctx->hash.digest.md5));
} else
#endif
#ifdef WOLFSSL_SHA3
#ifndef WOLFSSL_NOSHA3_224
if (XSTRCMP(md, "SHA3_224") == 0) {
if (XSTRCMP(md, WC_SN_sha3_224) == 0) {
ret = wolfSSL_SHA3_224_Init(&(ctx->hash.digest.sha3_224));
} else
#endif
#ifndef WOLFSSL_NOSHA3_256
if (XSTRCMP(md, "SHA3_256") == 0) {
if (XSTRCMP(md, WC_SN_sha3_256) == 0) {
ret = wolfSSL_SHA3_256_Init(&(ctx->hash.digest.sha3_256));
} else
#endif
#ifndef WOLFSSL_NOSHA3_384
if (XSTRCMP(md, "SHA3_384") == 0) {
if (XSTRCMP(md, WC_SN_sha3_384) == 0) {
ret = wolfSSL_SHA3_384_Init(&(ctx->hash.digest.sha3_384));
} else
#endif
#ifndef WOLFSSL_NOSHA3_512
if (XSTRCMP(md, "SHA3_512") == 0) {
if (XSTRCMP(md, WC_SN_sha3_512) == 0) {
ret = wolfSSL_SHA3_512_Init(&(ctx->hash.digest.sha3_512));
} else
#endif
#ifdef WOLFSSL_SHAKE128
if (XSTRCMP(md, WC_SN_shake128) == 0) {
if (wc_InitShake128(&(ctx->hash.digest.shake), NULL,
INVALID_DEVID) != 0) {
ret = WOLFSSL_FAILURE;
}
} else
#endif
#ifdef WOLFSSL_SHAKE256
if (XSTRCMP(md, WC_SN_shake256) == 0) {
if (wc_InitShake256(&(ctx->hash.digest.shake), NULL,
INVALID_DEVID) != 0) {
ret = WOLFSSL_FAILURE;
}
} else
#endif
#endif
#ifdef WOLFSSL_SM3
if (XSTRCMP(md, "SM3") == 0) {
if (XSTRCMP(md, WC_SN_sm3) == 0) {
ret = wc_InitSm3(&ctx->hash.digest.sm3, NULL, INVALID_DEVID);
if (ret == 0) {
ret = WOLFSSL_SUCCESS;
@@ -10722,18 +10732,29 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
ret = WOLFSSL_FAILURE;
}
break;
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
if (wc_Shake128_Update(&ctx->hash.digest.shake,
(const byte*)data, (word32)sz) == 0) {
ret = WOLFSSL_SUCCESS;
}
break;
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
if (wc_Shake256_Update(&ctx->hash.digest.shake,
(const byte*)data, (word32)sz) == 0) {
ret = WOLFSSL_SUCCESS;
}
break;
#endif
case WC_HASH_TYPE_NONE:
case WC_HASH_TYPE_MD2:
case WC_HASH_TYPE_MD5_SHA:
case WC_HASH_TYPE_BLAKE2B:
case WC_HASH_TYPE_BLAKE2S:
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
#endif
default:
return WOLFSSL_FAILURE;
}
@@ -10742,14 +10763,11 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
}
/* WOLFSSL_SUCCESS on ok */
int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md,
unsigned int* s)
static int wolfSSL_EVP_DigestFinal_Common(WOLFSSL_EVP_MD_CTX* ctx,
unsigned char* md, unsigned int* s, enum wc_HashType macType)
{
int ret = WC_NO_ERR_TRACE(WOLFSSL_FAILURE);
enum wc_HashType macType;
WOLFSSL_ENTER("EVP_DigestFinal");
macType = EvpMd2MacType(wolfSSL_EVP_MD_CTX_md(ctx));
switch (macType) {
case WC_HASH_TYPE_MD4:
#ifndef NO_MD4
@@ -10847,18 +10865,26 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
}
if (s) *s = WC_SM3_DIGEST_SIZE;
break;
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
if (wc_Shake128_Final(&ctx->hash.digest.shake, md, *s) == 0) {
ret = WOLFSSL_SUCCESS;
}
break;
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
if (wc_Shake256_Final(&ctx->hash.digest.shake, md, *s) == 0) {
ret = WOLFSSL_SUCCESS;
}
break;
#endif
case WC_HASH_TYPE_NONE:
case WC_HASH_TYPE_MD2:
case WC_HASH_TYPE_MD5_SHA:
case WC_HASH_TYPE_BLAKE2B:
case WC_HASH_TYPE_BLAKE2S:
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
#endif
default:
return WOLFSSL_FAILURE;
}
@@ -10866,6 +10892,59 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
return ret;
}
int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md,
unsigned int* s)
{
enum wc_HashType macType;
WOLFSSL_ENTER("wolfSSL_EVP_DigestFinal");
macType = EvpMd2MacType(wolfSSL_EVP_MD_CTX_md(ctx));
switch (macType) {
case WC_HASH_TYPE_MD4:
case WC_HASH_TYPE_MD5:
case WC_HASH_TYPE_SHA:
case WC_HASH_TYPE_SHA224:
case WC_HASH_TYPE_SHA256:
case WC_HASH_TYPE_SHA384:
case WC_HASH_TYPE_SHA512:
#ifndef WOLFSSL_NOSHA512_224
case WC_HASH_TYPE_SHA512_224:
#endif /* !WOLFSSL_NOSHA512_224 */
#ifndef WOLFSSL_NOSHA512_256
case WC_HASH_TYPE_SHA512_256:
#endif /* !WOLFSSL_NOSHA512_256 */
case WC_HASH_TYPE_SHA3_224:
case WC_HASH_TYPE_SHA3_256:
case WC_HASH_TYPE_SHA3_384:
case WC_HASH_TYPE_SHA3_512:
#ifdef WOLFSSL_SM3
case WC_HASH_TYPE_SM3:
#endif
case WC_HASH_TYPE_NONE:
case WC_HASH_TYPE_MD2:
case WC_HASH_TYPE_MD5_SHA:
case WC_HASH_TYPE_BLAKE2B:
case WC_HASH_TYPE_BLAKE2S:
break;
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
*s = 16; /* if mixing up XOF with plain digest 128 bit is
* default for SHAKE128 */
break;
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
*s = 32; /* if mixing up XOF with plain digest 256 bit is
* default for SHAKE256 */
break;
#endif
default:
return WOLFSSL_FAILURE;
}
return wolfSSL_EVP_DigestFinal_Common(ctx, md, s, macType);
}
/* WOLFSSL_SUCCESS on ok */
int wolfSSL_EVP_DigestFinal_ex(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md,
unsigned int* s)
@@ -10874,6 +10953,46 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type)
return wolfSSL_EVP_DigestFinal(ctx, md, s);
}
/* XOF stands for extendable-output functions. This is used for algos such
* as SHAKE256.
*
* returns 1 (WOLFSSL_SUCCESS) on success and 0 (WOLFSSL_FAILURE) on fail */
int wolfSSL_EVP_DigestFinalXOF(WOLFSSL_EVP_MD_CTX *ctx, unsigned char *md,
size_t sz)
{
unsigned int len;
enum wc_HashType macType;
WOLFSSL_ENTER("wolfSSL_EVP_DigestFinalXOF");
len = (unsigned int)sz;
macType = EvpMd2MacType(wolfSSL_EVP_MD_CTX_md(ctx));
return wolfSSL_EVP_DigestFinal_Common(ctx, md, &len, macType);
}
unsigned long wolfSSL_EVP_MD_flags(const WOLFSSL_EVP_MD *md)
{
enum wc_HashType macType;
macType = EvpMd2MacType(md);
switch ((int)macType) {
case WC_HASH_TYPE_BLAKE2B:
case WC_HASH_TYPE_BLAKE2S:
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE128)
case WC_HASH_TYPE_SHAKE128:
#endif
#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_SHAKE256)
case WC_HASH_TYPE_SHAKE256:
#endif
return EVP_MD_FLAG_XOF;
default:
return 0;
}
}
void wolfSSL_EVP_cleanup(void)
{
/* nothing to do here */
@@ -10932,64 +11051,64 @@ int wolfSSL_EVP_MD_block_size(const WOLFSSL_EVP_MD* type)
}
#ifndef NO_SHA
if ((XSTRCMP(type, "SHA") == 0) || (XSTRCMP(type, "SHA1") == 0)) {
if ((XSTRCMP(type, "SHA") == 0) || (XSTRCMP(type, WC_SN_sha1) == 0)) {
return WC_SHA_BLOCK_SIZE;
} else
#endif
#ifndef NO_SHA256
if (XSTRCMP(type, "SHA256") == 0) {
if (XSTRCMP(type, WC_SN_sha256) == 0) {
return WC_SHA256_BLOCK_SIZE;
} else
#endif
#ifndef NO_MD4
if (XSTRCMP(type, "MD4") == 0) {
return WC_MD4_BLOCK_SIZE;
if (XSTRCMP(type, WC_SN_md4) == 0) {
return MD4_BLOCK_SIZE;
} else
#endif
#ifndef NO_MD5
if (XSTRCMP(type, "MD5") == 0) {
if (XSTRCMP(type, WC_SN_md5) == 0) {
return WC_MD5_BLOCK_SIZE;
} else
#endif
#ifdef WOLFSSL_SHA224
if (XSTRCMP(type, "SHA224") == 0) {
if (XSTRCMP(type, WC_SN_sha224) == 0) {
return WC_SHA224_BLOCK_SIZE;
} else
#endif
#ifdef WOLFSSL_SHA384
if (XSTRCMP(type, "SHA384") == 0) {
if (XSTRCMP(type, WC_SN_sha384) == 0) {
return WC_SHA384_BLOCK_SIZE;
} else
#endif
#ifdef WOLFSSL_SHA512
if (XSTRCMP(type, "SHA512") == 0) {
if (XSTRCMP(type, WC_SN_sha512) == 0) {
return WC_SHA512_BLOCK_SIZE;
} else
#endif
#ifdef WOLFSSL_SHA3
#ifndef WOLFSSL_NOSHA3_224
if (XSTRCMP(type, "SHA3_224") == 0) {
if (XSTRCMP(type, WC_SN_sha3_224) == 0) {
return WC_SHA3_224_BLOCK_SIZE;
} else
#endif
#ifndef WOLFSSL_NOSHA3_256
if (XSTRCMP(type, "SHA3_256") == 0) {
if (XSTRCMP(type, WC_SN_sha3_256) == 0) {
return WC_SHA3_256_BLOCK_SIZE;
} else
#endif
#ifndef WOLFSSL_NOSHA3_384
if (XSTRCMP(type, "SHA3_384") == 0) {
if (XSTRCMP(type, WC_SN_sha3_384) == 0) {
return WC_SHA3_384_BLOCK_SIZE;
} else
#endif
#ifndef WOLFSSL_NOSHA3_512
if (XSTRCMP(type, "SHA3_512") == 0) {
if (XSTRCMP(type, WC_SN_sha3_512) == 0) {
return WC_SHA3_512_BLOCK_SIZE;
}
#endif
#endif /* WOLFSSL_SHA3 */
#ifdef WOLFSSL_SM3
if (XSTRCMP(type, "SM3") == 0) {
if (XSTRCMP(type, WC_SN_sm3) == 0) {
return WC_SM3_BLOCK_SIZE;
} else
#endif
@@ -11007,74 +11126,74 @@ int wolfSSL_EVP_MD_size(const WOLFSSL_EVP_MD* type)
}
#ifndef NO_SHA
if ((XSTRCMP(type, "SHA") == 0) || (XSTRCMP(type, "SHA1") == 0)) {
if ((XSTRCMP(type, "SHA") == 0) || (XSTRCMP(type, WC_SN_sha1) == 0)) {
return WC_SHA_DIGEST_SIZE;
} else
#endif
#ifndef NO_SHA256
if (XSTRCMP(type, "SHA256") == 0) {
if (XSTRCMP(type, WC_SN_sha256) == 0) {
return WC_SHA256_DIGEST_SIZE;
} else
#endif
#ifndef NO_MD4
if (XSTRCMP(type, "MD4") == 0) {
return WC_MD4_DIGEST_SIZE;
if (XSTRCMP(type, WC_SN_md4) == 0) {
return MD4_DIGEST_SIZE;
} else
#endif
#ifndef NO_MD5
if (XSTRCMP(type, "MD5") == 0) {
if (XSTRCMP(type, WC_SN_md5) == 0) {
return WC_MD5_DIGEST_SIZE;
} else
#endif
#ifdef WOLFSSL_SHA224
if (XSTRCMP(type, "SHA224") == 0) {
if (XSTRCMP(type, WC_SN_sha224) == 0) {
return WC_SHA224_DIGEST_SIZE;
} else
#endif
#ifdef WOLFSSL_SHA384
if (XSTRCMP(type, "SHA384") == 0) {
if (XSTRCMP(type, WC_SN_sha384) == 0) {
return WC_SHA384_DIGEST_SIZE;
} else
#endif
#ifdef WOLFSSL_SHA512
if (XSTRCMP(type, "SHA512") == 0) {
if (XSTRCMP(type, WC_SN_sha512) == 0) {
return WC_SHA512_DIGEST_SIZE;
} else
#ifndef WOLFSSL_NOSHA512_224
if (XSTRCMP(type, "SHA512_224") == 0) {
if (XSTRCMP(type, WC_SN_sha512_224) == 0) {
return WC_SHA512_224_DIGEST_SIZE;
} else
#endif
#ifndef WOLFSSL_NOSHA512_256
if (XSTRCMP(type, "SHA512_256") == 0) {
if (XSTRCMP(type, WC_SN_sha512_256) == 0) {
return WC_SHA512_256_DIGEST_SIZE;
} else
#endif
#endif
#ifdef WOLFSSL_SHA3
#ifndef WOLFSSL_NOSHA3_224
if (XSTRCMP(type, "SHA3_224") == 0) {
if (XSTRCMP(type, WC_SN_sha3_224) == 0) {
return WC_SHA3_224_DIGEST_SIZE;
} else
#endif
#ifndef WOLFSSL_NOSHA3_256
if (XSTRCMP(type, "SHA3_256") == 0) {
if (XSTRCMP(type, WC_SN_sha3_256) == 0) {
return WC_SHA3_256_DIGEST_SIZE;
} else
#endif
#ifndef WOLFSSL_NOSHA3_384
if (XSTRCMP(type, "SHA3_384") == 0) {
if (XSTRCMP(type, WC_SN_sha3_384) == 0) {
return WC_SHA3_384_DIGEST_SIZE;
} else
#endif
#ifndef WOLFSSL_NOSHA3_512
if (XSTRCMP(type, "SHA3_512") == 0) {
if (XSTRCMP(type, WC_SN_sha3_512) == 0) {
return WC_SHA3_512_DIGEST_SIZE;
} else
#endif
#endif /* WOLFSSL_SHA3 */
#ifdef WOLFSSL_SM3
if (XSTRCMP(type, "SM3") == 0) {
if (XSTRCMP(type, WC_SN_sm3) == 0) {
return WC_SM3_DIGEST_SIZE;
}
#endif
@@ -12267,64 +12386,64 @@ int wolfSSL_EVP_get_hashinfo(const WOLFSSL_EVP_MD* evp,
}
#ifndef NO_SHA
if ((XSTRCMP("SHA", evp) == 0) || (XSTRCMP("SHA1", evp) == 0)) {
if ((XSTRCMP("SHA", evp) == 0) || (XSTRCMP(WC_SN_sha1, evp) == 0)) {
hash = WC_HASH_TYPE_SHA;
} else
#endif
#ifdef WOLFSSL_SHA224
if (XSTRCMP("SHA224", evp) == 0) {
if (XSTRCMP(WC_SN_sha224, evp) == 0) {
hash = WC_HASH_TYPE_SHA224;
} else
#endif
#ifndef NO_SHA256
if (XSTRCMP("SHA256", evp) == 0) {
if (XSTRCMP(WC_SN_sha256, evp) == 0) {
hash = WC_HASH_TYPE_SHA256;
} else
#endif
#ifdef WOLFSSL_SHA384
if (XSTRCMP("SHA384", evp) == 0) {
if (XSTRCMP(WC_SN_sha384, evp) == 0) {
hash = WC_HASH_TYPE_SHA384;
} else
#endif
#ifdef WOLFSSL_SHA512
if (XSTRCMP("SHA512", evp) == 0) {
if (XSTRCMP(WC_SN_sha512, evp) == 0) {
hash = WC_HASH_TYPE_SHA512;
} else
#ifndef WOLFSSL_NOSHA512_224
if (XSTRCMP("SHA512_224", evp) == 0) {
if (XSTRCMP(WC_SN_sha512_224, evp) == 0) {
hash = WC_HASH_TYPE_SHA512_224;
} else
#endif
#ifndef WOLFSSL_NOSHA512_256
if (XSTRCMP("SHA512_256", evp) == 0) {
if (XSTRCMP(WC_SN_sha512_256, evp) == 0) {
hash = WC_HASH_TYPE_SHA512_256;
} else
#endif
#endif
#ifdef WOLFSSL_SHA3
#ifndef WOLFSSL_NOSHA3_224
if (XSTRCMP("SHA3_224", evp) == 0) {
if (XSTRCMP(WC_SN_sha3_224, evp) == 0) {
hash = WC_HASH_TYPE_SHA3_224;
} else
#endif
#ifndef WOLFSSL_NOSHA3_256
if (XSTRCMP("SHA3_256", evp) == 0) {
if (XSTRCMP(WC_SN_sha3_256, evp) == 0) {
hash = WC_HASH_TYPE_SHA3_256;
} else
#endif
#ifndef WOLFSSL_NOSHA3_384
if (XSTRCMP("SHA3_384", evp) == 0) {
if (XSTRCMP(WC_SN_sha3_384, evp) == 0) {
hash = WC_HASH_TYPE_SHA3_384;
} else
#endif
#ifndef WOLFSSL_NOSHA3_512
if (XSTRCMP("SHA3_512", evp) == 0) {
if (XSTRCMP(WC_SN_sha3_512, evp) == 0) {
hash = WC_HASH_TYPE_SHA3_512;
} else
#endif
#endif /* WOLFSSL_SHA3 */
#ifdef WOLFSSL_SM3
if (XSTRCMP("SM3", evp) == 0) {
if (XSTRCMP(WC_SN_sm3, evp) == 0) {
hash = WC_HASH_TYPE_SM3;
} else
#endif
@@ -12334,12 +12453,12 @@ int wolfSSL_EVP_get_hashinfo(const WOLFSSL_EVP_MD* evp,
} else
#endif
#ifndef NO_MD4
if (XSTRCMP("MD4", evp) == 0) {
if (XSTRCMP(WC_SN_md4, evp) == 0) {
hash = WC_HASH_TYPE_MD4;
} else
#endif
#ifndef NO_MD5
if (XSTRCMP("MD5", evp) == 0) {
if (XSTRCMP(WC_SN_md5, evp) == 0) {
hash = WC_HASH_TYPE_MD5;
} else
#endif