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
					Eneas U de Queiroz
				
			
				
					committed by
					
						 Christian 'Ansuel' Marangi
						Christian 'Ansuel' Marangi
					
				
			
			
				
	
			
			
			 Christian 'Ansuel' Marangi
						Christian 'Ansuel' Marangi
					
				
			
						parent
						
							18fd12edb8
						
					
				
				
					commit
					0a2edc2714
				
			| @@ -62,13 +62,25 @@ config WOLFSSL_ALT_NAMES | ||||
| config WOLFSSL_HAS_DEVCRYPTO | ||||
| 	bool | ||||
|  | ||||
| config WOLFSSL_ASM_CAPABLE | ||||
| 	bool | ||||
| 	default x86_64 || (aarch64 && !TARGET_bcm27xx) | ||||
|  | ||||
| choice | ||||
| 	prompt "Hardware Acceleration" | ||||
| 	default WOLFSSL_HAS_CPU_CRYPTO if WOLFSSL_ASM_CAPABLE | ||||
| 	default WOLFSSL_HAS_NO_HW | ||||
|  | ||||
| 	config WOLFSSL_HAS_NO_HW | ||||
| 		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 | ||||
| 		bool "AF_ALG" | ||||
|  | ||||
|   | ||||
| @@ -43,6 +43,7 @@ PKG_ABI_VERSION:=$(patsubst %-stable,%,$(PKG_VERSION)).$(call version_abbrev,$(c | ||||
|  | ||||
| PKG_CONFIG_DEPENDS+=\ | ||||
| 	CONFIG_WOLFSSL_HAS_AFALG \ | ||||
| 	CONFIG_WOLFSSL_HAS_CPU_CRYPTO \ | ||||
| 	CONFIG_WOLFSSL_HAS_DEVCRYPTO_AES \ | ||||
| 	CONFIG_WOLFSSL_HAS_DEVCRYPTO_CBC \ | ||||
| 	CONFIG_WOLFSSL_HAS_DEVCRYPTO_FULL | ||||
| @@ -59,6 +60,7 @@ endef | ||||
| define Package/libwolfssl | ||||
| $(call Package/libwolfssl/Default) | ||||
|   TITLE:=wolfSSL library | ||||
|   PKGFLAGS:=nonshared | ||||
|   MENU:=1 | ||||
|   PROVIDES:=libcyassl | ||||
|   DEPENDS:=+WOLFSSL_HAS_DEVCRYPTO:kmod-cryptodev +WOLFSSL_HAS_AFALG:kmod-crypto-user | ||||
| @@ -133,6 +135,15 @@ CONFIGURE_ARGS += \ | ||||
| 	--enable-wpas --enable-fortress --enable-fastmath | ||||
| 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 | ||||
| 	$(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib/pkgconfig | ||||
| 	$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user