1# SPDX-License-Identifier: GPL-2.0 2 3menu "Crypto library routines" 4 5config CRYPTO_HASH_INFO 6 bool 7 8config CRYPTO_LIB_UTILS 9 tristate 10 11config CRYPTO_LIB_AES 12 tristate 13 14config CRYPTO_LIB_AESCFB 15 tristate 16 select CRYPTO_LIB_AES 17 select CRYPTO_LIB_UTILS 18 19config CRYPTO_LIB_AESGCM 20 tristate 21 select CRYPTO_LIB_AES 22 select CRYPTO_LIB_GF128MUL 23 select CRYPTO_LIB_UTILS 24 25config CRYPTO_LIB_ARC4 26 tristate 27 28config CRYPTO_LIB_GF128MUL 29 tristate 30 31config CRYPTO_LIB_BLAKE2B 32 tristate 33 help 34 The BLAKE2b library functions. Select this if your module uses any of 35 the functions from <crypto/blake2b.h>. 36 37config CRYPTO_LIB_BLAKE2B_ARCH 38 bool 39 depends on CRYPTO_LIB_BLAKE2B && !UML 40 default y if ARM && KERNEL_MODE_NEON 41 42# BLAKE2s support is always built-in, so there's no CRYPTO_LIB_BLAKE2S option. 43 44config CRYPTO_LIB_BLAKE2S_ARCH 45 bool 46 depends on !UML 47 default y if ARM 48 default y if X86_64 49 50config CRYPTO_LIB_CHACHA 51 tristate 52 select CRYPTO_LIB_UTILS 53 help 54 Enable the ChaCha library interface. Select this if your module uses 55 chacha_crypt() or hchacha_block(). 56 57config CRYPTO_LIB_CHACHA_ARCH 58 bool 59 depends on CRYPTO_LIB_CHACHA && !UML && !KMSAN 60 default y if ARM 61 default y if ARM64 && KERNEL_MODE_NEON 62 default y if MIPS && CPU_MIPS32_R2 63 default y if PPC64 && CPU_LITTLE_ENDIAN && VSX 64 default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO 65 default y if S390 66 default y if X86_64 67 68config CRYPTO_LIB_CURVE25519 69 tristate 70 select CRYPTO_LIB_UTILS 71 help 72 The Curve25519 library functions. Select this if your module uses any 73 of the functions from <crypto/curve25519.h>. 74 75config CRYPTO_LIB_CURVE25519_ARCH 76 bool 77 depends on CRYPTO_LIB_CURVE25519 && !UML && !KMSAN 78 default y if ARM && KERNEL_MODE_NEON 79 default y if PPC64 && CPU_LITTLE_ENDIAN 80 default y if X86_64 81 82config CRYPTO_LIB_CURVE25519_GENERIC 83 bool 84 depends on CRYPTO_LIB_CURVE25519 85 default y if !CRYPTO_LIB_CURVE25519_ARCH || ARM || X86_64 86 87config CRYPTO_LIB_DES 88 tristate 89 90config CRYPTO_LIB_MD5 91 tristate 92 help 93 The MD5 and HMAC-MD5 library functions. Select this if your module 94 uses any of the functions from <crypto/md5.h>. 95 96config CRYPTO_LIB_MD5_ARCH 97 bool 98 depends on CRYPTO_LIB_MD5 && !UML 99 default y if MIPS && CPU_CAVIUM_OCTEON 100 default y if PPC 101 default y if SPARC64 102 103config CRYPTO_LIB_POLY1305 104 tristate 105 help 106 The Poly1305 library functions. Select this if your module uses any 107 of the functions from <crypto/poly1305.h>. 108 109config CRYPTO_LIB_POLY1305_ARCH 110 bool 111 depends on CRYPTO_LIB_POLY1305 && !UML && !KMSAN 112 default y if ARM 113 default y if ARM64 && KERNEL_MODE_NEON 114 default y if MIPS 115 # The PPC64 code needs to be fixed to work in softirq context. 116 default y if PPC64 && CPU_LITTLE_ENDIAN && VSX && BROKEN 117 default y if RISCV 118 default y if X86_64 119 120# This symbol controls the inclusion of the Poly1305 generic code. This differs 121# from most of the other algorithms, which handle the generic code 122# "automatically" via __maybe_unused. This is needed so that the Adiantum code, 123# which calls the poly1305_core_*() functions directly, can enable them. 124config CRYPTO_LIB_POLY1305_GENERIC 125 bool 126 depends on CRYPTO_LIB_POLY1305 127 # Enable if there's no arch impl or the arch impl requires the generic 128 # impl as a fallback. (Or if selected explicitly.) 129 default y if !CRYPTO_LIB_POLY1305_ARCH || PPC64 130 131config CRYPTO_LIB_POLY1305_RSIZE 132 int 133 default 2 if MIPS || RISCV 134 default 11 if X86_64 135 default 9 if ARM || ARM64 136 default 1 137 138config CRYPTO_LIB_POLYVAL 139 tristate 140 help 141 The POLYVAL library functions. Select this if your module uses any of 142 the functions from <crypto/polyval.h>. 143 144config CRYPTO_LIB_POLYVAL_ARCH 145 bool 146 depends on CRYPTO_LIB_POLYVAL && !UML 147 default y if ARM64 && KERNEL_MODE_NEON 148 149config CRYPTO_LIB_CHACHA20POLY1305 150 tristate 151 select CRYPTO_LIB_CHACHA 152 select CRYPTO_LIB_POLY1305 153 select CRYPTO_LIB_UTILS 154 155config CRYPTO_LIB_SHA1 156 tristate 157 help 158 The SHA-1 and HMAC-SHA1 library functions. Select this if your module 159 uses any of the functions from <crypto/sha1.h>. 160 161config CRYPTO_LIB_SHA1_ARCH 162 bool 163 depends on CRYPTO_LIB_SHA1 && !UML 164 default y if ARM 165 default y if ARM64 && KERNEL_MODE_NEON 166 default y if MIPS && CPU_CAVIUM_OCTEON 167 default y if PPC 168 default y if S390 169 default y if SPARC64 170 default y if X86_64 171 172config CRYPTO_LIB_SHA256 173 tristate 174 help 175 The SHA-224, SHA-256, HMAC-SHA224, and HMAC-SHA256 library functions. 176 Select this if your module uses any of these functions from 177 <crypto/sha2.h>. 178 179config CRYPTO_LIB_SHA256_ARCH 180 bool 181 depends on CRYPTO_LIB_SHA256 && !UML 182 default y if ARM && !CPU_V7M 183 default y if ARM64 184 default y if MIPS && CPU_CAVIUM_OCTEON 185 default y if PPC && SPE 186 default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO 187 default y if S390 188 default y if SPARC64 189 default y if X86_64 190 191config CRYPTO_LIB_SHA512 192 tristate 193 help 194 The SHA-384, SHA-512, HMAC-SHA384, and HMAC-SHA512 library functions. 195 Select this if your module uses any of these functions from 196 <crypto/sha2.h>. 197 198config CRYPTO_LIB_SHA512_ARCH 199 bool 200 depends on CRYPTO_LIB_SHA512 && !UML 201 default y if ARM && !CPU_V7M 202 default y if ARM64 203 default y if MIPS && CPU_CAVIUM_OCTEON 204 default y if RISCV && 64BIT && RISCV_ISA_V && TOOLCHAIN_HAS_VECTOR_CRYPTO 205 default y if S390 206 default y if SPARC64 207 default y if X86_64 208 209config CRYPTO_LIB_SHA3 210 tristate 211 select CRYPTO_LIB_UTILS 212 help 213 The SHA3 library functions. Select this if your module uses any of 214 the functions from <crypto/sha3.h>. 215 216config CRYPTO_LIB_SHA3_ARCH 217 bool 218 depends on CRYPTO_LIB_SHA3 && !UML 219 default y if ARM64 && KERNEL_MODE_NEON 220 default y if S390 221 222config CRYPTO_LIB_SM3 223 tristate 224 225source "lib/crypto/tests/Kconfig" 226 227endmenu 228