Skip to content

Commit c29fba5

Browse files
authored
Merge pull request #8614 from douzzer/20250317-linuxkm-lkcapi-aes-ctr-ofb-ecb
20250317-linuxkm-lkcapi-aes-ctr-ofb-ecb
2 parents 2210ec8 + 13c73a9 commit c29fba5

15 files changed

Lines changed: 1996 additions & 524 deletions

File tree

.github/workflows/intelasm-c-fallback.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
matrix:
1919
config: [
2020
# Add new configs here
21-
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy CPPFLAGS="-DNO_WOLFSSL_CIPHER_SUITE_TEST -DWC_AES_C_DYNAMIC_FALLBACK -DWC_C_DYNAMIC_FALLBACK -DDEBUG_VECTOR_REGISTER_ACCESS -DDEBUG_VECTOR_REGISTER_ACCESS_FUZZING -DWC_DEBUG_CIPHER_LIFECYCLE"'
21+
'--enable-intelasm --enable-sp-asm --enable-all --enable-testcert --enable-acert --enable-dtls13 --enable-dtls-mtu --enable-dtls-frag-ch --enable-dtlscid --enable-quic --with-sys-crypto-policy CPPFLAGS="-DNO_WOLFSSL_CIPHER_SUITE_TEST -DWC_C_DYNAMIC_FALLBACK -DDEBUG_VECTOR_REGISTER_ACCESS -DDEBUG_VECTOR_REGISTER_ACCESS_FUZZING -DWC_DEBUG_CIPHER_LIFECYCLE"'
2222
]
2323
name: make check
2424
if: github.repository_owner == 'wolfssl'

.wolfssl_known_macro_extras

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,7 @@ WC_SHA384_DIGEST_SIZE
548548
WC_SHA512
549549
WC_SSIZE_TYPE
550550
WC_STRICT_SIG
551+
WC_WANT_FLAG_DONT_USE_AESNI
551552
WC_XMSS_FULL_HASH
552553
WOLFCRYPT_FIPS_CORE_DYNAMIC_HASH_VALUE
553554
WOLFSENTRY_H

Makefile.am

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,8 @@ if BUILD_LINUXKM
213213
EXTRA_CFLAGS EXTRA_CPPFLAGS EXTRA_CCASFLAGS EXTRA_LDFLAGS \
214214
AM_CPPFLAGS CPPFLAGS AM_CFLAGS CFLAGS \
215215
AM_CCASFLAGS CCASFLAGS \
216-
src_libwolfssl_la_OBJECTS ENABLED_CRYPT_TESTS ENABLED_LINUXKM_PIE ENABLED_ASM \
216+
src_libwolfssl_la_OBJECTS ENABLED_CRYPT_TESTS ENABLED_LINUXKM_LKCAPI_REGISTER \
217+
ENABLED_LINUXKM_PIE ENABLED_ASM \
217218
CFLAGS_FPU_DISABLE CFLAGS_FPU_ENABLE CFLAGS_SIMD_DISABLE CFLAGS_SIMD_ENABLE \
218219
CFLAGS_AUTO_VECTORIZE_DISABLE CFLAGS_AUTO_VECTORIZE_ENABLE \
219220
ASFLAGS_FPU_DISABLE_SIMD_ENABLE ASFLAGS_FPU_ENABLE_SIMD_DISABLE \

configure.ac

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,8 @@ AS_CASE([$ENABLED_FIPS],
498498
[v5-dev],[
499499
FIPS_VERSION="v5-dev"
500500
HAVE_FIPS_VERSION_MAJOR=5
501-
HAVE_FIPS_VERSION_MINOR=3
501+
HAVE_FIPS_VERSION_MINOR=2
502+
HAVE_FIPS_VERSION_PATCH=1
502503
ENABLED_FIPS="yes"
503504
# for dev, DEF_SP_MATH and DEF_FAST_MATH follow non-FIPS defaults (currently sp-math-all)
504505
],
@@ -678,7 +679,7 @@ AC_SUBST([ENABLED_LINUXKM_BENCHMARKS])
678679

679680
if test "$ENABLED_LINUXKM_DEFAULTS" = "yes"
680681
then
681-
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_DH_CONST -DWOLFSSL_SP_MOD_WORD_RP -DWOLFSSL_SP_DIV_64 -DWOLFSSL_SP_DIV_WORD_HALF -DWOLFSSL_SMALL_STACK_STATIC -DWOLFSSL_TEST_SUBROUTINE=static"
682+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_DH_CONST -DWOLFSSL_SP_MOD_WORD_RP -DWOLFSSL_SP_DIV_64 -DWOLFSSL_SP_DIV_WORD_HALF -DWOLFSSL_SMALL_STACK_STATIC"
682683
if test "$ENABLED_LINUXKM_PIE" = "yes"; then
683684
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_NO_OCSP_ISSUER_CHECK"
684685
fi
@@ -1243,7 +1244,6 @@ then
12431244
test "$enable_aesgcm" = "" && enable_aesgcm=yes
12441245
test "$enable_aesccm" = "" && enable_aesccm=yes
12451246
test "$enable_aesctr" = "" && enable_aesctr=yes
1246-
test "$enable_aeseax" = "" && enable_aeseax=yes
12471247
test "$enable_aesofb" = "" && enable_aesofb=yes
12481248
test "$enable_aescfb" = "" && enable_aescfb=yes
12491249
test "$enable_aescbc_length_checks" = "" && enable_aescbc_length_checks=yes
@@ -1318,6 +1318,8 @@ then
13181318
test "$enable_ed25519_stream" = "" && test "$enable_ed25519" != "no" && enable_ed25519_stream=yes
13191319
test "$enable_ed448" = "" && enable_ed448=yes
13201320
test "$enable_ed448_stream" = "" && test "$enable_ed448" != "no" && enable_ed448_stream=yes
1321+
test "$enable_aessiv" = "" && enable_aessiv=yes
1322+
test "$enable_aeseax" = "" && enable_aeseax=yes
13211323

13221324
if test "$ENABLED_LINUXKM_DEFAULTS" != "yes"
13231325
then
@@ -1331,7 +1333,6 @@ then
13311333
test "$enable_aesgcm_stream" = "" && test "$enable_aesgcm" = "yes" && enable_aesgcm_stream=yes
13321334
test "$enable_aesxts" = "" && enable_aesxts=yes
13331335
test "$enable_aesxts_stream" = "" && test "$enable_aesxts" = "yes" && enable_aesxts_stream=yes
1334-
test "$enable_aessiv" = "" && enable_aessiv=yes
13351336
test "$enable_shake128" = "" && enable_shake128=yes
13361337
test "$enable_shake256" = "" && enable_shake256=yes
13371338
test "$enable_compkey" = "" && test "$ENABLED_LINUXKM_DEFAULTS" != "yes" && enable_compkey=yes
@@ -3507,6 +3508,13 @@ AC_ARG_ENABLE([aesni],
35073508
[ ENABLED_AESNI=no ]
35083509
)
35093510

3511+
# INTEL AES-NI with AVX
3512+
AC_ARG_ENABLE([aesni-with-avx],
3513+
[AS_HELP_STRING([--enable-aesni-with-avx],[Enable AES-NI with additional AVX acceleration for AES (default: disabled)])],
3514+
[ ENABLED_AESNI_WITH_AVX=$enableval ],
3515+
[ ENABLED_AESNI_WITH_AVX=no ]
3516+
)
3517+
35103518
# INTEL ASM
35113519
AC_ARG_ENABLE([intelasm],
35123520
[AS_HELP_STRING([--enable-intelasm],[Enable All Intel ASM speedups (default: disabled)])],
@@ -3522,6 +3530,17 @@ then
35223530
ENABLED_AESNI=yes
35233531
fi
35243532

3533+
if test "$ENABLED_INTELASM" = "yes"
3534+
then
3535+
AM_CFLAGS="$AM_CFLAGS -DUSE_INTEL_SPEEDUP"
3536+
ENABLED_AESNI=yes
3537+
ENABLED_AESNI_WITH_AVX=yes
3538+
elif test "$ENABLED_AESNI_WITH_AVX" = "yes"
3539+
then
3540+
AM_CFLAGS="$AM_CFLAGS -DUSE_INTEL_SPEEDUP_FOR_AES"
3541+
ENABLED_AESNI=yes
3542+
fi
3543+
35253544
if test "$ENABLED_AESNI" = "yes" || test "$ENABLED_INTELASM" = "yes"
35263545
then
35273546
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_AESNI"
@@ -3547,12 +3566,6 @@ then
35473566
AS_IF([test "x$ENABLED_SM3" != "xno"],[AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_SM3"])
35483567
fi
35493568

3550-
if test "$ENABLED_INTELASM" = "yes"
3551-
then
3552-
AM_CFLAGS="$AM_CFLAGS -DUSE_INTEL_SPEEDUP"
3553-
ENABLED_AESNI=yes
3554-
fi
3555-
35563569
if test "$host_cpu" = "x86_64" || test "$host_cpu" = "amd64"
35573570
then
35583571
AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_X86_64_BUILD"
@@ -9320,7 +9333,7 @@ if test "$ENABLED_LINUXKM_LKCAPI_REGISTER" != "none"
93209333
then
93219334
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER"
93229335
9323-
if test "$ENABLED_AESGCM" != "no" && test "$ENABLED_AESGCM_STREAM" = "no" && test "$ENABLED_FIPS" = "no"; then
9336+
if test "$ENABLED_AESGCM" != "no" && test "$ENABLED_AESGCM_STREAM" = "no" && test "$enable_aesgcm_stream" != "no" && (test "$ENABLED_FIPS" = "no" || test $HAVE_FIPS_VERSION -ge 6); then
93249337
ENABLED_AESGCM_STREAM=yes
93259338
fi
93269339
@@ -9338,15 +9351,31 @@ then
93389351
'cfb(aes)') test "$ENABLED_AESCFB" != "no" || AC_MSG_ERROR([linuxkm-lkcapi-register ${lkcapi_alg}: AES-CFB implementation not enabled.])
93399352
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER_AESCFB" ;;
93409353
'gcm(aes)') test "$ENABLED_AESGCM" != "no" || AC_MSG_ERROR([linuxkm-lkcapi-register ${lkcapi_alg}: AES-GCM implementation not enabled.])
9341-
test "$ENABLED_AESGCM_STREAM" != "no" || AC_MSG_ERROR([linuxkm-lkcapi-register ${lkcapi_alg}: --enable-aesgcm-stream is required for LKCAPI.])
93429354
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER_AESGCM" ;;
9355+
'rfc4106(gcm(aes))') test "$ENABLED_AESGCM" != "no" || AC_MSG_ERROR([linuxkm-lkcapi-register ${lkcapi_alg}: AES-GCM implementation not enabled.])
9356+
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER_AESGCM_RFC4106" ;;
93439357
'xts(aes)') test "$ENABLED_AESXTS" != "no" || AC_MSG_ERROR([linuxkm-lkcapi-register ${lkcapi_alg}: AES-XTS implementation not enabled.])
93449358
test "$ENABLED_AESXTS_STREAM" != "no" || AC_MSG_ERROR([linuxkm-lkcapi-register ${lkcapi_alg}: --enable-aesxts-stream is required for LKCAPI.])
93459359
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER_AESXTS" ;;
9360+
'ctr(aes)') test "$ENABLED_AESCTR" != "no" || AC_MSG_ERROR([linuxkm-lkcapi-register ${lkcapi_alg}: AES-CTR implementation not enabled.])
9361+
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER_AESCTR" ;;
9362+
'ofb(aes)') test "$ENABLED_AESOFB" != "no" || AC_MSG_ERROR([linuxkm-lkcapi-register ${lkcapi_alg}: AES-OFB implementation not enabled.])
9363+
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER_AESOFB" ;;
9364+
'ecb(aes)') AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_REGISTER_AESECB -DHAVE_AES_ECB" ;;
9365+
'-cbc(aes)') AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_DONT_REGISTER_AESCBC" ;;
9366+
'-cfb(aes)') AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_DONT_REGISTER_AESCFB" ;;
9367+
'-gcm(aes)') AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_DONT_REGISTER_AESGCM" ;;
9368+
'-rfc4106(gcm(aes))')
9369+
AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_DONT_REGISTER_AESGCM_RFC4106" ;;
9370+
'-xts(aes)') AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_DONT_REGISTER_AESXTS" ;;
9371+
'-ctr(aes)') AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_DONT_REGISTER_AESCTR" ;;
9372+
'-ofb(aes)') AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_DONT_REGISTER_AESOFB" ;;
9373+
'-ecb(aes)') AM_CFLAGS="$AM_CFLAGS -DLINUXKM_LKCAPI_DONT_REGISTER_AESECB" ;;
93469374
*) AC_MSG_ERROR([Unsupported LKCAPI algorithm "$lkcapi_alg".]) ;;
93479375
esac
93489376
done
93499377
fi
9378+
AC_SUBST([ENABLED_LINUXKM_LKCAPI_REGISTER])
93509379
93519380
# Library Suffix
93529381
LIBSUFFIX=""
@@ -10821,6 +10850,7 @@ echo " * snifftest: $ENABLED_SNIFFTEST"
1082110850
echo " * ARC4: $ENABLED_ARC4"
1082210851
echo " * AES: $ENABLED_AES"
1082310852
echo " * AES-NI: $ENABLED_AESNI"
10853+
echo " * AVX for AES: $ENABLED_AESNI_WITH_AVX"
1082410854
echo " * AES-CBC: $ENABLED_AESCBC"
1082510855
echo " * AES-CBC length checks: $ENABLED_AESCBC_LENGTH_CHECKS"
1082610856
echo " * AES-GCM: $ENABLED_AESGCM"

linuxkm/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ WOLFSSL_OBJ_FILES=$(patsubst %.lo, %.o, $(patsubst src/src_libwolfssl_la-%, src/
4343

4444
ifeq "$(ENABLED_CRYPT_TESTS)" "yes"
4545
WOLFSSL_OBJ_FILES+=wolfcrypt/test/test.o
46+
else ifneq "$(ENABLED_LINUXKM_LKCAPI_REGISTER)" "none"
47+
WOLFSSL_OBJ_FILES+=wolfcrypt/test/test.o
4648
else
4749
WOLFSSL_CFLAGS+=-DNO_CRYPT_TEST
4850
endif

0 commit comments

Comments
 (0)