Skip to content

Commit 38b3c3e

Browse files
claudeFrauschi
authored andcommitted
Replace liboqs SPHINCS+ with native SLH-DSA in certificate layer
Replace the liboqs-based pre-standardization SPHINCS+ implementation with the native FIPS 205 SLH-DSA implementation across the certificate/ASN.1/X.509 layers. All liboqs SPHINCS+ code is removed. This PR enables SLH-DSA for certificate chain authentication (CA certificates signed with SLH-DSA, certificate verification). TLS 1.3 entity authentication via CertificateVerify with SLH-DSA will be added in a follow-up PR. Follows RFC 9909 (X.509 Algorithm Identifiers for SLH-DSA). Changes: - New DER codec for SLH-DSA (PrivateKeyDecode, PublicKeyDecode, KeyToDer, PrivateKeyToDer, PublicKeyToDer) with RFC 9909 compliant encoding (bare OCTET STRING, no nested wrapper) and OID auto- detection across all 6 SHAKE parameter sets - 12 standardized NIST OIDs (6 SHA2 + 6 SHAKE) per RFC 9909 - Complete ASN.1 layer replacement (~500 lines in asn.c) - X.509 public key handling in x509.c - OID collision mechanism cleaned up (NIST OIDs don't collide) - DER round-trip test for all compiled-in parameter sets - SLH-DSA test cert chain generated with OpenSSL 3.5 - All build system/IDE project files updated - SPHINCS+ source files, headers, and test data removed https://claude.ai/code/session_019gqvW3ZMKGGyi6zCRNPDYV
1 parent b44d8c6 commit 38b3c3e

59 files changed

Lines changed: 1377 additions & 2579 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.wolfssl_known_macro_extras

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,6 @@ WOLFSSL_NO_SERVER_GROUPS_EXT
835835
WOLFSSL_NO_SESSION_STATS
836836
WOLFSSL_NO_SIGALG
837837
WOLFSSL_NO_SOCKADDR_UN
838-
WOLFSSL_NO_SPHINCS
839838
WOLFSSL_NO_STRICT_CIPHER_SUITE
840839
WOLFSSL_NO_TICKET_EXPIRE
841840
WOLFSSL_NO_TRUSTED_CERTS_VERIFY

IDE/Espressif/ESP-IDF/examples/template/components/wolfssl/component.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/siphash.o
245245
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm2.o
246246
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm3.o
247247
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm4.o
248-
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sphincs.o
249248
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm32.o
250249
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm64.o
251250
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_armthumb.o

IDE/Espressif/ESP-IDF/examples/wolfssl_benchmark/components/wolfssl/component.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/siphash.o
245245
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm2.o
246246
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm3.o
247247
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm4.o
248-
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sphincs.o
249248
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm32.o
250249
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm64.o
251250
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_armthumb.o

IDE/Espressif/ESP-IDF/examples/wolfssl_client/components/wolfssl/component.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/siphash.o
245245
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm2.o
246246
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm3.o
247247
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm4.o
248-
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sphincs.o
249248
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm32.o
250249
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm64.o
251250
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_armthumb.o

IDE/Espressif/ESP-IDF/examples/wolfssl_server/components/wolfssl/component.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/siphash.o
245245
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm2.o
246246
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm3.o
247247
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm4.o
248-
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sphincs.o
249248
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm32.o
250249
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm64.o
251250
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_armthumb.o

IDE/Espressif/ESP-IDF/examples/wolfssl_test/components/wolfssl/component.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/siphash.o
245245
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm2.o
246246
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm3.o
247247
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sm4.o
248-
COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sphincs.o
249248
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm32.o
250249
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_arm64.o
251250
# COMPONENT_OBJS += $(WOLFSSL_ROOT)/wolfcrypt/src/sp_armthumb.o

IDE/INTIME-RTOS/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,6 @@ INCL_TARGS := wolfssl/callbacks.h \
320320
wolfssl/wolfcrypt/sm4.h \
321321
wolfssl/wolfcrypt/sp.h \
322322
wolfssl/wolfcrypt/sp_int.h \
323-
wolfssl/wolfcrypt/sphincs.h \
324323
wolfssl/wolfcrypt/srp.h \
325324
wolfssl/wolfcrypt/tfm.h \
326325
wolfssl/wolfcrypt/types.h \

IDE/INTIME-RTOS/libwolfssl.vcxproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@
8181
<ClCompile Include="..\..\wolfcrypt\src\sha3.c" />
8282
<ClCompile Include="..\..\wolfcrypt\src\sha512.c" />
8383
<ClCompile Include="..\..\wolfcrypt\src\signature.c" />
84-
<ClCompile Include="..\..\wolfcrypt\src\sphincs.c" />
8584
<ClCompile Include="..\..\wolfcrypt\src\sp_c32.c" />
8685
<ClCompile Include="..\..\wolfcrypt\src\sp_c64.c" />
8786
<ClCompile Include="..\..\wolfcrypt\src\sp_int.c" />

IDE/INTIME-RTOS/wolfssl-lib.vcxproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@
108108
<ClCompile Include="..\..\wolfcrypt\src\sm2.c" />
109109
<ClCompile Include="..\..\wolfcrypt\src\sm3.c" />
110110
<ClCompile Include="..\..\wolfcrypt\src\sm4.c" />
111-
<ClCompile Include="..\..\wolfcrypt\src\sphincs.c" />
112111
<ClCompile Include="..\..\wolfcrypt\src\sp_arm32.c" />
113112
<ClCompile Include="..\..\wolfcrypt\src\sp_arm64.c" />
114113
<ClCompile Include="..\..\wolfcrypt\src\sp_armthumb.c" />

IDE/MPLABX16/wolfssl.X/nbproject/configurations.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@
8181
<itemPath>../../../wolfcrypt/src/sp_c32.c</itemPath>
8282
<itemPath>../../../wolfcrypt/src/sp_c64.c</itemPath>
8383
<itemPath>../../../wolfcrypt/src/sp_int.c</itemPath>
84-
<itemPath>../../../wolfcrypt/src/sphincs.c</itemPath>
8584
<itemPath>../../../wolfcrypt/src/srp.c</itemPath>
8685
<itemPath>../../../wolfcrypt/src/tfm.c</itemPath>
8786
<itemPath>../../../wolfcrypt/src/wc_encrypt.c</itemPath>

0 commit comments

Comments
 (0)