Kconfig 32 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132
  1. #
  2. # Generic algorithms support
  3. #
  4. config XOR_BLOCKS
  5. tristate
  6. #
  7. # async_tx api: hardware offloaded memory transfer/transform support
  8. #
  9. source "crypto/async_tx/Kconfig"
  10. #
  11. # Cryptographic API Configuration
  12. #
  13. menuconfig CRYPTO
  14. tristate "Cryptographic API"
  15. help
  16. This option provides the core Cryptographic API.
  17. if CRYPTO
  18. comment "Crypto core or helper"
  19. config CRYPTO_FIPS
  20. bool "FIPS 200 compliance"
  21. depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
  22. help
  23. This options enables the fips boot option which is
  24. required if you want to system to operate in a FIPS 200
  25. certification. You should say no unless you know what
  26. this is.
  27. config CRYPTO_FIPS_INTEG_COPY_ADDRESS
  28. hex "FIPS integrity check zImage offset"
  29. default 0x8A008000
  30. help
  31. This options sets the offset from stext address where
  32. zImage will be copied for integrity check if you want
  33. to system to operate in FIPS mode, which enables
  34. kernel crypto module.
  35. If you need to change this value, change in device
  36. specific configuration file instead of here.
  37. config CRYPTO_ALGAPI
  38. tristate
  39. select CRYPTO_ALGAPI2
  40. help
  41. This option provides the API for cryptographic algorithms.
  42. config CRYPTO_ALGAPI2
  43. tristate
  44. config CRYPTO_AEAD
  45. tristate
  46. select CRYPTO_AEAD2
  47. select CRYPTO_ALGAPI
  48. config CRYPTO_AEAD2
  49. tristate
  50. select CRYPTO_ALGAPI2
  51. config CRYPTO_BLKCIPHER
  52. tristate
  53. select CRYPTO_BLKCIPHER2
  54. select CRYPTO_ALGAPI
  55. config CRYPTO_BLKCIPHER2
  56. tristate
  57. select CRYPTO_ALGAPI2
  58. select CRYPTO_RNG2
  59. select CRYPTO_WORKQUEUE
  60. config CRYPTO_HASH
  61. tristate
  62. select CRYPTO_HASH2
  63. select CRYPTO_ALGAPI
  64. config CRYPTO_HASH2
  65. tristate
  66. select CRYPTO_ALGAPI2
  67. config CRYPTO_RNG
  68. tristate
  69. select CRYPTO_RNG2
  70. select CRYPTO_ALGAPI
  71. config CRYPTO_RNG2
  72. tristate
  73. select CRYPTO_ALGAPI2
  74. config CRYPTO_PCOMP
  75. tristate
  76. select CRYPTO_PCOMP2
  77. select CRYPTO_ALGAPI
  78. config CRYPTO_PCOMP2
  79. tristate
  80. select CRYPTO_ALGAPI2
  81. config CRYPTO_MANAGER
  82. tristate "Cryptographic algorithm manager"
  83. select CRYPTO_MANAGER2
  84. help
  85. Create default cryptographic template instantiations such as
  86. cbc(aes).
  87. config CRYPTO_MANAGER2
  88. def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
  89. select CRYPTO_AEAD2
  90. select CRYPTO_HASH2
  91. select CRYPTO_BLKCIPHER2
  92. select CRYPTO_PCOMP2
  93. config CRYPTO_ABLK_HELPER
  94. tristate
  95. select CRYPTO_CRYPTD
  96. config CRYPTO_USER
  97. tristate "Userspace cryptographic algorithm configuration"
  98. depends on NET
  99. select CRYPTO_MANAGER
  100. help
  101. Userspace configuration for cryptographic instantiations such as
  102. cbc(aes).
  103. config CRYPTO_MANAGER_DISABLE_TESTS
  104. bool "Disable run-time self tests"
  105. default y
  106. depends on CRYPTO_MANAGER2
  107. help
  108. Disable run-time self tests that normally take place at
  109. algorithm registration.
  110. config CRYPTO_GF128MUL
  111. tristate "GF(2^128) multiplication functions"
  112. help
  113. Efficient table driven implementation of multiplications in the
  114. field GF(2^128). This is needed by some cypher modes. This
  115. option will be selected automatically if you select such a
  116. cipher mode. Only select this option by hand if you expect to load
  117. an external module that requires these functions.
  118. config CRYPTO_NULL
  119. tristate "Null algorithms"
  120. select CRYPTO_ALGAPI
  121. select CRYPTO_BLKCIPHER
  122. select CRYPTO_HASH
  123. help
  124. These are 'Null' algorithms, used by IPsec, which do nothing.
  125. config CRYPTO_PCRYPT
  126. tristate "Parallel crypto engine (EXPERIMENTAL)"
  127. depends on SMP && EXPERIMENTAL
  128. select PADATA
  129. select CRYPTO_MANAGER
  130. select CRYPTO_AEAD
  131. help
  132. This converts an arbitrary crypto algorithm into a parallel
  133. algorithm that executes in kernel threads.
  134. config CRYPTO_WORKQUEUE
  135. tristate
  136. config CRYPTO_CRYPTD
  137. tristate "Software async crypto daemon"
  138. select CRYPTO_BLKCIPHER
  139. select CRYPTO_HASH
  140. select CRYPTO_MANAGER
  141. select CRYPTO_WORKQUEUE
  142. help
  143. This is a generic software asynchronous crypto daemon that
  144. converts an arbitrary synchronous software crypto algorithm
  145. into an asynchronous algorithm that executes in a kernel thread.
  146. config CRYPTO_AUTHENC
  147. tristate "Authenc support"
  148. select CRYPTO_AEAD
  149. select CRYPTO_BLKCIPHER
  150. select CRYPTO_MANAGER
  151. select CRYPTO_HASH
  152. help
  153. Authenc: Combined mode wrapper for IPsec.
  154. This is required for IPSec.
  155. config CRYPTO_TEST
  156. tristate "Testing module"
  157. default n
  158. select CRYPTO_MANAGER
  159. help
  160. Quick & dirty crypto test module.
  161. comment "Authenticated Encryption with Associated Data"
  162. config CRYPTO_CCM
  163. tristate "CCM support"
  164. select CRYPTO_CTR
  165. select CRYPTO_AEAD
  166. help
  167. Support for Counter with CBC MAC. Required for IPsec.
  168. config CRYPTO_GCM
  169. tristate "GCM/GMAC support"
  170. select CRYPTO_CTR
  171. select CRYPTO_AEAD
  172. select CRYPTO_GHASH
  173. help
  174. Support for Galois/Counter Mode (GCM) and Galois Message
  175. Authentication Code (GMAC). Required for IPSec.
  176. config CRYPTO_SEQIV
  177. tristate "Sequence Number IV Generator"
  178. select CRYPTO_AEAD
  179. select CRYPTO_BLKCIPHER
  180. select CRYPTO_RNG
  181. help
  182. This IV generator generates an IV based on a sequence number by
  183. xoring it with a salt. This algorithm is mainly useful for CTR
  184. comment "Block modes"
  185. config CRYPTO_CBC
  186. tristate "CBC support"
  187. select CRYPTO_BLKCIPHER
  188. select CRYPTO_MANAGER
  189. help
  190. CBC: Cipher Block Chaining mode
  191. This block cipher algorithm is required for IPSec.
  192. config CRYPTO_CTR
  193. tristate "CTR support"
  194. select CRYPTO_BLKCIPHER
  195. select CRYPTO_SEQIV
  196. select CRYPTO_MANAGER
  197. help
  198. CTR: Counter mode
  199. This block cipher algorithm is required for IPSec.
  200. config CRYPTO_CTS
  201. tristate "CTS support"
  202. select CRYPTO_BLKCIPHER
  203. help
  204. CTS: Cipher Text Stealing
  205. This is the Cipher Text Stealing mode as described by
  206. Section 8 of rfc2040 and referenced by rfc3962.
  207. (rfc3962 includes errata information in its Appendix A)
  208. This mode is required for Kerberos gss mechanism support
  209. for AES encryption.
  210. config CRYPTO_ECB
  211. tristate "ECB support"
  212. select CRYPTO_BLKCIPHER
  213. select CRYPTO_MANAGER
  214. help
  215. ECB: Electronic CodeBook mode
  216. This is the simplest block cipher algorithm. It simply encrypts
  217. the input block by block.
  218. config CRYPTO_LRW
  219. tristate "LRW support"
  220. select CRYPTO_BLKCIPHER
  221. select CRYPTO_MANAGER
  222. select CRYPTO_GF128MUL
  223. help
  224. LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
  225. narrow block cipher mode for dm-crypt. Use it with cipher
  226. specification string aes-lrw-benbi, the key must be 256, 320 or 384.
  227. The first 128, 192 or 256 bits in the key are used for AES and the
  228. rest is used to tie each cipher block to its logical position.
  229. config CRYPTO_PCBC
  230. tristate "PCBC support"
  231. select CRYPTO_BLKCIPHER
  232. select CRYPTO_MANAGER
  233. help
  234. PCBC: Propagating Cipher Block Chaining mode
  235. This block cipher algorithm is required for RxRPC.
  236. config CRYPTO_XTS
  237. tristate "XTS support"
  238. select CRYPTO_BLKCIPHER
  239. select CRYPTO_MANAGER
  240. select CRYPTO_GF128MUL
  241. help
  242. XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
  243. key size 256, 384 or 512 bits. This implementation currently
  244. can't handle a sectorsize which is not a multiple of 16 bytes.
  245. comment "Hash modes"
  246. config CRYPTO_HMAC
  247. tristate "HMAC support"
  248. select CRYPTO_HASH
  249. select CRYPTO_MANAGER
  250. help
  251. HMAC: Keyed-Hashing for Message Authentication (RFC2104).
  252. This is required for IPSec.
  253. config CRYPTO_XCBC
  254. tristate "XCBC support"
  255. depends on EXPERIMENTAL
  256. select CRYPTO_HASH
  257. select CRYPTO_MANAGER
  258. help
  259. XCBC: Keyed-Hashing with encryption algorithm
  260. http://www.ietf.org/rfc/rfc3566.txt
  261. http://csrc.nist.gov/encryption/modes/proposedmodes/
  262. xcbc-mac/xcbc-mac-spec.pdf
  263. config CRYPTO_VMAC
  264. tristate "VMAC support"
  265. depends on EXPERIMENTAL
  266. select CRYPTO_HASH
  267. select CRYPTO_MANAGER
  268. help
  269. VMAC is a message authentication algorithm designed for
  270. very high speed on 64-bit architectures.
  271. See also:
  272. <http://fastcrypto.org/vmac>
  273. comment "Digest"
  274. config CRYPTO_CRC32C
  275. tristate "CRC32c CRC algorithm"
  276. select CRYPTO_HASH
  277. select CRC32
  278. help
  279. Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
  280. by iSCSI for header and data digests and by others.
  281. See Castagnoli93. Module will be crc32c.
  282. config CRYPTO_CRC32C_INTEL
  283. tristate "CRC32c INTEL hardware acceleration"
  284. depends on X86
  285. select CRYPTO_HASH
  286. help
  287. In Intel processor with SSE4.2 supported, the processor will
  288. support CRC32C implementation using hardware accelerated CRC32
  289. instruction. This option will create 'crc32c-intel' module,
  290. which will enable any routine to use the CRC32 instruction to
  291. gain performance compared with software implementation.
  292. Module will be crc32c-intel.
  293. config CRYPTO_GHASH
  294. tristate "GHASH digest algorithm"
  295. select CRYPTO_GF128MUL
  296. help
  297. GHASH is message digest algorithm for GCM (Galois/Counter Mode).
  298. config CRYPTO_MD4
  299. tristate "MD4 digest algorithm"
  300. select CRYPTO_HASH
  301. help
  302. MD4 message digest algorithm (RFC1320).
  303. config CRYPTO_MD5
  304. tristate "MD5 digest algorithm"
  305. select CRYPTO_HASH
  306. help
  307. MD5 message digest algorithm (RFC1321).
  308. config CRYPTO_MICHAEL_MIC
  309. tristate "Michael MIC keyed digest algorithm"
  310. select CRYPTO_HASH
  311. help
  312. Michael MIC is used for message integrity protection in TKIP
  313. (IEEE 802.11i). This algorithm is required for TKIP, but it
  314. should not be used for other purposes because of the weakness
  315. of the algorithm.
  316. config CRYPTO_RMD128
  317. tristate "RIPEMD-128 digest algorithm"
  318. select CRYPTO_HASH
  319. help
  320. RIPEMD-128 (ISO/IEC 10118-3:2004).
  321. RIPEMD-128 is a 128-bit cryptographic hash function. It should only
  322. be used as a secure replacement for RIPEMD. For other use cases,
  323. RIPEMD-160 should be used.
  324. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  325. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  326. config CRYPTO_RMD160
  327. tristate "RIPEMD-160 digest algorithm"
  328. select CRYPTO_HASH
  329. help
  330. RIPEMD-160 (ISO/IEC 10118-3:2004).
  331. RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
  332. to be used as a secure replacement for the 128-bit hash functions
  333. MD4, MD5 and it's predecessor RIPEMD
  334. (not to be confused with RIPEMD-128).
  335. It's speed is comparable to SHA1 and there are no known attacks
  336. against RIPEMD-160.
  337. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  338. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  339. config CRYPTO_RMD256
  340. tristate "RIPEMD-256 digest algorithm"
  341. select CRYPTO_HASH
  342. help
  343. RIPEMD-256 is an optional extension of RIPEMD-128 with a
  344. 256 bit hash. It is intended for applications that require
  345. longer hash-results, without needing a larger security level
  346. (than RIPEMD-128).
  347. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  348. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  349. config CRYPTO_RMD320
  350. tristate "RIPEMD-320 digest algorithm"
  351. select CRYPTO_HASH
  352. help
  353. RIPEMD-320 is an optional extension of RIPEMD-160 with a
  354. 320 bit hash. It is intended for applications that require
  355. longer hash-results, without needing a larger security level
  356. (than RIPEMD-160).
  357. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  358. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  359. config CRYPTO_SHA1
  360. tristate "SHA1 digest algorithm"
  361. select CRYPTO_HASH
  362. help
  363. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
  364. config CRYPTO_SHA1_SSSE3
  365. tristate "SHA1 digest algorithm (SSSE3/AVX)"
  366. depends on X86 && 64BIT
  367. select CRYPTO_SHA1
  368. select CRYPTO_HASH
  369. help
  370. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  371. using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
  372. Extensions (AVX), when available.
  373. config CRYPTO_SHA1_ARM
  374. tristate "SHA1 digest algorithm (ARM-asm)"
  375. depends on ARM
  376. select CRYPTO_SHA1
  377. select CRYPTO_HASH
  378. default y
  379. help
  380. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  381. using optimized ARM assembler.
  382. config CRYPTO_SHA1_ARM_NEON
  383. tristate "SHA1 digest algorithm (ARM NEON)"
  384. depends on ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN
  385. select CRYPTO_SHA1_ARM
  386. select CRYPTO_SHA1
  387. select CRYPTO_HASH
  388. help
  389. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  390. using optimized ARM NEON assembly, when NEON instructions are
  391. available.
  392. config CRYPTO_SHA256
  393. tristate "SHA224 and SHA256 digest algorithm"
  394. select CRYPTO_HASH
  395. help
  396. SHA256 secure hash standard (DFIPS 180-2).
  397. This version of SHA implements a 256 bit hash with 128 bits of
  398. security against collision attacks.
  399. This code also includes SHA-224, a 224 bit hash with 112 bits
  400. of security against collision attacks.
  401. config CRYPTO_SHA256_ARM
  402. tristate "SHA-224/256 digest algorithm (ARM-asm and NEON)"
  403. select CRYPTO_HASH
  404. help
  405. SHA-256 secure hash standard (DFIPS 180-2) implemented
  406. using optimized ARM assembler and NEON, when available.
  407. config CRYPTO_SHA512
  408. tristate "SHA384 and SHA512 digest algorithms"
  409. select CRYPTO_HASH
  410. help
  411. SHA512 secure hash standard (DFIPS 180-2).
  412. This version of SHA implements a 512 bit hash with 256 bits of
  413. security against collision attacks.
  414. This code also includes SHA-384, a 384 bit hash with 192 bits
  415. of security against collision attacks.
  416. config CRYPTO_SHA512_ARM_NEON
  417. tristate "SHA384 and SHA512 digest algorithm (ARM NEON)"
  418. depends on ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN
  419. select CRYPTO_SHA512
  420. select CRYPTO_HASH
  421. help
  422. SHA-512 secure hash standard (DFIPS 180-2) implemented
  423. using ARM NEON instructions, when available.
  424. This version of SHA implements a 512 bit hash with 256 bits of
  425. security against collision attacks.
  426. This code also includes SHA-384, a 384 bit hash with 192 bits
  427. of security against collision attacks.
  428. config CRYPTO_TGR192
  429. tristate "Tiger digest algorithms"
  430. select CRYPTO_HASH
  431. help
  432. Tiger hash algorithm 192, 160 and 128-bit hashes
  433. Tiger is a hash function optimized for 64-bit processors while
  434. still having decent performance on 32-bit processors.
  435. Tiger was developed by Ross Anderson and Eli Biham.
  436. See also:
  437. <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
  438. config CRYPTO_WP512
  439. tristate "Whirlpool digest algorithms"
  440. select CRYPTO_HASH
  441. help
  442. Whirlpool hash algorithm 512, 384 and 256-bit hashes
  443. Whirlpool-512 is part of the NESSIE cryptographic primitives.
  444. Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
  445. See also:
  446. <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
  447. config CRYPTO_GHASH_CLMUL_NI_INTEL
  448. tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
  449. depends on X86 && 64BIT
  450. select CRYPTO_CRYPTD
  451. help
  452. GHASH is message digest algorithm for GCM (Galois/Counter Mode).
  453. The implementation is accelerated by CLMUL-NI of Intel.
  454. comment "Ciphers"
  455. config CRYPTO_AES
  456. tristate "AES cipher algorithms"
  457. select CRYPTO_ALGAPI
  458. help
  459. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  460. algorithm.
  461. Rijndael appears to be consistently a very good performer in
  462. both hardware and software across a wide range of computing
  463. environments regardless of its use in feedback or non-feedback
  464. modes. Its key setup time is excellent, and its key agility is
  465. good. Rijndael's very low memory requirements make it very well
  466. suited for restricted-space environments, in which it also
  467. demonstrates excellent performance. Rijndael's operations are
  468. among the easiest to defend against power and timing attacks.
  469. The AES specifies three key sizes: 128, 192 and 256 bits
  470. See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
  471. config CRYPTO_AES_586
  472. tristate "AES cipher algorithms (i586)"
  473. depends on (X86 || UML_X86) && !64BIT
  474. select CRYPTO_ALGAPI
  475. select CRYPTO_AES
  476. help
  477. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  478. algorithm.
  479. Rijndael appears to be consistently a very good performer in
  480. both hardware and software across a wide range of computing
  481. environments regardless of its use in feedback or non-feedback
  482. modes. Its key setup time is excellent, and its key agility is
  483. good. Rijndael's very low memory requirements make it very well
  484. suited for restricted-space environments, in which it also
  485. demonstrates excellent performance. Rijndael's operations are
  486. among the easiest to defend against power and timing attacks.
  487. The AES specifies three key sizes: 128, 192 and 256 bits
  488. See <http://csrc.nist.gov/encryption/aes/> for more information.
  489. config CRYPTO_AES_X86_64
  490. tristate "AES cipher algorithms (x86_64)"
  491. depends on (X86 || UML_X86) && 64BIT
  492. select CRYPTO_ALGAPI
  493. select CRYPTO_AES
  494. help
  495. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  496. algorithm.
  497. Rijndael appears to be consistently a very good performer in
  498. both hardware and software across a wide range of computing
  499. environments regardless of its use in feedback or non-feedback
  500. modes. Its key setup time is excellent, and its key agility is
  501. good. Rijndael's very low memory requirements make it very well
  502. suited for restricted-space environments, in which it also
  503. demonstrates excellent performance. Rijndael's operations are
  504. among the easiest to defend against power and timing attacks.
  505. The AES specifies three key sizes: 128, 192 and 256 bits
  506. See <http://csrc.nist.gov/encryption/aes/> for more information.
  507. config CRYPTO_AES_NI_INTEL
  508. tristate "AES cipher algorithms (AES-NI)"
  509. depends on X86
  510. select CRYPTO_AES_X86_64 if 64BIT
  511. select CRYPTO_AES_586 if !64BIT
  512. select CRYPTO_CRYPTD
  513. select CRYPTO_ALGAPI
  514. help
  515. Use Intel AES-NI instructions for AES algorithm.
  516. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  517. algorithm.
  518. Rijndael appears to be consistently a very good performer in
  519. both hardware and software across a wide range of computing
  520. environments regardless of its use in feedback or non-feedback
  521. modes. Its key setup time is excellent, and its key agility is
  522. good. Rijndael's very low memory requirements make it very well
  523. suited for restricted-space environments, in which it also
  524. demonstrates excellent performance. Rijndael's operations are
  525. among the easiest to defend against power and timing attacks.
  526. The AES specifies three key sizes: 128, 192 and 256 bits
  527. See <http://csrc.nist.gov/encryption/aes/> for more information.
  528. In addition to AES cipher algorithm support, the acceleration
  529. for some popular block cipher mode is supported too, including
  530. ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
  531. acceleration for CTR.
  532. config CRYPTO_AES_ARM
  533. tristate "AES cipher algorithms (ARM-asm)"
  534. depends on ARM
  535. select CRYPTO_ALGAPI
  536. select CRYPTO_AES
  537. default y
  538. help
  539. Use optimized AES assembler routines for ARM platforms.
  540. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  541. algorithm.
  542. Rijndael appears to be consistently a very good performer in
  543. both hardware and software across a wide range of computing
  544. environments regardless of its use in feedback or non-feedback
  545. modes. Its key setup time is excellent, and its key agility is
  546. good. Rijndael's very low memory requirements make it very well
  547. suited for restricted-space environments, in which it also
  548. demonstrates excellent performance. Rijndael's operations are
  549. among the easiest to defend against power and timing attacks.
  550. The AES specifies three key sizes: 128, 192 and 256 bits
  551. See <http://csrc.nist.gov/encryption/aes/> for more information.
  552. config CRYPTO_AES_ARM_BS
  553. tristate "Bit sliced AES using NEON instructions"
  554. depends on ARM && KERNEL_MODE_NEON
  555. select CRYPTO_ALGAPI
  556. select CRYPTO_AES_ARM
  557. select CRYPTO_ABLK_HELPER
  558. help
  559. Use a faster and more secure NEON based implementation of AES in CBC,
  560. CTR and XTS modes
  561. Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
  562. and for XTS mode encryption, CBC and XTS mode decryption speedup is
  563. around 25%. (CBC encryption speed is not affected by this driver.)
  564. This implementation does not rely on any lookup tables so it is
  565. believed to be invulnerable to cache timing attacks.
  566. config CRYPTO_ANUBIS
  567. tristate "Anubis cipher algorithm"
  568. select CRYPTO_ALGAPI
  569. help
  570. Anubis cipher algorithm.
  571. Anubis is a variable key length cipher which can use keys from
  572. 128 bits to 320 bits in length. It was evaluated as a entrant
  573. in the NESSIE competition.
  574. See also:
  575. <https://www.cosic.esat.kuleuven.be/nessie/reports/>
  576. <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
  577. config CRYPTO_ARC4
  578. tristate "ARC4 cipher algorithm"
  579. select CRYPTO_BLKCIPHER
  580. help
  581. ARC4 cipher algorithm.
  582. ARC4 is a stream cipher using keys ranging from 8 bits to 2048
  583. bits in length. This algorithm is required for driver-based
  584. WEP, but it should not be for other purposes because of the
  585. weakness of the algorithm.
  586. config CRYPTO_BLOWFISH
  587. tristate "Blowfish cipher algorithm"
  588. select CRYPTO_ALGAPI
  589. select CRYPTO_BLOWFISH_COMMON
  590. help
  591. Blowfish cipher algorithm, by Bruce Schneier.
  592. This is a variable key length cipher which can use keys from 32
  593. bits to 448 bits in length. It's fast, simple and specifically
  594. designed for use on "large microprocessors".
  595. See also:
  596. <http://www.schneier.com/blowfish.html>
  597. config CRYPTO_BLOWFISH_COMMON
  598. tristate
  599. help
  600. Common parts of the Blowfish cipher algorithm shared by the
  601. generic c and the assembler implementations.
  602. See also:
  603. <http://www.schneier.com/blowfish.html>
  604. config CRYPTO_BLOWFISH_X86_64
  605. tristate "Blowfish cipher algorithm (x86_64)"
  606. depends on X86 && 64BIT
  607. select CRYPTO_ALGAPI
  608. select CRYPTO_BLOWFISH_COMMON
  609. help
  610. Blowfish cipher algorithm (x86_64), by Bruce Schneier.
  611. This is a variable key length cipher which can use keys from 32
  612. bits to 448 bits in length. It's fast, simple and specifically
  613. designed for use on "large microprocessors".
  614. See also:
  615. <http://www.schneier.com/blowfish.html>
  616. config CRYPTO_CAMELLIA
  617. tristate "Camellia cipher algorithms"
  618. depends on CRYPTO
  619. select CRYPTO_ALGAPI
  620. help
  621. Camellia cipher algorithms module.
  622. Camellia is a symmetric key block cipher developed jointly
  623. at NTT and Mitsubishi Electric Corporation.
  624. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  625. See also:
  626. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  627. config CRYPTO_CAMELLIA_X86_64
  628. tristate "Camellia cipher algorithm (x86_64)"
  629. depends on X86 && 64BIT
  630. depends on CRYPTO
  631. select CRYPTO_ALGAPI
  632. select CRYPTO_LRW
  633. select CRYPTO_XTS
  634. help
  635. Camellia cipher algorithm module (x86_64).
  636. Camellia is a symmetric key block cipher developed jointly
  637. at NTT and Mitsubishi Electric Corporation.
  638. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  639. See also:
  640. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  641. config CRYPTO_CAST5
  642. tristate "CAST5 (CAST-128) cipher algorithm"
  643. select CRYPTO_ALGAPI
  644. help
  645. The CAST5 encryption algorithm (synonymous with CAST-128) is
  646. described in RFC2144.
  647. config CRYPTO_CAST6
  648. tristate "CAST6 (CAST-256) cipher algorithm"
  649. select CRYPTO_ALGAPI
  650. help
  651. The CAST6 encryption algorithm (synonymous with CAST-256) is
  652. described in RFC2612.
  653. config CRYPTO_DES
  654. tristate "DES and Triple DES EDE cipher algorithms"
  655. select CRYPTO_ALGAPI
  656. help
  657. DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
  658. config CRYPTO_FCRYPT
  659. tristate "FCrypt cipher algorithm"
  660. select CRYPTO_ALGAPI
  661. select CRYPTO_BLKCIPHER
  662. help
  663. FCrypt algorithm used by RxRPC.
  664. config CRYPTO_KHAZAD
  665. tristate "Khazad cipher algorithm"
  666. select CRYPTO_ALGAPI
  667. help
  668. Khazad cipher algorithm.
  669. Khazad was a finalist in the initial NESSIE competition. It is
  670. an algorithm optimized for 64-bit processors with good performance
  671. on 32-bit processors. Khazad uses an 128 bit key size.
  672. See also:
  673. <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
  674. config CRYPTO_SALSA20
  675. tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
  676. depends on EXPERIMENTAL
  677. select CRYPTO_BLKCIPHER
  678. help
  679. Salsa20 stream cipher algorithm.
  680. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  681. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  682. The Salsa20 stream cipher algorithm is designed by Daniel J.
  683. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  684. config CRYPTO_SALSA20_586
  685. tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
  686. depends on (X86 || UML_X86) && !64BIT
  687. depends on EXPERIMENTAL
  688. select CRYPTO_BLKCIPHER
  689. help
  690. Salsa20 stream cipher algorithm.
  691. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  692. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  693. The Salsa20 stream cipher algorithm is designed by Daniel J.
  694. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  695. config CRYPTO_SALSA20_X86_64
  696. tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
  697. depends on (X86 || UML_X86) && 64BIT
  698. depends on EXPERIMENTAL
  699. select CRYPTO_BLKCIPHER
  700. help
  701. Salsa20 stream cipher algorithm.
  702. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  703. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  704. The Salsa20 stream cipher algorithm is designed by Daniel J.
  705. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  706. config CRYPTO_SEED
  707. tristate "SEED cipher algorithm"
  708. select CRYPTO_ALGAPI
  709. help
  710. SEED cipher algorithm (RFC4269).
  711. SEED is a 128-bit symmetric key block cipher that has been
  712. developed by KISA (Korea Information Security Agency) as a
  713. national standard encryption algorithm of the Republic of Korea.
  714. It is a 16 round block cipher with the key size of 128 bit.
  715. See also:
  716. <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
  717. config CRYPTO_SERPENT
  718. tristate "Serpent cipher algorithm"
  719. select CRYPTO_ALGAPI
  720. help
  721. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  722. Keys are allowed to be from 0 to 256 bits in length, in steps
  723. of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
  724. variant of Serpent for compatibility with old kerneli.org code.
  725. See also:
  726. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  727. config CRYPTO_SERPENT_SSE2_X86_64
  728. tristate "Serpent cipher algorithm (x86_64/SSE2)"
  729. depends on X86 && 64BIT
  730. select CRYPTO_ALGAPI
  731. select CRYPTO_CRYPTD
  732. select CRYPTO_SERPENT
  733. select CRYPTO_LRW
  734. select CRYPTO_XTS
  735. help
  736. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  737. Keys are allowed to be from 0 to 256 bits in length, in steps
  738. of 8 bits.
  739. This module provides Serpent cipher algorithm that processes eigth
  740. blocks parallel using SSE2 instruction set.
  741. See also:
  742. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  743. config CRYPTO_SERPENT_SSE2_586
  744. tristate "Serpent cipher algorithm (i586/SSE2)"
  745. depends on X86 && !64BIT
  746. select CRYPTO_ALGAPI
  747. select CRYPTO_CRYPTD
  748. select CRYPTO_SERPENT
  749. select CRYPTO_LRW
  750. select CRYPTO_XTS
  751. help
  752. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  753. Keys are allowed to be from 0 to 256 bits in length, in steps
  754. of 8 bits.
  755. This module provides Serpent cipher algorithm that processes four
  756. blocks parallel using SSE2 instruction set.
  757. See also:
  758. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  759. config CRYPTO_TEA
  760. tristate "TEA, XTEA and XETA cipher algorithms"
  761. select CRYPTO_ALGAPI
  762. help
  763. TEA cipher algorithm.
  764. Tiny Encryption Algorithm is a simple cipher that uses
  765. many rounds for security. It is very fast and uses
  766. little memory.
  767. Xtendend Tiny Encryption Algorithm is a modification to
  768. the TEA algorithm to address a potential key weakness
  769. in the TEA algorithm.
  770. Xtendend Encryption Tiny Algorithm is a mis-implementation
  771. of the XTEA algorithm for compatibility purposes.
  772. config CRYPTO_TWOFISH
  773. tristate "Twofish cipher algorithm"
  774. select CRYPTO_ALGAPI
  775. select CRYPTO_TWOFISH_COMMON
  776. help
  777. Twofish cipher algorithm.
  778. Twofish was submitted as an AES (Advanced Encryption Standard)
  779. candidate cipher by researchers at CounterPane Systems. It is a
  780. 16 round block cipher supporting key sizes of 128, 192, and 256
  781. bits.
  782. See also:
  783. <http://www.schneier.com/twofish.html>
  784. config CRYPTO_TWOFISH_COMMON
  785. tristate
  786. help
  787. Common parts of the Twofish cipher algorithm shared by the
  788. generic c and the assembler implementations.
  789. config CRYPTO_TWOFISH_586
  790. tristate "Twofish cipher algorithms (i586)"
  791. depends on (X86 || UML_X86) && !64BIT
  792. select CRYPTO_ALGAPI
  793. select CRYPTO_TWOFISH_COMMON
  794. help
  795. Twofish cipher algorithm.
  796. Twofish was submitted as an AES (Advanced Encryption Standard)
  797. candidate cipher by researchers at CounterPane Systems. It is a
  798. 16 round block cipher supporting key sizes of 128, 192, and 256
  799. bits.
  800. See also:
  801. <http://www.schneier.com/twofish.html>
  802. config CRYPTO_TWOFISH_X86_64
  803. tristate "Twofish cipher algorithm (x86_64)"
  804. depends on (X86 || UML_X86) && 64BIT
  805. select CRYPTO_ALGAPI
  806. select CRYPTO_TWOFISH_COMMON
  807. help
  808. Twofish cipher algorithm (x86_64).
  809. Twofish was submitted as an AES (Advanced Encryption Standard)
  810. candidate cipher by researchers at CounterPane Systems. It is a
  811. 16 round block cipher supporting key sizes of 128, 192, and 256
  812. bits.
  813. See also:
  814. <http://www.schneier.com/twofish.html>
  815. config CRYPTO_TWOFISH_X86_64_3WAY
  816. tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
  817. depends on X86 && 64BIT
  818. select CRYPTO_ALGAPI
  819. select CRYPTO_TWOFISH_COMMON
  820. select CRYPTO_TWOFISH_X86_64
  821. select CRYPTO_LRW
  822. select CRYPTO_XTS
  823. help
  824. Twofish cipher algorithm (x86_64, 3-way parallel).
  825. Twofish was submitted as an AES (Advanced Encryption Standard)
  826. candidate cipher by researchers at CounterPane Systems. It is a
  827. 16 round block cipher supporting key sizes of 128, 192, and 256
  828. bits.
  829. This module provides Twofish cipher algorithm that processes three
  830. blocks parallel, utilizing resources of out-of-order CPUs better.
  831. See also:
  832. <http://www.schneier.com/twofish.html>
  833. comment "Compression"
  834. config CRYPTO_DEFLATE
  835. tristate "Deflate compression algorithm"
  836. select CRYPTO_ALGAPI
  837. select ZLIB_INFLATE
  838. select ZLIB_DEFLATE
  839. help
  840. This is the Deflate algorithm (RFC1951), specified for use in
  841. IPSec with the IPCOMP protocol (RFC3173, RFC2394).
  842. You will most probably want this if using IPSec.
  843. config CRYPTO_ZLIB
  844. tristate "Zlib compression algorithm"
  845. select CRYPTO_PCOMP
  846. select ZLIB_INFLATE
  847. select ZLIB_DEFLATE
  848. select NLATTR
  849. help
  850. This is the zlib algorithm.
  851. config CRYPTO_LZO
  852. tristate "LZO compression algorithm"
  853. select CRYPTO_ALGAPI
  854. select LZO_COMPRESS
  855. select LZO_DECOMPRESS
  856. help
  857. This is the LZO algorithm.
  858. config CRYPTO_LZ4
  859. tristate "LZ4 compression algorithm"
  860. select CRYPTO_ALGAPI
  861. select LZ4_COMPRESS
  862. select LZ4_DECOMPRESS
  863. help
  864. This is the LZ4 algorithm.
  865. config CRYPTO_LZ4HC
  866. tristate "LZ4HC compression algorithm"
  867. select CRYPTO_ALGAPI
  868. select LZ4HC_COMPRESS
  869. select LZ4_DECOMPRESS
  870. help
  871. This is the LZ4 high compression mode algorithm.
  872. comment "Random Number Generation"
  873. config CRYPTO_ANSI_CPRNG
  874. tristate "Pseudo Random Number Generation for Cryptographic modules"
  875. default m
  876. select CRYPTO_AES
  877. select CRYPTO_RNG
  878. help
  879. This option enables the generic pseudo random number generator
  880. for cryptographic modules. Uses the Algorithm specified in
  881. ANSI X9.31 A.2.4. Note that this option must be enabled if
  882. CRYPTO_FIPS is selected
  883. menuconfig CRYPTO_DRBG_MENU
  884. tristate "NIST SP800-90A DRBG"
  885. help
  886. NIST SP800-90A compliant DRBG. In the following submenu, one or
  887. more of the DRBG types must be selected.
  888. if CRYPTO_DRBG_MENU
  889. config CRYPTO_DRBG_HMAC
  890. bool "Enable HMAC DRBG"
  891. default y
  892. select CRYPTO_HMAC
  893. help
  894. Enable the HMAC DRBG variant as defined in NIST SP800-90A.
  895. config CRYPTO_DRBG_HASH
  896. bool "Enable Hash DRBG"
  897. select CRYPTO_HASH
  898. help
  899. Enable the Hash DRBG variant as defined in NIST SP800-90A.
  900. config CRYPTO_DRBG_CTR
  901. bool "Enable CTR DRBG"
  902. select CRYPTO_AES
  903. help
  904. Enable the CTR DRBG variant as defined in NIST SP800-90A.
  905. config CRYPTO_DRBG
  906. tristate
  907. default CRYPTO_DRBG_MENU if (CRYPTO_DRBG_HMAC || CRYPTO_DRBG_HASH || CRYPTO_DRBG_CTR)
  908. select CRYPTO_RNG
  909. endif # if CRYPTO_DRBG_MENU
  910. config CRYPTO_USER_API
  911. tristate
  912. config CRYPTO_USER_API_HASH
  913. tristate "User-space interface for hash algorithms"
  914. depends on NET
  915. select CRYPTO_HASH
  916. select CRYPTO_USER_API
  917. help
  918. This option enables the user-spaces interface for hash
  919. algorithms.
  920. config CRYPTO_USER_API_SKCIPHER
  921. tristate "User-space interface for symmetric key cipher algorithms"
  922. depends on NET
  923. select CRYPTO_BLKCIPHER
  924. select CRYPTO_USER_API
  925. help
  926. This option enables the user-spaces interface for symmetric
  927. key cipher algorithms.
  928. source "drivers/crypto/Kconfig"
  929. endif # if CRYPTO