mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-08 18:50:51 +02:00
Merge pull request #9980 from anhu/sphincs_no_elseif
Fixes SPHINCS else-if chain key detection
This commit is contained in:
+25
-14
@@ -9670,9 +9670,10 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
|
||||
return MEMORY_E;
|
||||
|
||||
if (wc_sphincs_init(sphincs) == 0) {
|
||||
tmpIdx = 0;
|
||||
if (wc_sphincs_set_level_and_optim(sphincs, 1, FAST_VARIANT)
|
||||
== 0) {
|
||||
if ((*algoID == 0) &&
|
||||
(wc_sphincs_set_level_and_optim(sphincs, 1, FAST_VARIANT)
|
||||
== 0)) {
|
||||
tmpIdx = 0;
|
||||
if (wc_Sphincs_PrivateKeyDecode(key, &tmpIdx, sphincs,
|
||||
keySz) == 0) {
|
||||
*algoID = SPHINCS_FAST_LEVEL1k;
|
||||
@@ -9681,8 +9682,10 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
|
||||
WOLFSSL_MSG("Not Sphincs-fast Level 1 DER key");
|
||||
}
|
||||
}
|
||||
else if (wc_sphincs_set_level_and_optim(sphincs, 3, FAST_VARIANT)
|
||||
== 0) {
|
||||
if ((*algoID == 0) &&
|
||||
(wc_sphincs_set_level_and_optim(sphincs, 3, FAST_VARIANT)
|
||||
== 0)) {
|
||||
tmpIdx = 0;
|
||||
if (wc_Sphincs_PrivateKeyDecode(key, &tmpIdx, sphincs,
|
||||
keySz) == 0) {
|
||||
*algoID = SPHINCS_FAST_LEVEL3k;
|
||||
@@ -9691,8 +9694,10 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
|
||||
WOLFSSL_MSG("Not Sphincs-fast Level 3 DER key");
|
||||
}
|
||||
}
|
||||
else if (wc_sphincs_set_level_and_optim(sphincs, 5, FAST_VARIANT)
|
||||
== 0) {
|
||||
if ((*algoID == 0) &&
|
||||
(wc_sphincs_set_level_and_optim(sphincs, 5, FAST_VARIANT)
|
||||
== 0)) {
|
||||
tmpIdx = 0;
|
||||
if (wc_Sphincs_PrivateKeyDecode(key, &tmpIdx, sphincs,
|
||||
keySz) == 0) {
|
||||
*algoID = SPHINCS_FAST_LEVEL5k;
|
||||
@@ -9701,8 +9706,10 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
|
||||
WOLFSSL_MSG("Not Sphincs-fast Level 5 DER key");
|
||||
}
|
||||
}
|
||||
else if (wc_sphincs_set_level_and_optim(sphincs, 1, SMALL_VARIANT)
|
||||
== 0) {
|
||||
if ((*algoID == 0) &&
|
||||
(wc_sphincs_set_level_and_optim(sphincs, 1, SMALL_VARIANT)
|
||||
== 0)) {
|
||||
tmpIdx = 0;
|
||||
if (wc_Sphincs_PrivateKeyDecode(key, &tmpIdx, sphincs,
|
||||
keySz) == 0) {
|
||||
*algoID = SPHINCS_SMALL_LEVEL1k;
|
||||
@@ -9711,8 +9718,10 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
|
||||
WOLFSSL_MSG("Not Sphincs-small Level 1 DER key");
|
||||
}
|
||||
}
|
||||
else if (wc_sphincs_set_level_and_optim(sphincs, 3, SMALL_VARIANT)
|
||||
== 0) {
|
||||
if ((*algoID == 0) &&
|
||||
(wc_sphincs_set_level_and_optim(sphincs, 3, SMALL_VARIANT)
|
||||
== 0)) {
|
||||
tmpIdx = 0;
|
||||
if (wc_Sphincs_PrivateKeyDecode(key, &tmpIdx, sphincs,
|
||||
keySz) == 0) {
|
||||
*algoID = SPHINCS_SMALL_LEVEL3k;
|
||||
@@ -9721,8 +9730,10 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
|
||||
WOLFSSL_MSG("Not Sphincs-small Level 3 DER key");
|
||||
}
|
||||
}
|
||||
else if (wc_sphincs_set_level_and_optim(sphincs, 5, SMALL_VARIANT)
|
||||
== 0) {
|
||||
if ((*algoID == 0) &&
|
||||
(wc_sphincs_set_level_and_optim(sphincs, 5, SMALL_VARIANT)
|
||||
== 0)) {
|
||||
tmpIdx = 0;
|
||||
if (wc_Sphincs_PrivateKeyDecode(key, &tmpIdx, sphincs,
|
||||
keySz) == 0) {
|
||||
*algoID = SPHINCS_SMALL_LEVEL5k;
|
||||
@@ -9731,7 +9742,7 @@ int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, word32* oidSz,
|
||||
WOLFSSL_MSG("Not Sphincs-small Level 5 DER key");
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (*algoID == 0) {
|
||||
WOLFSSL_MSG("GetKeyOID sphincs initialization failed");
|
||||
}
|
||||
wc_sphincs_free(sphincs);
|
||||
|
||||
Reference in New Issue
Block a user