コンテンツにスキップ

wolfSSL ハードウェア最適化サポート対応表

A. アーキテクチャ別 ISA/SIMD 最適化

アーキテクチャ アルゴリズム user_settings.h マクロ configure オプション 備考
Intel x86-64 AES(全モード) WOLFSSL_AESNI --enable-aesni AES-NI 命令
Intel x86-64 SHA-256, SHA-512 USE_INTEL_SPEEDUP + HAVE_INTEL_AVX1 自動検出 AVX1 アセンブリ
Intel x86-64 SHA-512, SHA-3 USE_INTEL_SPEEDUP + HAVE_INTEL_AVX2 自動検出 AVX2 アセンブリ
Intel x86-64 ChaCha20, Poly1305 USE_INTEL_SPEEDUP 自動検出
Intel x86-64 X25519 (Curve25519), Ed25519 USE_INTEL_SPEEDUP 自動検出 fe_x25519_asm.S
Intel x86-64 RSA/ECC/DH (SP) WOLFSSL_SP_X86_64_ASM 自動検出 sp_x86_64_asm.S
ARM AArch64 AES, SHA-256/512, SHA-3, ChaCha20, Poly1305 WOLFSSL_ARMASM --enable-armasm ARMv8 CE (Crypto Extension)
ARM AArch64 X25519 (Curve25519), Ed25519 WOLFSSL_ARMASM --enable-armasm armv8-curve25519.S
ARM AArch64 RSA/ECC/DH (SP) WOLFSSL_SP_ARM64_ASM 自動検出 sp_arm64.c
ARM 32-bit (ARMv8-32) AES, SHA-256/512, SHA-3, ChaCha20, Poly1305 WOLFSSL_ARMASM --enable-armasm
ARM 32-bit X25519 (Curve25519), Ed25519 WOLFSSL_ARMASM --enable-armasm armv8-32-curve25519.S
ARM 32-bit RSA/ECC/DH (SP) WOLFSSL_SP_ARM32_ASM 自動検出 sp_arm32.c
ARM Thumb2 X25519 (Curve25519), Ed25519 WOLFSSL_ARMASM + WOLFSSL_ARMASM_THUMB2 --enable-armasm thumb2-curve25519.S
ARM Thumb RSA/ECC/DH (SP) WOLFSSL_SP_ARM_THUMB_ASM 自動検出 sp_armthumb.c
ARM Cortex-M RSA/ECC/DH (SP) WOLFSSL_SP_ARM_CORTEX_M_ASM 自動検出 sp_cortexm.c
RISC-V 64-bit AES, SHA-256/512, SHA-3, ChaCha20, Poly1305 WOLFSSL_RISCV_ASM --enable-riscv riscv/riscv-64-*.c
PowerPC 32-bit SHA-256 WOLFSSL_PPC32_ASM 自動検出 ppc32/ppc32-sha256-asm.S

B. SP 数学ライブラリ(公開鍵暗号)

アーキテクチャ 対応アルゴリズム user_settings.h マクロ configure オプション
x86-64 アセンブリ RSA 2048/3072/4096, ECC P-256/P-384/P-521, DH WOLFSSL_SP_X86_64_ASM 自動検出
ARM AArch64 アセンブリ RSA, ECC, DH WOLFSSL_SP_ARM64_ASM 自動検出
ARM 32-bit アセンブリ RSA, ECC, DH WOLFSSL_SP_ARM32_ASM 自動検出
ARM Thumb アセンブリ RSA, ECC, DH WOLFSSL_SP_ARM_THUMB_ASM 自動検出
Cortex-M アセンブリ RSA, ECC, DH WOLFSSL_SP_ARM_CORTEX_M_ASM 自動検出
汎用 C (32-bit / 64-bit) RSA, ECC, DH WOLFSSL_SP_MATH --enable-sp

sp_int.c インラインアセンブリ高速化

sp_int.c には、アーキテクチャ専用 SP ファイル(例:sp_x86_64.c)が存在しない場合や、RSA/ECC 以外の鍵長に対応するため、多倍長整数の乗算・加算向けの小規模インラインアセンブリが含まれています。以下のマクロで制御されます(自動検出、または user_settings.h で明示設定可):

アーキテクチャ user_settings.h マクロ
Intel x86-64 WOLFSSL_SP_X86_64
Intel x86 (32-bit) WOLFSSL_SP_X86
ARM AArch64 WOLFSSL_SP_ARM64
ARM 32-bit WOLFSSL_SP_ARM32
ARM Thumb WOLFSSL_SP_ARM_THUMB
RISC-V 64-bit WOLFSSL_SP_RISCV64
RISC-V 32-bit WOLFSSL_SP_RISCV32
MIPS 64-bit WOLFSSL_SP_MIPS64
MIPS 32-bit WOLFSSL_SP_MIPS
s390x WOLFSSL_SP_S390X

SP 鍵サイズ設定

#define WOLFSSL_SP_MATH
#define WOLFSSL_SP_X86_64_ASM        /* x86-64 */
#define WOLFSSL_SP_ARM64_ASM         /* AArch64 */
#define WOLFSSL_SP_ARM_CORTEX_M_ASM  /* Cortex-M */

#define WOLFSSL_SP_2048  /* RSA-2048 */
#define WOLFSSL_SP_3072  /* RSA-3072 */
#define WOLFSSL_SP_4096  /* RSA-4096 */
#define WOLFSSL_SP_256   /* ECC P-256 */
#define WOLFSSL_SP_384   /* ECC P-384 */
#define WOLFSSL_SP_521   /* ECC P-521 */

C. マイコン/SoC チップ別ハードウェアアクセラレータ

ベンダー / チップ 対応アルゴリズム user_settings.h マクロ configure オプション ソース
STMicroelectronics
STM32F2/F4/F7/H7 (CRYP) AES-ECB/CBC/CTR/GCM STM32_CRYPTO HAL 自動検出 port/st/stm32.c
STM32L4/L5/WB55 AES, SHA(部分) STM32_CRYPTO HAL 自動検出 port/st/stm32.c
STM32U5 (DHUK) 鍵ラップ付き AES WOLFSSL_STM32U5_DHUK 自動検出 port/st/stm32.c
STM32MP1/MP13/MP25 AES, SHA, RSA, ECC WOLFSSL_STM32_CRYPT 自動検出 port/st/stm32.c
NXP
i.MX RT (DCP) AES-ECB/CBC/CTR/GCM, SHA WOLFSSL_IMXRT_DCP 自動検出 port/nxp/dcp_port.c
i.MX 6/8 (CAAM) AES, SHA, RSA, ECC, DH, HMAC WOLFSSL_IMX6_CAAM / WOLFSSL_SECO_CAAM --enable-caam port/caam/*
SE050 セキュアエレメント AES, SHA, RSA, ECC, X25519, ECDH WOLFSSL_SE050 + WOLFSSL_SE050_CRYPT 自動検出 port/nxp/se050_port.c
Espressif
ESP32 / ESP32-S2 / ESP32-S3 AES, SHA-1/256/384/512, RSA, ECC WOLFSSL_ESP32_CRYPT --enable-esp32 port/Espressif/esp32_*.c
ESP32-C3 / C6 / H2 AES, SHA-256/384/512(部分) WOLFSSL_ESP32_CRYPT --enable-esp32 port/Espressif/esp32_*.c
Renesas
RX64M/RX71M/RX72M SHA-1, SHA-256 WOLFSSL_RENESAS_RX64_HASH 自動検出 port/Renesas/renesas_rx64_*.c
RX65N (SCE) AES, SHA, RSA, ECC, RNG WOLFSSL_RENESAS_SCEPROTECT 自動検出 port/Renesas/renesas_*.c
RZ/A1/A2 (TSIP) AES, SHA, RSA, ECC, RNG WOLFSSL_RENESAS_TSIP 自動検出 port/Renesas/renesas_tsip_*.c
RA4M4/RA6M4 (RSIP) AES, SHA, RSA, ECC, RNG WOLFSSL_RENESAS_RSIP 自動検出 port/Renesas/renesas_rsip*.c
RA FSP Secure Manager AES, SHA, RSA, ECC, HMAC WOLFSSL_RENESAS_FSPSM 自動検出 port/Renesas/renesas_fspsm_*.c
Cypress
PSoC 6 AES, SHA, ECC, RNG WOLFSSL_PSOC6_CRYPTO 自動検出 port/cypress/psoc6_crypto.c
Silicon Labs
EFR32 / EFM32 (SE) AES, SHA, ECC, RNG WOLFSSL_SILABS_SE_ACCEL 自動検出 port/silabs/silabs_*.c
Maxim
MAX3266X AES-ECB/CBC, RSA WOLFSSL_MAX3266X 自動検出 port/maxim/max3266x.c
MAXQ10XX AES, SHA, RSA, ECC, RNG WOLFSSL_MAXQ10XX_CRYPTO --with-maxq10xx=PART port/maxim/maxq10xx.c
Microchip
PIC32MZ AES, SHA, RNG WOLFSSL_PIC32MZ_CRYPT 自動検出 port/pic32/
ATECC508A / 608A AES, SHA, ECC (ECDH/ECDSA) WOLFSSL_ATECC 自動検出 port/atmel/atmel.c
Xilinx
Zynq / Zynq-7000 AES, SHA, RSA, ECC WOLFSSL_XILINX_CRYPT --enable-xilinx port/xilinx/xil-*.c
Versal AES-GCM, SHA-3, RNG WOLFSSL_XILINX_CRYPT_VERSAL --enable-xilinx port/xilinx/xil-versal-*.c
ARM CryptoCell
CC-300/312/700/712/714 AES, SHA, RSA, ECC, ChaCha, Poly1305 WOLFSSL_CRYPTOCELL --enable-cryptocell port/arm/cryptocell*.c
IoT-Safe (SIM) ECC, SHA, RNG WOLFSSL_IOTSAFE --enable-iotsafe port/iotsafe/

D. 外部アクセラレータ・コプロセッサ

製品 対応アルゴリズム user_settings.h マクロ configure オプション
Intel QuickAssist (QAT) AES, RSA, DH, ECC, SHA HAVE_INTEL_QA --with-intelqa=PATH
Intel QAT(同期) 同上 ENABLED_INTEL_QA_SYNC --with-intelqa-sync=PATH
Cavium NITROX AES, RSA, DH, ECC, SHA HAVE_CAVIUM --with-cavium=PATH
Cavium NITROX V 同上 HAVE_CAVIUM_V --with-cavium=PATH
Cavium Octeon (MIPS) AES, RSA, ECC, SHA HAVE_CAVIUM_OCTEON --with-octeon-sync=PATH
NXP CAAM AES, SHA, RSA, ECC, HMAC, DH WOLFSSL_CAAM --enable-caam

E. OS カーネル経由ハードウェアオフロード

インターフェース 対応アルゴリズム user_settings.h マクロ configure オプション
Linux /dev/crypto AES, SHA-1/256/512, RSA, ECC, DH, HMAC WOLFSSL_DEVCRYPTO --enable-devcrypto
Linux Kernel Crypto API AES, SHA, RSA, ECC, X25519, HMAC WOLFSSL_KCAPI --enable-kcapi
Linux AF_ALG AES, SHA(カーネルバックエンド依存) WOLFSSL_AFALG --enable-afalg
PSA (Platform Security Architecture) ベンダー実装依存 WOLFSSL_HAVE_PSA --enable-psa