1 # SPDX-License-Identifier: GPL-2.0-only
4 bool "Hardware crypto devices"
7 Say Y here to get to see options for hardware crypto devices and
8 processors. This option alone does not add any kernel code.
10 If you say N, all options in this submenu will be skipped and disabled.
14 source "drivers/crypto/allwinner/Kconfig"
16 config CRYPTO_DEV_PADLOCK
17 tristate "Support for VIA PadLock ACE"
18 depends on X86 && !UML
20 Some VIA processors come with an integrated crypto engine
21 (so called VIA PadLock ACE, Advanced Cryptography Engine)
22 that provides instructions for very fast cryptographic
23 operations with supported algorithms.
25 The instructions are used only when the CPU supports them.
26 Otherwise software encryption is used.
28 config CRYPTO_DEV_PADLOCK_AES
29 tristate "PadLock driver for AES algorithm"
30 depends on CRYPTO_DEV_PADLOCK
31 select CRYPTO_SKCIPHER
34 Use VIA PadLock for AES algorithm.
36 Available in VIA C3 and newer CPUs.
38 If unsure say M. The compiled module will be
41 config CRYPTO_DEV_PADLOCK_SHA
42 tristate "PadLock driver for SHA1 and SHA256 algorithms"
43 depends on CRYPTO_DEV_PADLOCK
48 Use VIA PadLock for SHA1/SHA256 algorithms.
50 Available in VIA C7 and newer processors.
52 If unsure say M. The compiled module will be
55 config CRYPTO_DEV_GEODE
56 tristate "Support for the Geode LX AES engine"
57 depends on X86_32 && PCI
59 select CRYPTO_SKCIPHER
61 Say 'Y' here to use the AMD Geode LX processor on-board AES
62 engine for the CryptoAPI AES algorithm.
64 To compile this driver as a module, choose M here: the module
65 will be called geode-aes.
68 tristate "Support for s390 cryptographic adapters"
72 Select this option if you want to enable support for
73 s390 cryptographic adapters like:
74 + Crypto Express 2 up to 7 Coprocessor (CEXxC)
75 + Crypto Express 2 up to 7 Accelerator (CEXxA)
76 + Crypto Express 4 up to 7 EP11 Coprocessor (CEXxP)
79 bool "Enable debug features for s390 cryptographic adapters"
81 depends on DEBUG_KERNEL
84 Say 'Y' here to enable some additional debug features on the
85 s390 cryptographic adapters driver.
87 There will be some more sysfs attributes displayed for ap cards
88 and queues and some flags on crypto requests are interpreted as
89 debugging messages to force error injection.
91 Do not enable on production level kernel build.
95 config ZCRYPT_MULTIDEVNODES
96 bool "Support for multiple zcrypt device nodes"
101 With this option enabled the zcrypt device driver can
102 provide multiple devices nodes in /dev. Each device
103 node can get customized to limit access and narrow
104 down the use of the available crypto hardware.
107 tristate "Kernel API for protected key handling"
111 With this option enabled the pkey kernel module provides an API
112 for creation and handling of protected keys. Other parts of the
113 kernel or userspace applications may use these functions.
115 Select this option if you want to enable the kernel and userspace
116 API for proteced key handling.
118 Please note that creation of protected keys from secure keys
119 requires to have at least one CEX card in coprocessor mode
120 available at runtime.
122 config CRYPTO_PAES_S390
123 tristate "PAES cipher algorithms"
128 select CRYPTO_SKCIPHER
130 This is the s390 hardware accelerated implementation of the
131 AES cipher algorithms for use with protected key.
133 Select this option if you want to use the paes cipher
134 for example to use protected key encrypted devices.
137 tristate "Pseudo random number generator device driver"
141 Select this option if you want to use the s390 pseudo random number
142 generator. The PRNG is part of the cryptographic processor functions
143 and uses triple-DES to generate secure random numbers like the
144 ANSI X9.17 standard. User-space programs access the
145 pseudo-random-number device through the char device /dev/prandom.
147 It is available as of z9.
149 config CRYPTO_DEV_NIAGARA2
150 tristate "Niagara2 Stream Processing Unit driver"
151 select CRYPTO_LIB_DES
152 select CRYPTO_SKCIPHER
159 Each core of a Niagara2 processor contains a Stream
160 Processing Unit, which itself contains several cryptographic
161 sub-units. One set provides the Modular Arithmetic Unit,
162 used for SSL offload. The other set provides the Cipher
163 Group, which can perform encryption, decryption, hashing,
164 checksumming, and raw copies.
166 config CRYPTO_DEV_SL3516
167 tristate "Storlink SL3516 crypto offloader"
168 depends on ARCH_GEMINI || COMPILE_TEST
169 depends on HAS_IOMEM && PM
170 select CRYPTO_SKCIPHER
176 This option allows you to have support for SL3516 crypto offloader.
178 config CRYPTO_DEV_SL3516_DEBUG
179 bool "Enable SL3516 stats"
180 depends on CRYPTO_DEV_SL3516
183 Say y to enable SL3516 debug stats.
184 This will create /sys/kernel/debug/sl3516/stats for displaying
185 the number of requests per algorithm and other internal stats.
187 config CRYPTO_DEV_HIFN_795X
188 tristate "Driver HIFN 795x crypto accelerator chips"
189 select CRYPTO_LIB_DES
190 select CRYPTO_SKCIPHER
191 select HW_RANDOM if CRYPTO_DEV_HIFN_795X_RNG
193 depends on !ARCH_DMA_ADDR_T_64BIT
195 This option allows you to have support for HIFN 795x crypto adapters.
197 config CRYPTO_DEV_HIFN_795X_RNG
198 bool "HIFN 795x random number generator"
199 depends on CRYPTO_DEV_HIFN_795X
201 Select this option if you want to enable the random number generator
202 on the HIFN 795x crypto adapters.
204 source "drivers/crypto/caam/Kconfig"
206 config CRYPTO_DEV_TALITOS
207 tristate "Talitos Freescale Security Engine (SEC)"
209 select CRYPTO_AUTHENC
210 select CRYPTO_SKCIPHER
212 select CRYPTO_LIB_DES
216 Say 'Y' here to use the Freescale Security Engine (SEC)
217 to offload cryptographic algorithm computation.
219 The Freescale SEC is present on PowerQUICC 'E' processors, such
220 as the MPC8349E and MPC8548E.
222 To compile this driver as a module, choose M here: the module
223 will be called talitos.
225 config CRYPTO_DEV_TALITOS1
226 bool "SEC1 (SEC 1.0 and SEC Lite 1.2)"
227 depends on CRYPTO_DEV_TALITOS
228 depends on PPC_8xx || PPC_82xx
231 Say 'Y' here to use the Freescale Security Engine (SEC) version 1.0
232 found on MPC82xx or the Freescale Security Engine (SEC Lite)
233 version 1.2 found on MPC8xx
235 config CRYPTO_DEV_TALITOS2
236 bool "SEC2+ (SEC version 2.0 or upper)"
237 depends on CRYPTO_DEV_TALITOS
238 default y if !PPC_8xx
240 Say 'Y' here to use the Freescale Security Engine (SEC)
241 version 2 and following as found on MPC83xx, MPC85xx, etc ...
243 config CRYPTO_DEV_PPC4XX
244 tristate "Driver AMCC PPC4xx crypto accelerator"
245 depends on PPC && 4xx
249 select CRYPTO_LIB_AES
253 select CRYPTO_SKCIPHER
255 This option allows you to have support for AMCC crypto acceleration.
257 config HW_RANDOM_PPC4XX
258 bool "PowerPC 4xx generic true random number generator support"
259 depends on CRYPTO_DEV_PPC4XX && HW_RANDOM=y
262 This option provides the kernel-side support for the TRNG hardware
263 found in the security function of some PowerPC 4xx SoCs.
265 config CRYPTO_DEV_OMAP
266 tristate "Support for OMAP crypto HW accelerators"
267 depends on ARCH_OMAP2PLUS
269 OMAP processors have various crypto HW accelerators. Select this if
270 you want to use the OMAP modules for any of the crypto algorithms.
274 config CRYPTO_DEV_OMAP_SHAM
275 tristate "Support for OMAP MD5/SHA1/SHA2 hw accelerator"
276 depends on ARCH_OMAP2PLUS
284 OMAP processors have MD5/SHA1/SHA2 hw accelerator. Select this if you
285 want to use the OMAP module for MD5/SHA1/SHA2 algorithms.
287 config CRYPTO_DEV_OMAP_AES
288 tristate "Support for OMAP AES hw engine"
289 depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP2PLUS
291 select CRYPTO_SKCIPHER
298 OMAP processors have AES module accelerator. Select this if you
299 want to use the OMAP module for AES algorithms.
301 config CRYPTO_DEV_OMAP_DES
302 tristate "Support for OMAP DES/3DES hw engine"
303 depends on ARCH_OMAP2PLUS
304 select CRYPTO_LIB_DES
305 select CRYPTO_SKCIPHER
308 OMAP processors have DES/3DES module accelerator. Select this if you
309 want to use the OMAP module for DES and 3DES algorithms. Currently
310 the ECB and CBC modes of operation are supported by the driver. Also
311 accesses made on unaligned boundaries are supported.
313 endif # CRYPTO_DEV_OMAP
315 config CRYPTO_DEV_SAHARA
316 tristate "Support for SAHARA crypto accelerator"
317 depends on ARCH_MXC && OF
318 select CRYPTO_SKCIPHER
322 This option enables support for the SAHARA HW crypto accelerator
323 found in some Freescale i.MX chips.
325 config CRYPTO_DEV_EXYNOS_RNG
326 tristate "Exynos HW pseudo random number generator support"
327 depends on ARCH_EXYNOS || COMPILE_TEST
331 This driver provides kernel-side support through the
332 cryptographic API for the pseudo random number generator hardware
333 found on Exynos SoCs.
335 To compile this driver as a module, choose M here: the
336 module will be called exynos-rng.
340 config CRYPTO_DEV_S5P
341 tristate "Support for Samsung S5PV210/Exynos crypto accelerator"
342 depends on ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
345 select CRYPTO_SKCIPHER
347 This option allows you to have support for S5P crypto acceleration.
348 Select this to offload Samsung S5PV210 or S5PC110, Exynos from AES
349 algorithms execution.
351 config CRYPTO_DEV_EXYNOS_HASH
352 bool "Support for Samsung Exynos HASH accelerator"
353 depends on CRYPTO_DEV_S5P
354 depends on !CRYPTO_DEV_EXYNOS_RNG && CRYPTO_DEV_EXYNOS_RNG!=m
359 Select this to offload Exynos from HASH MD5/SHA1/SHA256.
360 This will select software SHA1, MD5 and SHA256 as they are
361 needed for small and zero-size messages.
362 HASH algorithms will be disabled if EXYNOS_RNG
363 is enabled due to hw conflict.
366 bool "Support for IBM PowerPC Nest (NX) cryptographic acceleration"
369 This enables support for the NX hardware cryptographic accelerator
370 coprocessor that is in IBM PowerPC P7+ or later processors. This
371 does not actually enable any drivers, it only allows you to select
372 which acceleration type (encryption and/or compression) to enable.
375 source "drivers/crypto/nx/Kconfig"
378 config CRYPTO_DEV_ATMEL_AUTHENC
379 bool "Support for Atmel IPSEC/SSL hw accelerator"
380 depends on ARCH_AT91 || COMPILE_TEST
381 depends on CRYPTO_DEV_ATMEL_AES
383 Some Atmel processors can combine the AES and SHA hw accelerators
384 to enhance support of IPSEC/SSL.
385 Select this if you want to use the Atmel modules for
386 authenc(hmac(shaX),Y(cbc)) algorithms.
388 config CRYPTO_DEV_ATMEL_AES
389 tristate "Support for Atmel AES hw accelerator"
390 depends on ARCH_AT91 || COMPILE_TEST
393 select CRYPTO_SKCIPHER
394 select CRYPTO_AUTHENC if CRYPTO_DEV_ATMEL_AUTHENC
395 select CRYPTO_DEV_ATMEL_SHA if CRYPTO_DEV_ATMEL_AUTHENC
397 Some Atmel processors have AES hw accelerator.
398 Select this if you want to use the Atmel module for
401 To compile this driver as a module, choose M here: the module
402 will be called atmel-aes.
404 config CRYPTO_DEV_ATMEL_TDES
405 tristate "Support for Atmel DES/TDES hw accelerator"
406 depends on ARCH_AT91 || COMPILE_TEST
407 select CRYPTO_LIB_DES
408 select CRYPTO_SKCIPHER
410 Some Atmel processors have DES/TDES hw accelerator.
411 Select this if you want to use the Atmel module for
414 To compile this driver as a module, choose M here: the module
415 will be called atmel-tdes.
417 config CRYPTO_DEV_ATMEL_SHA
418 tristate "Support for Atmel SHA hw accelerator"
419 depends on ARCH_AT91 || COMPILE_TEST
422 Some Atmel processors have SHA1/SHA224/SHA256/SHA384/SHA512
424 Select this if you want to use the Atmel module for
425 SHA1/SHA224/SHA256/SHA384/SHA512 algorithms.
427 To compile this driver as a module, choose M here: the module
428 will be called atmel-sha.
430 config CRYPTO_DEV_ATMEL_I2C
434 config CRYPTO_DEV_ATMEL_ECC
435 tristate "Support for Microchip / Atmel ECC hw accelerator"
437 select CRYPTO_DEV_ATMEL_I2C
441 Microhip / Atmel ECC hw accelerator.
442 Select this if you want to use the Microchip / Atmel module for
445 To compile this driver as a module, choose M here: the module
446 will be called atmel-ecc.
448 config CRYPTO_DEV_ATMEL_SHA204A
449 tristate "Support for Microchip / Atmel SHA accelerator and RNG"
451 select CRYPTO_DEV_ATMEL_I2C
455 Microhip / Atmel SHA accelerator and RNG.
456 Select this if you want to use the Microchip / Atmel SHA204A
457 module as a random number generator. (Other functions of the
458 chip are currently not exposed by this driver)
460 To compile this driver as a module, choose M here: the module
461 will be called atmel-sha204a.
463 config CRYPTO_DEV_CCP
464 bool "Support for AMD Secure Processor"
465 depends on ((X86 && PCI) || (ARM64 && (OF_ADDRESS || ACPI))) && HAS_IOMEM
467 The AMD Secure Processor provides support for the Cryptographic Coprocessor
468 (CCP) and the Platform Security Processor (PSP) devices.
471 source "drivers/crypto/ccp/Kconfig"
474 config CRYPTO_DEV_MXS_DCP
475 tristate "Support for Freescale MXS DCP"
476 depends on (ARCH_MXS || ARCH_MXC)
481 select CRYPTO_SKCIPHER
484 The Freescale i.MX23/i.MX28 has SHA1/SHA256 and AES128 CBC/ECB
485 co-processor on the die.
487 To compile this driver as a module, choose M here: the module
488 will be called mxs-dcp.
490 source "drivers/crypto/cavium/cpt/Kconfig"
491 source "drivers/crypto/cavium/nitrox/Kconfig"
492 source "drivers/crypto/marvell/Kconfig"
493 source "drivers/crypto/intel/Kconfig"
495 config CRYPTO_DEV_CAVIUM_ZIP
496 tristate "Cavium ZIP driver"
497 depends on PCI && 64BIT && (ARM64 || COMPILE_TEST)
499 Select this option if you want to enable compression/decompression
500 acceleration on Cavium's ARM based SoCs
502 config CRYPTO_DEV_QCE
503 tristate "Qualcomm crypto engine accelerator"
504 depends on ARCH_QCOM || COMPILE_TEST
507 This driver supports Qualcomm crypto engine accelerator
508 hardware. To compile this driver as a module, choose M here. The
509 module will be called qcrypto.
511 config CRYPTO_DEV_QCE_SKCIPHER
513 depends on CRYPTO_DEV_QCE
515 select CRYPTO_LIB_DES
520 select CRYPTO_SKCIPHER
522 config CRYPTO_DEV_QCE_SHA
524 depends on CRYPTO_DEV_QCE
528 config CRYPTO_DEV_QCE_AEAD
530 depends on CRYPTO_DEV_QCE
531 select CRYPTO_AUTHENC
532 select CRYPTO_LIB_DES
535 prompt "Algorithms enabled for QCE acceleration"
536 default CRYPTO_DEV_QCE_ENABLE_ALL
537 depends on CRYPTO_DEV_QCE
539 This option allows to choose whether to build support for all algorithms
540 (default), hashes-only, or skciphers-only.
542 The QCE engine does not appear to scale as well as the CPU to handle
543 multiple crypto requests. While the ipq40xx chips have 4-core CPUs, the
544 QCE handles only 2 requests in parallel.
546 Ipsec throughput seems to improve when disabling either family of
547 algorithms, sharing the load with the CPU. Enabling skciphers-only
548 appears to work best.
550 config CRYPTO_DEV_QCE_ENABLE_ALL
551 bool "All supported algorithms"
552 select CRYPTO_DEV_QCE_SKCIPHER
553 select CRYPTO_DEV_QCE_SHA
554 select CRYPTO_DEV_QCE_AEAD
556 Enable all supported algorithms:
557 - AES (CBC, CTR, ECB, XTS)
561 - SHA256, HMAC-SHA256
563 config CRYPTO_DEV_QCE_ENABLE_SKCIPHER
564 bool "Symmetric-key ciphers only"
565 select CRYPTO_DEV_QCE_SKCIPHER
567 Enable symmetric-key ciphers only:
568 - AES (CBC, CTR, ECB, XTS)
572 config CRYPTO_DEV_QCE_ENABLE_SHA
573 bool "Hash/HMAC only"
574 select CRYPTO_DEV_QCE_SHA
576 Enable hashes/HMAC algorithms only:
578 - SHA256, HMAC-SHA256
580 config CRYPTO_DEV_QCE_ENABLE_AEAD
581 bool "AEAD algorithms only"
582 select CRYPTO_DEV_QCE_AEAD
584 Enable AEAD algorithms only:
590 config CRYPTO_DEV_QCE_SW_MAX_LEN
591 int "Default maximum request size to use software for AES"
592 depends on CRYPTO_DEV_QCE && CRYPTO_DEV_QCE_SKCIPHER
595 This sets the default maximum request size to perform AES requests
596 using software instead of the crypto engine. It can be changed by
597 setting the aes_sw_max_len parameter.
599 Small blocks are processed faster in software than hardware.
600 Considering the 256-bit ciphers, software is 2-3 times faster than
601 qce at 256-bytes, 30% faster at 512, and about even at 768-bytes.
602 With 128-bit keys, the break-even point would be around 1024-bytes.
604 The default is set a little lower, to 512 bytes, to balance the
605 cost in CPU usage. The minimum recommended setting is 16-bytes
606 (1 AES block), since AES-GCM will fail if you set it lower.
607 Setting this to zero will send all requests to the hardware.
609 Note that 192-bit keys are not supported by the hardware and are
610 always processed by the software fallback, and all DES requests
611 are done by the hardware.
613 config CRYPTO_DEV_QCOM_RNG
614 tristate "Qualcomm Random Number Generator Driver"
615 depends on ARCH_QCOM || COMPILE_TEST
618 This driver provides support for the Random Number
619 Generator hardware found on Qualcomm SoCs.
621 To compile this driver as a module, choose M here. The
622 module will be called qcom-rng. If unsure, say N.
624 config CRYPTO_DEV_VMX
625 bool "Support for VMX cryptographic acceleration instructions"
626 depends on PPC64 && VSX
628 Support for VMX cryptographic acceleration instructions.
630 source "drivers/crypto/vmx/Kconfig"
632 config CRYPTO_DEV_IMGTEC_HASH
633 tristate "Imagination Technologies hardware hash accelerator"
634 depends on MIPS || COMPILE_TEST
640 This driver interfaces with the Imagination Technologies
641 hardware hash accelerator. Supporting MD5/SHA1/SHA224/SHA256
644 config CRYPTO_DEV_ROCKCHIP
645 tristate "Rockchip's Cryptographic Engine driver"
646 depends on OF && ARCH_ROCKCHIP
653 select CRYPTO_LIB_DES
658 select CRYPTO_SKCIPHER
661 This driver interfaces with the hardware crypto accelerator.
662 Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode.
664 config CRYPTO_DEV_ROCKCHIP_DEBUG
665 bool "Enable Rockchip crypto stats"
666 depends on CRYPTO_DEV_ROCKCHIP
669 Say y to enable Rockchip crypto debug stats.
670 This will create /sys/kernel/debug/rk3288_crypto/stats for displaying
671 the number of requests per algorithm and other internal stats.
674 config CRYPTO_DEV_ZYNQMP_AES
675 tristate "Support for Xilinx ZynqMP AES hw accelerator"
676 depends on ZYNQMP_FIRMWARE || COMPILE_TEST
681 Xilinx ZynqMP has AES-GCM engine used for symmetric key
682 encryption and decryption. This driver interfaces with AES hw
683 accelerator. Select this if you want to use the ZynqMP module
686 config CRYPTO_DEV_ZYNQMP_SHA3
687 tristate "Support for Xilinx ZynqMP SHA3 hardware accelerator"
688 depends on ZYNQMP_FIRMWARE || COMPILE_TEST
691 Xilinx ZynqMP has SHA3 engine used for secure hash calculation.
692 This driver interfaces with SHA3 hardware engine.
693 Select this if you want to use the ZynqMP module
694 for SHA3 hash computation.
696 source "drivers/crypto/chelsio/Kconfig"
698 source "drivers/crypto/virtio/Kconfig"
700 config CRYPTO_DEV_BCM_SPU
701 tristate "Broadcom symmetric crypto/hash acceleration support"
702 depends on ARCH_BCM_IPROC
705 select CRYPTO_AUTHENC
706 select CRYPTO_LIB_DES
712 This driver provides support for Broadcom crypto acceleration using the
713 Secure Processing Unit (SPU). The SPU driver registers skcipher,
714 ahash, and aead algorithms with the kernel cryptographic API.
716 source "drivers/crypto/stm32/Kconfig"
718 config CRYPTO_DEV_SAFEXCEL
719 tristate "Inside Secure's SafeXcel cryptographic engine driver"
720 depends on (OF || PCI || COMPILE_TEST) && HAS_IOMEM
721 select CRYPTO_LIB_AES
722 select CRYPTO_AUTHENC
723 select CRYPTO_SKCIPHER
724 select CRYPTO_LIB_DES
731 select CRYPTO_CHACHA20POLY1305
734 This driver interfaces with the SafeXcel EIP-97 and EIP-197 cryptographic
735 engines designed by Inside Secure. It currently accelerates DES, 3DES and
736 AES block ciphers in ECB and CBC mode, as well as SHA1, SHA224, SHA256,
737 SHA384 and SHA512 hash algorithms for both basic hash and HMAC.
738 Additionally, it accelerates combined AES-CBC/HMAC-SHA AEAD operations.
740 config CRYPTO_DEV_ARTPEC6
741 tristate "Support for Axis ARTPEC-6/7 hardware crypto acceleration."
742 depends on ARM && (ARCH_ARTPEC || COMPILE_TEST)
747 select CRYPTO_SKCIPHER
754 Enables the driver for the on-chip crypto accelerator
757 To compile this driver as a module, choose M here.
759 config CRYPTO_DEV_CCREE
760 tristate "Support for ARM TrustZone CryptoCell family of security processors"
761 depends on CRYPTO && CRYPTO_HW && OF && HAS_DMA
764 select CRYPTO_SKCIPHER
765 select CRYPTO_LIB_DES
767 select CRYPTO_AUTHENC
778 select CRYPTO_SM4_GENERIC
779 select CRYPTO_SM3_GENERIC
781 Say 'Y' to enable a driver for the REE interface of the Arm
782 TrustZone CryptoCell family of processors. Currently the
783 CryptoCell 713, 703, 712, 710 and 630 are supported.
784 Choose this if you wish to use hardware acceleration of
785 cryptographic operations on the system REE.
788 source "drivers/crypto/hisilicon/Kconfig"
790 source "drivers/crypto/amlogic/Kconfig"
792 config CRYPTO_DEV_SA2UL
793 tristate "Support for TI security accelerator"
794 depends on ARCH_K3 || COMPILE_TEST
797 select CRYPTO_AUTHENC
805 K3 devices include a security accelerator engine that may be
806 used for crypto offload. Select this if you want to use hardware
807 acceleration for cryptographic algorithms on these devices.
809 source "drivers/crypto/aspeed/Kconfig"