1# 2# Generic algorithms support 3# 4config XOR_BLOCKS 5 tristate 6 7# 8# async_tx api: hardware offloaded memory transfer/transform support 9# 10source "crypto/async_tx/Kconfig" 11 12# 13# Cryptographic API Configuration 14# 15menuconfig CRYPTO 16 tristate "Cryptographic API" 17 help 18 This option provides the core Cryptographic API. 19 20if CRYPTO 21 22comment "Crypto core or helper" 23 24config CRYPTO_ALGAPI 25 tristate 26 help 27 This option provides the API for cryptographic algorithms. 28 29config CRYPTO_AEAD 30 tristate 31 select CRYPTO_ALGAPI 32 33config CRYPTO_BLKCIPHER 34 tristate 35 select CRYPTO_ALGAPI 36 37config CRYPTO_HASH 38 tristate 39 select CRYPTO_ALGAPI 40 41config CRYPTO_MANAGER 42 tristate "Cryptographic algorithm manager" 43 select CRYPTO_ALGAPI 44 help 45 Create default cryptographic template instantiations such as 46 cbc(aes). 47 48config CRYPTO_GF128MUL 49 tristate "GF(2^128) multiplication functions (EXPERIMENTAL)" 50 depends on EXPERIMENTAL 51 help 52 Efficient table driven implementation of multiplications in the 53 field GF(2^128). This is needed by some cypher modes. This 54 option will be selected automatically if you select such a 55 cipher mode. Only select this option by hand if you expect to load 56 an external module that requires these functions. 57 58config CRYPTO_NULL 59 tristate "Null algorithms" 60 select CRYPTO_ALGAPI 61 select CRYPTO_BLKCIPHER 62 help 63 These are 'Null' algorithms, used by IPsec, which do nothing. 64 65config CRYPTO_CRYPTD 66 tristate "Software async crypto daemon" 67 select CRYPTO_BLKCIPHER 68 select CRYPTO_MANAGER 69 help 70 This is a generic software asynchronous crypto daemon that 71 converts an arbitrary synchronous software crypto algorithm 72 into an asynchronous algorithm that executes in a kernel thread. 73 74config CRYPTO_AUTHENC 75 tristate "Authenc support" 76 select CRYPTO_AEAD 77 select CRYPTO_BLKCIPHER 78 select CRYPTO_MANAGER 79 select CRYPTO_HASH 80 help 81 Authenc: Combined mode wrapper for IPsec. 82 This is required for IPSec. 83 84config CRYPTO_TEST 85 tristate "Testing module" 86 depends on m 87 select CRYPTO_ALGAPI 88 select CRYPTO_AEAD 89 select CRYPTO_BLKCIPHER 90 help 91 Quick & dirty crypto test module. 92 93comment "Authenticated Encryption with Associated Data" 94 95config CRYPTO_CCM 96 tristate "CCM support" 97 select CRYPTO_CTR 98 select CRYPTO_AEAD 99 help 100 Support for Counter with CBC MAC. Required for IPsec. 101 102config CRYPTO_GCM 103 tristate "GCM/GMAC support" 104 select CRYPTO_CTR 105 select CRYPTO_AEAD 106 select CRYPTO_GF128MUL 107 help 108 Support for Galois/Counter Mode (GCM) and Galois Message 109 Authentication Code (GMAC). Required for IPSec. 110 111config CRYPTO_SEQIV 112 tristate "Sequence Number IV Generator" 113 select CRYPTO_AEAD 114 select CRYPTO_BLKCIPHER 115 help 116 This IV generator generates an IV based on a sequence number by 117 xoring it with a salt. This algorithm is mainly useful for CTR 118 119comment "Block modes" 120 121config CRYPTO_CBC 122 tristate "CBC support" 123 select CRYPTO_BLKCIPHER 124 select CRYPTO_MANAGER 125 help 126 CBC: Cipher Block Chaining mode 127 This block cipher algorithm is required for IPSec. 128 129config CRYPTO_CTR 130 tristate "CTR support" 131 select CRYPTO_BLKCIPHER 132 select CRYPTO_SEQIV 133 select CRYPTO_MANAGER 134 help 135 CTR: Counter mode 136 This block cipher algorithm is required for IPSec. 137 138config CRYPTO_CTS 139 tristate "CTS support" 140 select CRYPTO_BLKCIPHER 141 help 142 CTS: Cipher Text Stealing 143 This is the Cipher Text Stealing mode as described by 144 Section 8 of rfc2040 and referenced by rfc3962. 145 (rfc3962 includes errata information in its Appendix A) 146 This mode is required for Kerberos gss mechanism support 147 for AES encryption. 148 149config CRYPTO_ECB 150 tristate "ECB support" 151 select CRYPTO_BLKCIPHER 152 select CRYPTO_MANAGER 153 help 154 ECB: Electronic CodeBook mode 155 This is the simplest block cipher algorithm. It simply encrypts 156 the input block by block. 157 158config CRYPTO_LRW 159 tristate "LRW support (EXPERIMENTAL)" 160 depends on EXPERIMENTAL 161 select CRYPTO_BLKCIPHER 162 select CRYPTO_MANAGER 163 select CRYPTO_GF128MUL 164 help 165 LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable 166 narrow block cipher mode for dm-crypt. Use it with cipher 167 specification string aes-lrw-benbi, the key must be 256, 320 or 384. 168 The first 128, 192 or 256 bits in the key are used for AES and the 169 rest is used to tie each cipher block to its logical position. 170 171config CRYPTO_PCBC 172 tristate "PCBC support" 173 select CRYPTO_BLKCIPHER 174 select CRYPTO_MANAGER 175 help 176 PCBC: Propagating Cipher Block Chaining mode 177 This block cipher algorithm is required for RxRPC. 178 179config CRYPTO_XTS 180 tristate "XTS support (EXPERIMENTAL)" 181 depends on EXPERIMENTAL 182 select CRYPTO_BLKCIPHER 183 select CRYPTO_MANAGER 184 select CRYPTO_GF128MUL 185 help 186 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain, 187 key size 256, 384 or 512 bits. This implementation currently 188 can't handle a sectorsize which is not a multiple of 16 bytes. 189 190comment "Hash modes" 191 192config CRYPTO_HMAC 193 tristate "HMAC support" 194 select CRYPTO_HASH 195 select CRYPTO_MANAGER 196 help 197 HMAC: Keyed-Hashing for Message Authentication (RFC2104). 198 This is required for IPSec. 199 200config CRYPTO_XCBC 201 tristate "XCBC support" 202 depends on EXPERIMENTAL 203 select CRYPTO_HASH 204 select CRYPTO_MANAGER 205 help 206 XCBC: Keyed-Hashing with encryption algorithm 207 http://www.ietf.org/rfc/rfc3566.txt 208 http://csrc.nist.gov/encryption/modes/proposedmodes/ 209 xcbc-mac/xcbc-mac-spec.pdf 210 211comment "Digest" 212 213config CRYPTO_CRC32C 214 tristate "CRC32c CRC algorithm" 215 select CRYPTO_ALGAPI 216 select LIBCRC32C 217 help 218 Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used 219 by iSCSI for header and data digests and by others. 220 See Castagnoli93. This implementation uses lib/libcrc32c. 221 Module will be crc32c. 222 223config CRYPTO_MD4 224 tristate "MD4 digest algorithm" 225 select CRYPTO_ALGAPI 226 help 227 MD4 message digest algorithm (RFC1320). 228 229config CRYPTO_MD5 230 tristate "MD5 digest algorithm" 231 select CRYPTO_ALGAPI 232 help 233 MD5 message digest algorithm (RFC1321). 234 235config CRYPTO_MICHAEL_MIC 236 tristate "Michael MIC keyed digest algorithm" 237 select CRYPTO_ALGAPI 238 help 239 Michael MIC is used for message integrity protection in TKIP 240 (IEEE 802.11i). This algorithm is required for TKIP, but it 241 should not be used for other purposes because of the weakness 242 of the algorithm. 243 244config CRYPTO_SHA1 245 tristate "SHA1 digest algorithm" 246 select CRYPTO_ALGAPI 247 help 248 SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2). 249 250config CRYPTO_SHA256 251 tristate "SHA224 and SHA256 digest algorithm" 252 select CRYPTO_ALGAPI 253 help 254 SHA256 secure hash standard (DFIPS 180-2). 255 256 This version of SHA implements a 256 bit hash with 128 bits of 257 security against collision attacks. 258 259 This code also includes SHA-224, a 224 bit hash with 112 bits 260 of security against collision attacks. 261 262config CRYPTO_SHA512 263 tristate "SHA384 and SHA512 digest algorithms" 264 select CRYPTO_ALGAPI 265 help 266 SHA512 secure hash standard (DFIPS 180-2). 267 268 This version of SHA implements a 512 bit hash with 256 bits of 269 security against collision attacks. 270 271 This code also includes SHA-384, a 384 bit hash with 192 bits 272 of security against collision attacks. 273 274config CRYPTO_TGR192 275 tristate "Tiger digest algorithms" 276 select CRYPTO_ALGAPI 277 help 278 Tiger hash algorithm 192, 160 and 128-bit hashes 279 280 Tiger is a hash function optimized for 64-bit processors while 281 still having decent performance on 32-bit processors. 282 Tiger was developed by Ross Anderson and Eli Biham. 283 284 See also: 285 <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>. 286 287config CRYPTO_WP512 288 tristate "Whirlpool digest algorithms" 289 select CRYPTO_ALGAPI 290 help 291 Whirlpool hash algorithm 512, 384 and 256-bit hashes 292 293 Whirlpool-512 is part of the NESSIE cryptographic primitives. 294 Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard 295 296 See also: 297 <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html> 298 299comment "Ciphers" 300 301config CRYPTO_AES 302 tristate "AES cipher algorithms" 303 select CRYPTO_ALGAPI 304 help 305 AES cipher algorithms (FIPS-197). AES uses the Rijndael 306 algorithm. 307 308 Rijndael appears to be consistently a very good performer in 309 both hardware and software across a wide range of computing 310 environments regardless of its use in feedback or non-feedback 311 modes. Its key setup time is excellent, and its key agility is 312 good. Rijndael's very low memory requirements make it very well 313 suited for restricted-space environments, in which it also 314 demonstrates excellent performance. Rijndael's operations are 315 among the easiest to defend against power and timing attacks. 316 317 The AES specifies three key sizes: 128, 192 and 256 bits 318 319 See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information. 320 321config CRYPTO_AES_586 322 tristate "AES cipher algorithms (i586)" 323 depends on (X86 || UML_X86) && !64BIT 324 select CRYPTO_ALGAPI 325 select CRYPTO_AES 326 help 327 AES cipher algorithms (FIPS-197). AES uses the Rijndael 328 algorithm. 329 330 Rijndael appears to be consistently a very good performer in 331 both hardware and software across a wide range of computing 332 environments regardless of its use in feedback or non-feedback 333 modes. Its key setup time is excellent, and its key agility is 334 good. Rijndael's very low memory requirements make it very well 335 suited for restricted-space environments, in which it also 336 demonstrates excellent performance. Rijndael's operations are 337 among the easiest to defend against power and timing attacks. 338 339 The AES specifies three key sizes: 128, 192 and 256 bits 340 341 See <http://csrc.nist.gov/encryption/aes/> for more information. 342 343config CRYPTO_AES_X86_64 344 tristate "AES cipher algorithms (x86_64)" 345 depends on (X86 || UML_X86) && 64BIT 346 select CRYPTO_ALGAPI 347 select CRYPTO_AES 348 help 349 AES cipher algorithms (FIPS-197). AES uses the Rijndael 350 algorithm. 351 352 Rijndael appears to be consistently a very good performer in 353 both hardware and software across a wide range of computing 354 environments regardless of its use in feedback or non-feedback 355 modes. Its key setup time is excellent, and its key agility is 356 good. Rijndael's very low memory requirements make it very well 357 suited for restricted-space environments, in which it also 358 demonstrates excellent performance. Rijndael's operations are 359 among the easiest to defend against power and timing attacks. 360 361 The AES specifies three key sizes: 128, 192 and 256 bits 362 363 See <http://csrc.nist.gov/encryption/aes/> for more information. 364 365config CRYPTO_ANUBIS 366 tristate "Anubis cipher algorithm" 367 select CRYPTO_ALGAPI 368 help 369 Anubis cipher algorithm. 370 371 Anubis is a variable key length cipher which can use keys from 372 128 bits to 320 bits in length. It was evaluated as a entrant 373 in the NESSIE competition. 374 375 See also: 376 <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/> 377 <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html> 378 379config CRYPTO_ARC4 380 tristate "ARC4 cipher algorithm" 381 select CRYPTO_ALGAPI 382 help 383 ARC4 cipher algorithm. 384 385 ARC4 is a stream cipher using keys ranging from 8 bits to 2048 386 bits in length. This algorithm is required for driver-based 387 WEP, but it should not be for other purposes because of the 388 weakness of the algorithm. 389 390config CRYPTO_BLOWFISH 391 tristate "Blowfish cipher algorithm" 392 select CRYPTO_ALGAPI 393 help 394 Blowfish cipher algorithm, by Bruce Schneier. 395 396 This is a variable key length cipher which can use keys from 32 397 bits to 448 bits in length. It's fast, simple and specifically 398 designed for use on "large microprocessors". 399 400 See also: 401 <http://www.schneier.com/blowfish.html> 402 403config CRYPTO_CAMELLIA 404 tristate "Camellia cipher algorithms" 405 depends on CRYPTO 406 select CRYPTO_ALGAPI 407 help 408 Camellia cipher algorithms module. 409 410 Camellia is a symmetric key block cipher developed jointly 411 at NTT and Mitsubishi Electric Corporation. 412 413 The Camellia specifies three key sizes: 128, 192 and 256 bits. 414 415 See also: 416 <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html> 417 418config CRYPTO_CAST5 419 tristate "CAST5 (CAST-128) cipher algorithm" 420 select CRYPTO_ALGAPI 421 help 422 The CAST5 encryption algorithm (synonymous with CAST-128) is 423 described in RFC2144. 424 425config CRYPTO_CAST6 426 tristate "CAST6 (CAST-256) cipher algorithm" 427 select CRYPTO_ALGAPI 428 help 429 The CAST6 encryption algorithm (synonymous with CAST-256) is 430 described in RFC2612. 431 432config CRYPTO_DES 433 tristate "DES and Triple DES EDE cipher algorithms" 434 select CRYPTO_ALGAPI 435 help 436 DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3). 437 438config CRYPTO_FCRYPT 439 tristate "FCrypt cipher algorithm" 440 select CRYPTO_ALGAPI 441 select CRYPTO_BLKCIPHER 442 help 443 FCrypt algorithm used by RxRPC. 444 445config CRYPTO_KHAZAD 446 tristate "Khazad cipher algorithm" 447 select CRYPTO_ALGAPI 448 help 449 Khazad cipher algorithm. 450 451 Khazad was a finalist in the initial NESSIE competition. It is 452 an algorithm optimized for 64-bit processors with good performance 453 on 32-bit processors. Khazad uses an 128 bit key size. 454 455 See also: 456 <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html> 457 458config CRYPTO_SALSA20 459 tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)" 460 depends on EXPERIMENTAL 461 select CRYPTO_BLKCIPHER 462 help 463 Salsa20 stream cipher algorithm. 464 465 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT 466 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/> 467 468 The Salsa20 stream cipher algorithm is designed by Daniel J. 469 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html> 470 471config CRYPTO_SALSA20_586 472 tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)" 473 depends on (X86 || UML_X86) && !64BIT 474 depends on EXPERIMENTAL 475 select CRYPTO_BLKCIPHER 476 help 477 Salsa20 stream cipher algorithm. 478 479 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT 480 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/> 481 482 The Salsa20 stream cipher algorithm is designed by Daniel J. 483 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html> 484 485config CRYPTO_SALSA20_X86_64 486 tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)" 487 depends on (X86 || UML_X86) && 64BIT 488 depends on EXPERIMENTAL 489 select CRYPTO_BLKCIPHER 490 help 491 Salsa20 stream cipher algorithm. 492 493 Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT 494 Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/> 495 496 The Salsa20 stream cipher algorithm is designed by Daniel J. 497 Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html> 498 499config CRYPTO_SEED 500 tristate "SEED cipher algorithm" 501 select CRYPTO_ALGAPI 502 help 503 SEED cipher algorithm (RFC4269). 504 505 SEED is a 128-bit symmetric key block cipher that has been 506 developed by KISA (Korea Information Security Agency) as a 507 national standard encryption algorithm of the Republic of Korea. 508 It is a 16 round block cipher with the key size of 128 bit. 509 510 See also: 511 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp> 512 513config CRYPTO_SERPENT 514 tristate "Serpent cipher algorithm" 515 select CRYPTO_ALGAPI 516 help 517 Serpent cipher algorithm, by Anderson, Biham & Knudsen. 518 519 Keys are allowed to be from 0 to 256 bits in length, in steps 520 of 8 bits. Also includes the 'Tnepres' algorithm, a reversed 521 variant of Serpent for compatibility with old kerneli.org code. 522 523 See also: 524 <http://www.cl.cam.ac.uk/~rja14/serpent.html> 525 526config CRYPTO_TEA 527 tristate "TEA, XTEA and XETA cipher algorithms" 528 select CRYPTO_ALGAPI 529 help 530 TEA cipher algorithm. 531 532 Tiny Encryption Algorithm is a simple cipher that uses 533 many rounds for security. It is very fast and uses 534 little memory. 535 536 Xtendend Tiny Encryption Algorithm is a modification to 537 the TEA algorithm to address a potential key weakness 538 in the TEA algorithm. 539 540 Xtendend Encryption Tiny Algorithm is a mis-implementation 541 of the XTEA algorithm for compatibility purposes. 542 543config CRYPTO_TWOFISH 544 tristate "Twofish cipher algorithm" 545 select CRYPTO_ALGAPI 546 select CRYPTO_TWOFISH_COMMON 547 help 548 Twofish cipher algorithm. 549 550 Twofish was submitted as an AES (Advanced Encryption Standard) 551 candidate cipher by researchers at CounterPane Systems. It is a 552 16 round block cipher supporting key sizes of 128, 192, and 256 553 bits. 554 555 See also: 556 <http://www.schneier.com/twofish.html> 557 558config CRYPTO_TWOFISH_COMMON 559 tristate 560 help 561 Common parts of the Twofish cipher algorithm shared by the 562 generic c and the assembler implementations. 563 564config CRYPTO_TWOFISH_586 565 tristate "Twofish cipher algorithms (i586)" 566 depends on (X86 || UML_X86) && !64BIT 567 select CRYPTO_ALGAPI 568 select CRYPTO_TWOFISH_COMMON 569 help 570 Twofish cipher algorithm. 571 572 Twofish was submitted as an AES (Advanced Encryption Standard) 573 candidate cipher by researchers at CounterPane Systems. It is a 574 16 round block cipher supporting key sizes of 128, 192, and 256 575 bits. 576 577 See also: 578 <http://www.schneier.com/twofish.html> 579 580config CRYPTO_TWOFISH_X86_64 581 tristate "Twofish cipher algorithm (x86_64)" 582 depends on (X86 || UML_X86) && 64BIT 583 select CRYPTO_ALGAPI 584 select CRYPTO_TWOFISH_COMMON 585 help 586 Twofish cipher algorithm (x86_64). 587 588 Twofish was submitted as an AES (Advanced Encryption Standard) 589 candidate cipher by researchers at CounterPane Systems. It is a 590 16 round block cipher supporting key sizes of 128, 192, and 256 591 bits. 592 593 See also: 594 <http://www.schneier.com/twofish.html> 595 596comment "Compression" 597 598config CRYPTO_DEFLATE 599 tristate "Deflate compression algorithm" 600 select CRYPTO_ALGAPI 601 select ZLIB_INFLATE 602 select ZLIB_DEFLATE 603 help 604 This is the Deflate algorithm (RFC1951), specified for use in 605 IPSec with the IPCOMP protocol (RFC3173, RFC2394). 606 607 You will most probably want this if using IPSec. 608 609config CRYPTO_LZO 610 tristate "LZO compression algorithm" 611 select CRYPTO_ALGAPI 612 select LZO_COMPRESS 613 select LZO_DECOMPRESS 614 help 615 This is the LZO algorithm. 616 617source "drivers/crypto/Kconfig" 618 619endif # if CRYPTO 620