Skip to content

Commit b35a177

Browse files
committed
CI fixes, oe timers made portable out of boundary, unified kernel and user space returns
1 parent 843559a commit b35a177

27 files changed

Lines changed: 433 additions & 478 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ fipsv2.c
8080
ctaocrypt/benchmark/benchmark
8181
ctaocrypt/test/testctaocrypt
8282
wolfcrypt/benchmark/benchmark
83+
wolfcrypt/benchmark/fips_cast_bench
8384
wolfcrypt/test/testwolfcrypt
8485
examples/async/async_client
8586
examples/async/async_server

.wolfssl_known_macro_extras

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ CONFIG_ARCH_POSIX
7171
CONFIG_ARCH_TEGRA
7272
CONFIG_ARM
7373
CONFIG_ARM64
74+
CONFIG_ARM64_SME
7475
CONFIG_BOARD_NATIVE_POSIX
7576
CONFIG_BOARD_NATIVE_SIM
7677
CONFIG_COMPILER_OPTIMIZATION_DEFAULT
@@ -144,6 +145,7 @@ CONFIG_IDF_TARGET_ESP32S3
144145
CONFIG_IDF_TARGET_ESP8266
145146
CONFIG_IDF_TARGET_ESP8684
146147
CONFIG_KASAN
148+
CONFIG_KERNEL_MODE_NEON
147149
CONFIG_KMSAN
148150
CONFIG_KPROBES
149151
CONFIG_MAIN_TASK_STACK_SIZE
@@ -190,7 +192,6 @@ CONFIG_WOLFSSL_ASN_ALLOW_0_SERIAL
190192
CONFIG_WOLFSSL_CERTIFICATE_BUNDLE
191193
CONFIG_WOLFSSL_CERTIFICATE_BUNDLE_DEFAULT_NONE
192194
CONFIG_WOLFSSL_CHACHA_POLY
193-
CONFIG_WOLFSSL_CRYPTO_ONLY
194195
CONFIG_WOLFSSL_CURVE25519
195196
CONFIG_WOLFSSL_DTLS
196197
CONFIG_WOLFSSL_ECC
@@ -233,6 +234,7 @@ CONFIG_WOLFTPM
233234
CONFIG_WOLFTPM_EXAMPLE_NAME_ESPRESSIF
234235
CONFIG_X86
235236
CONFIG_X86_32
237+
CONFIG_X86_64
236238
CONV_WITH_DIV
237239
CPA_CY_API_VERSION_NUM_MAJOR
238240
CPA_CY_API_VERSION_NUM_MINOR
@@ -518,8 +520,6 @@ NO_TLSX_PSKKEM_PLAIN_ANNOUNCE
518520
NO_VAES_SUPPORT
519521
NO_VERIFY_OID
520522
NO_WC_DHGENERATEPUBLIC
521-
NO_WC_SHE_GETUID
522-
NO_WC_SHE_IMPORT_M123
523523
NO_WC_SHE_LOADKEY
524524
NO_WC_SSIZE_TYPE
525525
NO_WOLFSSL_ALLOC_ALIGN
@@ -735,7 +735,6 @@ WC_AESXTS_STREAM_NO_REQUEST_ACCOUNTING
735735
WC_AES_BS_WORD_SIZE
736736
WC_AES_GCM_ALLOW_NONSTANDARD_TAG_LENGTH
737737
WC_AES_GCM_DEC_AUTH_EARLY
738-
WC_ALLOW_ECC_ZERO_HASH
739738
WC_ASN_HASH_SHA256
740739
WC_ASN_RUNTIME_DATE_CHECK_CONTROL
741740
WC_ASYNC_ENABLE_ECC_KEYGEN
@@ -763,27 +762,32 @@ WC_BLINDING_NO_RNG_ACKNOWLEDGE_WEAKNESS
763762
WC_CACHE_RESISTANT_BASE64_TABLE
764763
WC_DISABLE_RADIX_ZERO_PAD
765764
WC_DRBG_BANKREF
766-
WC_FIPS_AESGCM_NO_SHORT_NONCES
767-
WC_FIPS_AESGCM_ONE_SHOT_EXT_IV_ALLOWED
768765
WC_FIPS_ED25519CTX_NOT_APPROVED
769766
WC_FIPS_RSA_VERIFY_MIN_2048
770767
WC_FLAG_DONT_USE_AESNI
771768
WC_FORCE_LINUXKM_FORTIFY_SOURCE
769+
WC_GRB_MEASURE
772770
WC_HASH_CUSTOM_MAX_BLOCK_SIZE
773771
WC_HASH_CUSTOM_MAX_DIGEST_SIZE
774772
WC_HASH_CUSTOM_MIN_DIGEST_SIZE
773+
WC_HAVE_FIPS_INDICATOR
775774
WC_INIT_ERROR_WHEN_CONTENDED
775+
WC_LINUXKM_NO_NESTED_VECTOR_SAVE
776776
WC_LINUXKM_NO_USE_HEAP_WRAPPERS
777+
WC_LINUXKM_SVR_ASSERT_PINNED
778+
WC_LINUXKM_SVR_COUNT_NESTED
779+
WC_LINUXKM_SVR_SELFTEST_D16_ONLY_CONTROL
780+
WC_LINUXKM_SVR_SELFTEST_FPSIMD_ONLY_CONTROL
781+
WC_LINUXKM_SVR_SELFTEST_NEGATIVE_CONTROL
782+
WC_LINUXKM_SVR_SLOT_RECLAIM
777783
WC_MLDSA_NO_ASM
778784
WC_MLKEM_KERNEL_ASM
779785
WC_NO_ASYNC_SLEEP
780786
WC_NO_RNG_SIMPLE
781787
WC_NO_STATIC_ASSERT
782788
WC_NO_VERBOSE_RNG
783789
WC_PKCS11_FIND_WITH_ID_ONLY
784-
WC_PKCS12_PBKDF_USING_MP_API
785790
WC_PROTECT_ENCRYPTED_MEM
786-
WC_PUF_HELPER_COMPACT
787791
WC_PUF_SHA3
788792
WC_RNG_BANK_NO_DEFAULT_SUPPORT
789793
WC_RNG_BLOCKING
@@ -792,7 +796,8 @@ WC_RSA_NO_FERMAT_CHECK
792796
WC_RTL8735B_NO_DERIVE_CACHE
793797
WC_RWLOCK_OPS_INLINE
794798
WC_SHA2_SMALL_STACK
795-
WC_SHE_SW_DEFAULT
799+
WC_SHA3_NO_ARM_BASE_BLOCK
800+
WC_SHA3_NO_PPC64_BASE_BLOCK
796801
WC_SKIP_INCLUDED_C_FILES
797802
WC_SLHDSA_KERNEL_ASM
798803
WC_SLHDSA_NO_ASM
@@ -804,7 +809,6 @@ WC_STM32_RNG_DIAG
804809
WC_STM32_RNG_NO_NIST_INIT
805810
WC_STM32_SAES_DIAG
806811
WC_STRICT_SIG
807-
WC_USE_PIE_FENCEPOSTS_FOR_FIPS
808812
WC_WANT_FLAG_DONT_USE_VECTOR_OPS
809813
WIFIESPAT
810814
WIFI_101
@@ -834,10 +838,8 @@ WOLFSSL_ALLOW_TLS_SHA1
834838
WOLFSSL_ALTERNATIVE_DOWNGRADE
835839
WOLFSSL_ALT_NAMES_NO_REV
836840
WOLFSSL_ARM32_BUILD
837-
WOLFSSL_ARM32_PRIVILEGE_MODE
838841
WOLFSSL_ARMASM_NEON_NO_TABLE_LOOKUP
839842
WOLFSSL_ARM_ARCH_NEON_64BIT
840-
WOLFSSL_ASCON_UNROLL
841843
WOLFSSL_ASN_EXTRA
842844
WOLFSSL_ASN_TEMPLATE_TYPE_CHECK
843845
WOLFSSL_ATECC508
@@ -861,13 +863,10 @@ WOLFSSL_CAAM_NO_BLACK_KEY
861863
WOLFSSL_CALLBACKS
862864
WOLFSSL_CHACHA20_AVX512_ALWAYS
863865
WOLFSSL_CHACHA20_AVX512_NEVER
864-
WOLFSSL_CHACHA20_POLY1305_FUSED
865866
WOLFSSL_CHACHA20_POLY1305_FUSED_ALWAYS
866-
WOLFSSL_CHACHA20_POLY1305_FUSED_IFMA
867867
WOLFSSL_CHACHA20_POLY1305_FUSED_IFMA_ALWAYS
868868
WOLFSSL_CHACHA20_POLY1305_FUSED_IFMA_NEVER
869869
WOLFSSL_CHACHA20_POLY1305_FUSED_NEVER
870-
WOLFSSL_CHACHA20_POLY1305_SHORT
871870
WOLFSSL_CHECK_DESKEY
872871
WOLFSSL_CHIBIOS
873872
WOLFSSL_CLANG_TIDY
@@ -878,11 +877,7 @@ WOLFSSL_DEBUG_TRACE_ERROR_CODES_SUPPORT
878877
WOLFSSL_DILITHIUM_VERIFY_SMALLEST_MEM
879878
WOLFSSL_DISABLE_EARLY_SANITY_CHECKS
880879
WOLFSSL_DRBG_SHA256
881-
WOLFSSL_DTLS13_ECHO_LEGACY_SESSION_ID
882-
WOLFSSL_DTLS13_NO_HRR_ON_RESUME
883880
WOLFSSL_DTLS_DISALLOW_FUTURE
884-
WOLFSSL_DTLS_NO_HVR_ON_RESUME
885-
WOLFSSL_DTLS_RECORDS_CAN_SPAN_DATAGRAMS
886881
WOLFSSL_DTLS_RESEND_ONLY_TIMEOUT
887882
WOLFSSL_DUMP_MEMIO_STREAM
888883
WOLFSSL_DUP_CERTPOL
@@ -893,15 +888,13 @@ WOLFSSL_ECC_NO_SMALL_STACK
893888
WOLFSSL_ECC_SIGALG_PARAMS_NULL_ALLOWED
894889
WOLFSSL_ECDSA_MATCH_HASH
895890
WOLFSSL_ECDSA_SET_K_ONE_LOOP
896-
WOLFSSL_ECIES_STATIC_GCM_NONCE
897891
WOLFSSL_EC_POINT_CMP_JACOBIAN
898892
WOLFSSL_ED448_NO_LARGE_CODE
899893
WOLFSSL_EDDSA_CHECK_PRIV_ON_SIGN
900894
WOLFSSL_ESPWROOM32
901895
WOLFSSL_EVP_PRINT
902896
WOLFSSL_EXPORT_INT
903897
WOLFSSL_EXPORT_SPC_SZ
904-
WOLFSSL_EXTRA
905898
WOLFSSL_FALCON_NO_NTT_DSP
906899
WOLFSSL_FALCON_SIGN_STATS
907900
WOLFSSL_FORCE_OCSP_NONCE_CHECK
@@ -930,7 +923,6 @@ WOLFSSL_IMX6_CAAM_RNG
930923
WOLFSSL_IMXRT_DCP
931924
WOLFSSL_ISOTP
932925
WOLFSSL_KEEP_HOST_HEADER_PROBES
933-
WOLFSSL_KEIL
934926
WOLFSSL_KEIL_NET
935927
WOLFSSL_KYBER_NO_DECAPSULATE
936928
WOLFSSL_KYBER_NO_ENCAPSULATE
@@ -954,14 +946,12 @@ WOLFSSL_MLKEM_ASM_TEST
954946
WOLFSSL_MLKEM_INVNTT_UNROLL
955947
WOLFSSL_MLKEM_NO_MALLOC
956948
WOLFSSL_MLKEM_NTT_UNROLL
957-
WOLFSSL_ML_KEM_USE_OLD_IDS
958949
WOLFSSL_MONT_RED_CT
959950
WOLFSSL_MP_COND_COPY
960951
WOLFSSL_MP_INVMOD_CONSTANT_TIME
961952
WOLFSSL_MULTICIRCULATE_ALTNAMELIST
962953
WOLFSSL_NETX_DUO
963954
WOLFSSL_NEW_PRIME_CHECK
964-
WOLFSSL_NONBLOCK_OCSP
965955
WOLFSSL_NOSHA3_384
966956
WOLFSSL_NOT_WINDOWS_API
967957
WOLFSSL_NO_AES_KEY_SET_CHECK
@@ -971,7 +961,6 @@ WOLFSSL_NO_CHACHA20_POLY1305_FUSED_IFMA
971961
WOLFSSL_NO_CHACHA20_POLY1305_SHORT
972962
WOLFSSL_NO_CHACHA20_POLY1305_SMALL_ASM
973963
WOLFSSL_NO_CLIENT_CERT_ERROR
974-
WOLFSSL_NO_COPY_CERT
975964
WOLFSSL_NO_COPY_KEY
976965
WOLFSSL_NO_CRL_DATE_CHECK
977966
WOLFSSL_NO_CRL_NEXT_DATE
@@ -983,7 +972,6 @@ WOLFSSL_NO_DER_TO_PEM
983972
WOLFSSL_NO_DH186
984973
WOLFSSL_NO_DILITHIUM_LEGACY_GATES
985974
WOLFSSL_NO_DILITHIUM_LEGACY_NAMES
986-
WOLFSSL_NO_DTLS_SIZE_CHECK
987975
WOLFSSL_NO_ECDHX_SHARED_ZERO_CHECK
988976
WOLFSSL_NO_ETM_ALERT
989977
WOLFSSL_NO_FENCE
@@ -1013,7 +1001,6 @@ WOLFSSL_NRF51_AES
10131001
WOLFSSL_NXP_CASPER_ECC_MUL2ADD
10141002
WOLFSSL_NXP_CASPER_ECC_MULMOD
10151003
WOLFSSL_NXP_LPC55S6X
1016-
WOLFSSL_OCSP_SCREEN_RESPONDER
10171004
WOLFSSL_OLDTLS_AEAD_CIPHERSUITES
10181005
WOLFSSL_OLD_SET_CURVES_LIST
10191006
WOLFSSL_OLD_TIMINGPADVERIFY
@@ -1024,7 +1011,6 @@ WOLFSSL_PASSTHRU_ERR
10241011
WOLFSSL_PB
10251012
WOLFSSL_PEER_ADDRESS_CHANGES
10261013
WOLFSSL_PKCS11_RW_TOKENS
1027-
WOLFSSL_POLY1305_AVX512
10281014
WOLFSSL_POLY1305_AVX512_ALWAYS
10291015
WOLFSSL_POLY1305_AVX512_NEVER
10301016
WOLFSSL_POLY1305_IFMA_ALWAYS
@@ -1050,7 +1036,6 @@ WOLFSSL_RENESAS_RZN2L
10501036
WOLFSSL_RENESAS_TLS
10511037
WOLFSSL_RENESAS_TSIP_IAREWRX
10521038
WOLFSSL_REQUIRE_TCA
1053-
WOLFSSL_RISCV_ASM_INLINE
10541039
WOLFSSL_RISCV_ASM_NO_UNALIGNED
10551040
WOLFSSL_RNG_USE_FULL_SEED
10561041
WOLFSSL_RSA_CHECK_D_ON_DECRYPT
@@ -1081,7 +1066,6 @@ WOLFSSL_SILABS_TRNG
10811066
WOLFSSL_SLHDSA_FULL_HASH
10821067
WOLFSSL_SLHDSA_NO_VERIFY_ONLY
10831068
WOLFSSL_SNIFFER_NO_RECOVERY
1084-
WOLFSSL_SP_ARM32_UDIV
10851069
WOLFSSL_SP_FAST_NCT_EXPTMOD
10861070
WOLFSSL_SP_INT_SQR_VOLATILE
10871071
WOLFSSL_SSLKEYLOGFILE_USE_ENV
@@ -1109,7 +1093,6 @@ WOLFSSL_TINY_TLS13_NO_DEFAULT_CURVE
11091093
WOLFSSL_TI_CURRTIME
11101094
WOLFSSL_TLS13_DRAFT
11111095
WOLFSSL_TLS13_IGNORE_AEAD_LIMITS
1112-
WOLFSSL_TLS13_IGNORE_PT_ALERT_ON_ENC
11131096
WOLFSSL_TLS13_SHA512
11141097
WOLFSSL_TLS13_TICKET_BEFORE_FINISHED
11151098
WOLFSSL_TLSX_PQC_MLKEM_STORE_PRIV_KEY
@@ -1143,11 +1126,6 @@ WOLFSSL_X509_KEY_GEN
11431126
WOLFSSL_X509_PEM
11441127
WOLFSSL_X509_STORE_ALLOW_NON_CA_INTERMEDIATE
11451128
WOLFSSL_X509_STORE_CERTS
1146-
WOLFSSL_X509_TINY
1147-
WOLFSSL_X509_TINY_AKI
1148-
WOLFSSL_X509_TINY_NAME_CONSTRAINTS
1149-
WOLFSSL_X509_TINY_POLICIES
1150-
WOLFSSL_X509_TINY_SKI
11511129
WOLFSSL_X509_TRUSTED_CERTIFICATE_CALLBACK
11521130
WOLFSSL_X509_VERIFY_ONLY
11531131
WOLFSSL_XFREE_NO_NULLNESS_CHECK
@@ -1156,11 +1134,9 @@ WOLFSSL_XILINX_PATCH
11561134
WOLFSSL_XIL_MSG_NO_SLEEP
11571135
WOLFSSL_ZEPHYR
11581136
WOLF_ALLOW_BUILTIN
1159-
WOLF_CRYPTO_CB_ASYNC_POLL
11601137
WOLF_CRYPTO_CB_CMD
11611138
WOLF_CRYPTO_CB_ONLY_FALCON
11621139
WOLF_CRYPTO_DEV
1163-
WOLF_CRYPT_FIPS_H
11641140
WOLF_NO_TRAILING_ENUM_COMMAS
11651141
WindowsCE
11661142
XASU_DISABLE_CACHE

configure.ac

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8195,7 +8195,20 @@ AS_CASE([$ENABLED_SELFTEST],
81958195
],
81968196
["no"],[SELFTEST_VERSION="none"],
81978197
[
8198-
# selftest v1 (wolfCrypt 3.14.2)
8198+
# selftest v1 (wolfCrypt 3.14.2). A BARE --enable-selftest LANDS HERE
8199+
# AND MUST KEEP LANDING HERE. The flavor that passes the bare flag is
8200+
# netbsd-selftest (FIPS_OPTION=cavp-selftest), and its WOLFCRYPT_FILES
8201+
# overlays the v3.14.2 headers -- hmac.h, rsa.h, ecc.h and friends --
8202+
# over the current tree. Those headers ARE the v1 API: v3.14.2
8203+
# hmac.h:89 declares WC_SHA3_224_BLOCK_SIZE as an enum constant and
8204+
# derives WC_HMAC_BLOCK_SIZE from it, v3.14.2 rsa.h:186 declares the
8205+
# six-argument wc_RsaPSS_CheckPadding_ex, and v3.14.2 ecc.h has no
8206+
# wc_ecc_set_rng at all. Selecting v2 for the bare flag makes sha3.h
8207+
# define WC_SHA3_*_BLOCK_SIZE as macros, which collide with that enum,
8208+
# and makes test.c take its seven-argument and wc_ecc_set_rng arms
8209+
# against headers that offer neither -- measured: bare flag with the
8210+
# overlay fails to build, --enable-selftest=v1 with the same overlay
8211+
# builds clean. --enable-selftest=v2 still selects v2 explicitly.
81998212
ENABLED_SELFTEST="yes"
82008213
SELFTEST_VERSION="v1"
82018214
])

linuxkm/linuxkm_wc_port.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,8 @@
846846
* BLK_STS_IOERR; -EBUSY is retryable. Defined outside the vector-register
847847
* block below: the LKCAPI glue calls it whether or not SVR is compiled, and
848848
* inside that block a no-armasm build fails with an implicit declaration. */
849-
#define wc_lkm_errno(e) (((e) == WC_ACCEL_INHIBIT_E) ? -EBUSY : -EINVAL)
849+
#define wc_lkm_errno(e) \
850+
(((e) == WC_NO_ERR_TRACE(WC_ACCEL_INHIBIT_E)) ? -EBUSY : -EINVAL)
850851

851852
/* x86 and ARM/ARM64 share the arch-neutral tracker in
852853
* x86_vector_register_glue.c, which keeps wc_*_x86 names on all arches. */

linuxkm/lkcapi_sha_glue.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1926,7 +1926,7 @@ WC_MAYBE_UNUSED static int km_hmac_init(struct shash_desc *desc) {
19261926
/* A transient vector-register refusal is retryable and must NOT latch
19271927
* the desc failed -- drop the tstate so a retry re-allocates, and
19281928
* report -EBUSY. Any other error is a real failure and still latches. */
1929-
if (ret != WC_ACCEL_INHIBIT_E)
1929+
if (ret != WC_NO_ERR_TRACE(WC_ACCEL_INHIBIT_E))
19301930
s_ctx->failed = 1;
19311931
km_hmac_free_tstate(desc);
19321932
return wc_lkm_errno(ret);

src/include.am

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1421,6 +1421,14 @@ src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/fips.c \
14211421
# fips last file
14221422
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/wolfcrypt_last.c
14231423

1424+
# OUTSIDE the FIPS module boundary, on purpose: listed after wolfcrypt_last.c so
1425+
# its .text falls beyond wolfCrypt_FIPS_last() and the in-core integrity hash
1426+
# does not cover it. Lets a new platform's counter read be added without
1427+
# changing a byte inside the boundary. See wolfcrypt/src/oe_timers.c.
1428+
if BUILD_MEMUSE
1429+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/oe_timers.c
1430+
endif
1431+
14241432
endif !BUILD_FIPS_NO_POST
14251433

14261434
endif BUILD_FIPS_V7_PLUS

src/internal.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6385,9 +6385,15 @@ int EccSharedSecret(WOLFSSL* ssl, ecc_key* priv_key, ecc_key* pub_key,
63856385
else
63866386
#endif
63876387
{
6388+
/* Skipped for FIPS v2 and for selftest v1, whose APIs lack wc_ecc_set_rng().
6389+
* It must NOT be skipped for selftest v2, which exports it: under
6390+
* ECC_TIMING_RESISTANT wc_ecc_shared_secret() requires a blinding RNG
6391+
* (ecc.c: "if (private_key->rng == NULL) err = MISSING_RNG_E"), so skipping
6392+
* the setter fails every ECDHE handshake with -236 instead of degrading. */
63886393
#if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \
63896394
!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2)) && \
6390-
!defined(HAVE_SELFTEST)
6395+
(!defined(HAVE_SELFTEST) || (defined(HAVE_SELFTEST_VERSION) && \
6396+
(HAVE_SELFTEST_VERSION >= 2)))
63916397
ret = wc_ecc_set_rng(priv_key, ssl->rng);
63926398
if (ret == 0)
63936399
#endif

src/sniffer.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2830,7 +2830,8 @@ static int SetupKeys(const byte* input, int* sslBytes, SnifferSession* session,
28302830
}
28312831
#if defined(ECC_TIMING_RESISTANT) && (!defined(HAVE_FIPS) || \
28322832
(!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION != 2))) && \
2833-
!defined(HAVE_SELFTEST)
2833+
(!defined(HAVE_SELFTEST) || (defined(HAVE_SELFTEST_VERSION) && \
2834+
(HAVE_SELFTEST_VERSION >= 2)))
28342835
if (ret == 0) {
28352836
ret = wc_ecc_set_rng(&args->key->priv.ecc,
28362837
session->sslServer->rng);

tests/api/test_aes.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4295,7 +4295,11 @@ int test_wc_AesGcmNonStdNonce(void)
42954295
XMEMSET(&enc, 0, sizeof(enc));
42964296
ExpectIntEQ(wc_AesInit(&enc, NULL, INVALID_DEVID), 0);
42974297
ExpectIntEQ(wc_AesGcmSetKey(&enc, key_z, sizeof(key_z)), 0);
4298-
#ifdef HAVE_SELFTEST
4298+
/* selftest v1 accepted a zero-length IV; v2 uses the wolfCrypt AES-GCM
4299+
* implementation, which rejects it with BAD_FUNC_ARG like every other
4300+
* build, so only v1 takes the accept arm. */
4301+
#if defined(HAVE_SELFTEST) && (!defined(HAVE_SELFTEST_VERSION) || \
4302+
(HAVE_SELFTEST_VERSION < 2))
42994303
ExpectIntEQ(wc_AesGcmEncrypt(&enc, ct, pt_z, sizeof(pt_z),
43004304
NULL, 0, tag, sizeof(tag), NULL, 0), 0);
43014305
#else

0 commit comments

Comments
 (0)