| 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | |
| 3 | config CRYPTO_HASH_INFO |
| 4 | bool |
| 5 | |
| 6 | config CRYPTO_LIB_UTILS |
| 7 | tristate |
| 8 | |
| 9 | config CRYPTO_LIB_AES |
| 10 | tristate |
| 11 | # Select dependencies of modes that are part of libaes. |
| 12 | select CRYPTO_LIB_GF128HASH if CRYPTO_LIB_AES_GCM != n |
| 13 | select CRYPTO_LIB_UTILS |
| 14 | |
| 15 | config CRYPTO_LIB_AES_ARCH |
| 16 | bool |
| 17 | depends on CRYPTO_LIB_AES && !UML && !KMSAN |
| 18 | default y if ARM |
| 19 | default y if ARM64 |
| 20 | default y if PPC && (SPE || (PPC64 && VSX)) |
| 21 | default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \ |
| 22 | RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS |
| 23 | default y if S390 |
| 24 | default y if SPARC64 |
| 25 | default y if X86 |
| 26 | |
| 27 | config CRYPTO_LIB_AESCFB |
| 28 | tristate |
| 29 | select CRYPTO_LIB_AES |
| 30 | select CRYPTO_LIB_UTILS |
| 31 | |
| 32 | config CRYPTO_LIB_AES_CBC |
| 33 | tristate |
| 34 | select CRYPTO_LIB_AES |
| 35 | help |
| 36 | The AES-CBC and AES-CBC-CTS library functions. |
| 37 | |
| 38 | config CRYPTO_LIB_AES_CBC_MACS |
| 39 | tristate |
| 40 | select CRYPTO_LIB_AES |
| 41 | help |
| 42 | The AES-CMAC, AES-XCBC-MAC, and AES-CBC-MAC library functions. Select |
| 43 | this if your module uses any of the functions from |
| 44 | <crypto/aes-cbc-macs.h>. |
| 45 | |
| 46 | config CRYPTO_LIB_AES_CCM |
| 47 | tristate |
| 48 | select CRYPTO_LIB_AES |
| 49 | select CRYPTO_LIB_AES_CBC_MACS |
| 50 | select CRYPTO_LIB_AES_CTR |
| 51 | help |
| 52 | The AES-CCM library functions. |
| 53 | |
| 54 | config CRYPTO_LIB_AES_CTR |
| 55 | tristate |
| 56 | select CRYPTO_LIB_AES |
| 57 | help |
| 58 | The AES-CTR and AES-XCTR library functions. |
| 59 | |
| 60 | config CRYPTO_LIB_AES_ECB |
| 61 | tristate |
| 62 | select CRYPTO_LIB_AES |
| 63 | help |
| 64 | The AES-ECB library functions. |
| 65 | |
| 66 | config CRYPTO_LIB_AES_GCM |
| 67 | tristate |
| 68 | select CRYPTO_LIB_AES |
| 69 | select CRYPTO_LIB_AES_CTR |
| 70 | help |
| 71 | The AES-GCM library functions. |
| 72 | |
| 73 | config CRYPTO_LIB_AES_XTS |
| 74 | tristate |
| 75 | select CRYPTO_LIB_AES |
| 76 | help |
| 77 | The AES-XTS library functions. |
| 78 | |
| 79 | config CRYPTO_LIB_ARC4 |
| 80 | tristate |
| 81 | |
| 82 | config CRYPTO_LIB_GF128MUL |
| 83 | tristate |
| 84 | |
| 85 | config CRYPTO_LIB_BLAKE2B |
| 86 | tristate |
| 87 | help |
| 88 | The BLAKE2b library functions. Select this if your module uses any of |
| 89 | the functions from <crypto/blake2b.h>. |
| 90 | |
| 91 | config CRYPTO_LIB_BLAKE2B_ARCH |
| 92 | bool |
| 93 | depends on CRYPTO_LIB_BLAKE2B && !UML |
| 94 | default y if ARM && KERNEL_MODE_NEON |
| 95 | |
| 96 | # BLAKE2s support is always built-in, so there's no CRYPTO_LIB_BLAKE2S option. |
| 97 | |
| 98 | config CRYPTO_LIB_BLAKE2S_ARCH |
| 99 | bool |
| 100 | depends on !UML |
| 101 | default y if ARM |
| 102 | default y if X86_64 |
| 103 | |
| 104 | config CRYPTO_LIB_CHACHA |
| 105 | tristate |
| 106 | select CRYPTO_LIB_UTILS |
| 107 | help |
| 108 | Enable the ChaCha library interface. Select this if your module uses |
| 109 | chacha_crypt() or hchacha_block(). |
| 110 | |
| 111 | config CRYPTO_LIB_CHACHA_ARCH |
| 112 | bool |
| 113 | depends on CRYPTO_LIB_CHACHA && !UML && !KMSAN |
| 114 | default y if ARM |
| 115 | default y if ARM64 |
| 116 | default y if MIPS && CPU_MIPS32_R2 |
| 117 | default y if PPC64 && CPU_LITTLE_ENDIAN && VSX |
| 118 | default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \ |
| 119 | RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS |
| 120 | default y if S390 |
| 121 | default y if X86_64 |
| 122 | |
| 123 | config CRYPTO_LIB_CURVE25519 |
| 124 | tristate |
| 125 | select CRYPTO_LIB_UTILS |
| 126 | help |
| 127 | The Curve25519 library functions. Select this if your module uses any |
| 128 | of the functions from <crypto/curve25519.h>. |
| 129 | |
| 130 | config CRYPTO_LIB_CURVE25519_ARCH |
| 131 | bool |
| 132 | depends on CRYPTO_LIB_CURVE25519 && !UML && !KMSAN |
| 133 | default y if ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN |
| 134 | default y if PPC64 && CPU_LITTLE_ENDIAN |
| 135 | default y if X86_64 |
| 136 | |
| 137 | config CRYPTO_LIB_CURVE25519_GENERIC |
| 138 | bool |
| 139 | depends on CRYPTO_LIB_CURVE25519 |
| 140 | default y if !CRYPTO_LIB_CURVE25519_ARCH || ARM || X86_64 |
| 141 | |
| 142 | config CRYPTO_LIB_DES |
| 143 | tristate |
| 144 | |
| 145 | config CRYPTO_LIB_GF128HASH |
| 146 | tristate |
| 147 | help |
| 148 | The GHASH and POLYVAL library functions. Select this if your module |
| 149 | uses any of the functions from <crypto/gf128hash.h>. |
| 150 | |
| 151 | config CRYPTO_LIB_GF128HASH_ARCH |
| 152 | bool |
| 153 | depends on CRYPTO_LIB_GF128HASH && !UML |
| 154 | default y if ARM && KERNEL_MODE_NEON |
| 155 | default y if ARM64 |
| 156 | default y if PPC64 && VSX |
| 157 | default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \ |
| 158 | RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS |
| 159 | default y if S390 |
| 160 | default y if X86_64 |
| 161 | |
| 162 | config CRYPTO_LIB_MD5 |
| 163 | tristate |
| 164 | help |
| 165 | The MD5 and HMAC-MD5 library functions. Select this if your module |
| 166 | uses any of the functions from <crypto/md5.h>. |
| 167 | |
| 168 | config CRYPTO_LIB_MLDSA |
| 169 | tristate |
| 170 | select CRYPTO_LIB_SHA3 |
| 171 | help |
| 172 | The ML-DSA library functions. Select this if your module uses any of |
| 173 | the functions from <crypto/mldsa.h>. |
| 174 | |
| 175 | config CRYPTO_LIB_NH |
| 176 | tristate |
| 177 | help |
| 178 | Implementation of the NH almost-universal hash function, specifically |
| 179 | the variant of NH used in Adiantum. |
| 180 | |
| 181 | config CRYPTO_LIB_NH_ARCH |
| 182 | bool |
| 183 | depends on CRYPTO_LIB_NH && !UML && !KMSAN |
| 184 | default y if ARM && KERNEL_MODE_NEON |
| 185 | default y if ARM64 |
| 186 | default y if X86_64 |
| 187 | |
| 188 | config CRYPTO_LIB_POLY1305 |
| 189 | tristate |
| 190 | help |
| 191 | The Poly1305 library functions. Select this if your module uses any |
| 192 | of the functions from <crypto/poly1305.h>. |
| 193 | |
| 194 | config CRYPTO_LIB_POLY1305_ARCH |
| 195 | bool |
| 196 | depends on CRYPTO_LIB_POLY1305 && !UML && !KMSAN |
| 197 | default y if ARM |
| 198 | default y if ARM64 |
| 199 | default y if MIPS |
| 200 | # The PPC64 code needs to be fixed to work in softirq context. |
| 201 | default y if PPC64 && CPU_LITTLE_ENDIAN && VSX && BROKEN |
| 202 | default y if RISCV |
| 203 | default y if X86_64 |
| 204 | |
| 205 | # This symbol controls the inclusion of the Poly1305 generic code. This differs |
| 206 | # from most of the other algorithms, which handle the generic code |
| 207 | # "automatically" via __maybe_unused. This is needed so that the Adiantum code, |
| 208 | # which calls the poly1305_core_*() functions directly, can enable them. |
| 209 | config CRYPTO_LIB_POLY1305_GENERIC |
| 210 | bool |
| 211 | depends on CRYPTO_LIB_POLY1305 |
| 212 | # Enable if there's no arch impl or the arch impl requires the generic |
| 213 | # impl as a fallback. (Or if selected explicitly.) |
| 214 | default y if !CRYPTO_LIB_POLY1305_ARCH || PPC64 |
| 215 | |
| 216 | config CRYPTO_LIB_POLY1305_RSIZE |
| 217 | int |
| 218 | default 2 if MIPS || RISCV |
| 219 | default 11 if X86_64 |
| 220 | default 9 if ARM || ARM64 |
| 221 | default 1 |
| 222 | |
| 223 | config CRYPTO_LIB_CHACHA20POLY1305 |
| 224 | tristate |
| 225 | select CRYPTO_LIB_CHACHA |
| 226 | select CRYPTO_LIB_POLY1305 |
| 227 | select CRYPTO_LIB_UTILS |
| 228 | |
| 229 | config CRYPTO_LIB_SHA1 |
| 230 | tristate |
| 231 | help |
| 232 | The SHA-1 and HMAC-SHA1 library functions. Select this if your module |
| 233 | uses any of the functions from <crypto/sha1.h>. |
| 234 | |
| 235 | config CRYPTO_LIB_SHA1_ARCH |
| 236 | bool |
| 237 | depends on CRYPTO_LIB_SHA1 && !UML |
| 238 | default y if ARM |
| 239 | default y if ARM64 |
| 240 | default y if MIPS && CPU_CAVIUM_OCTEON |
| 241 | default y if PPC |
| 242 | default y if S390 |
| 243 | default y if SPARC64 |
| 244 | default y if X86_64 |
| 245 | |
| 246 | config CRYPTO_LIB_SHA256 |
| 247 | tristate |
| 248 | help |
| 249 | The SHA-224, SHA-256, HMAC-SHA224, and HMAC-SHA256 library functions. |
| 250 | Select this if your module uses any of these functions from |
| 251 | <crypto/sha2.h>. |
| 252 | |
| 253 | config CRYPTO_LIB_SHA256_ARCH |
| 254 | bool |
| 255 | depends on CRYPTO_LIB_SHA256 && !UML |
| 256 | default y if ARM && !CPU_V7M |
| 257 | default y if ARM64 |
| 258 | default y if MIPS && CPU_CAVIUM_OCTEON |
| 259 | default y if PPC && SPE |
| 260 | default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \ |
| 261 | RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS |
| 262 | default y if S390 |
| 263 | default y if SPARC64 |
| 264 | default y if X86_64 |
| 265 | |
| 266 | config CRYPTO_LIB_SHA512 |
| 267 | tristate |
| 268 | help |
| 269 | The SHA-384, SHA-512, HMAC-SHA384, and HMAC-SHA512 library functions. |
| 270 | Select this if your module uses any of these functions from |
| 271 | <crypto/sha2.h>. |
| 272 | |
| 273 | config CRYPTO_LIB_SHA512_ARCH |
| 274 | bool |
| 275 | depends on CRYPTO_LIB_SHA512 && !UML |
| 276 | default y if ARM && !CPU_V7M |
| 277 | default y if ARM64 |
| 278 | default y if MIPS && CPU_CAVIUM_OCTEON |
| 279 | default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \ |
| 280 | RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS |
| 281 | default y if S390 |
| 282 | default y if SPARC64 |
| 283 | default y if X86_64 |
| 284 | |
| 285 | config CRYPTO_LIB_SHA3 |
| 286 | tristate |
| 287 | select CRYPTO_LIB_UTILS |
| 288 | help |
| 289 | The SHA3 library functions. Select this if your module uses any of |
| 290 | the functions from <crypto/sha3.h>. |
| 291 | |
| 292 | config CRYPTO_LIB_SHA3_ARCH |
| 293 | bool |
| 294 | depends on CRYPTO_LIB_SHA3 && !UML |
| 295 | default y if ARM64 |
| 296 | default y if S390 |
| 297 | |
| 298 | config CRYPTO_LIB_SM3 |
| 299 | tristate |
| 300 | help |
| 301 | The SM3 library functions. Select this if your module uses any of the |
| 302 | functions from <crypto/sm3.h>. |
| 303 | |
| 304 | config CRYPTO_LIB_SM3_ARCH |
| 305 | bool |
| 306 | depends on CRYPTO_LIB_SM3 && !UML |
| 307 | default y if ARM64 |
| 308 | default y if RISCV && 64BIT && TOOLCHAIN_HAS_VECTOR_CRYPTO && \ |
| 309 | RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS |
| 310 | default y if X86_64 |