wolfssl: enable CPU crypto instructions

This enables AES & SHA CPU instructions for compatible armv8, and x86_64
architectures.  Add this to the hardware acceleration choice, since they
can't be enabled at the same time.

The package was marked non-shared, since the arm CPUs may or may not
have crypto extensions enabled based on licensing; bcm27xx does not
enable them.  There is no run-time detection of this for arm.

NOTE:
Should this be backported to a release branch, it must be done shortly
before a new minor release, because the change to nonshared will remove
libwolfssl from the shared packages, but the nonshared are only built in
a subsequent release!

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
This commit is contained in:
Eneas U de Queiroz 2022-04-19 12:02:09 -03:00 committed by Christian 'Ansuel' Marangi
parent 18fd12edb8
commit 0a2edc2714
2 changed files with 23 additions and 0 deletions

View File

@ -62,13 +62,25 @@ config WOLFSSL_ALT_NAMES
config WOLFSSL_HAS_DEVCRYPTO config WOLFSSL_HAS_DEVCRYPTO
bool bool
config WOLFSSL_ASM_CAPABLE
bool
default x86_64 || (aarch64 && !TARGET_bcm27xx)
choice choice
prompt "Hardware Acceleration" prompt "Hardware Acceleration"
default WOLFSSL_HAS_CPU_CRYPTO if WOLFSSL_ASM_CAPABLE
default WOLFSSL_HAS_NO_HW default WOLFSSL_HAS_NO_HW
config WOLFSSL_HAS_NO_HW config WOLFSSL_HAS_NO_HW
bool "None" bool "None"
config WOLFSSL_HAS_CPU_CRYPTO
bool "Use CPU crypto instructions"
depends on WOLFSSL_ASM_CAPABLE
help
This will use Intel AESNI insturctions or armv8 Crypto Extensions.
Either of them should easily outperform hardware crypto in WolfSSL.
config WOLFSSL_HAS_AFALG config WOLFSSL_HAS_AFALG
bool "AF_ALG" bool "AF_ALG"

View File

@ -43,6 +43,7 @@ PKG_ABI_VERSION:=$(patsubst %-stable,%,$(PKG_VERSION)).$(call version_abbrev,$(c
PKG_CONFIG_DEPENDS+=\ PKG_CONFIG_DEPENDS+=\
CONFIG_WOLFSSL_HAS_AFALG \ CONFIG_WOLFSSL_HAS_AFALG \
CONFIG_WOLFSSL_HAS_CPU_CRYPTO \
CONFIG_WOLFSSL_HAS_DEVCRYPTO_AES \ CONFIG_WOLFSSL_HAS_DEVCRYPTO_AES \
CONFIG_WOLFSSL_HAS_DEVCRYPTO_CBC \ CONFIG_WOLFSSL_HAS_DEVCRYPTO_CBC \
CONFIG_WOLFSSL_HAS_DEVCRYPTO_FULL CONFIG_WOLFSSL_HAS_DEVCRYPTO_FULL
@ -59,6 +60,7 @@ endef
define Package/libwolfssl define Package/libwolfssl
$(call Package/libwolfssl/Default) $(call Package/libwolfssl/Default)
TITLE:=wolfSSL library TITLE:=wolfSSL library
PKGFLAGS:=nonshared
MENU:=1 MENU:=1
PROVIDES:=libcyassl PROVIDES:=libcyassl
DEPENDS:=+WOLFSSL_HAS_DEVCRYPTO:kmod-cryptodev +WOLFSSL_HAS_AFALG:kmod-crypto-user DEPENDS:=+WOLFSSL_HAS_DEVCRYPTO:kmod-cryptodev +WOLFSSL_HAS_AFALG:kmod-crypto-user
@ -133,6 +135,15 @@ CONFIGURE_ARGS += \
--enable-wpas --enable-fortress --enable-fastmath --enable-wpas --enable-fortress --enable-fastmath
endif endif
ifdef CONFIG_WOLFSSL_HAS_CPU_CRYPTO
ifdef CONFIG_aarch64
CONFIGURE_ARGS += --enable-armasm
TARGET_CFLAGS:=$(TARGET_CFLAGS:-mcpu%=-mcpu%+crypto)
else ifdef CONFIG_TARGET_x86_64
CONFIGURE_ARGS += --enable-intelasm
endif
endif
define Build/InstallDev define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib/pkgconfig $(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/