Kconfig 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636
  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. depends on MODULE_SIG
  23. help
  24. This options enables the fips boot option which is
  25. required if you want to system to operate in a FIPS 200
  26. certification. You should say no unless you know what
  27. this is.
  28. config CRYPTO_ALGAPI
  29. tristate
  30. select CRYPTO_ALGAPI2
  31. help
  32. This option provides the API for cryptographic algorithms.
  33. config CRYPTO_ALGAPI2
  34. tristate
  35. config CRYPTO_AEAD
  36. tristate
  37. select CRYPTO_AEAD2
  38. select CRYPTO_ALGAPI
  39. config CRYPTO_AEAD2
  40. tristate
  41. select CRYPTO_ALGAPI2
  42. select CRYPTO_NULL2
  43. select CRYPTO_RNG2
  44. config CRYPTO_BLKCIPHER
  45. tristate
  46. select CRYPTO_BLKCIPHER2
  47. select CRYPTO_ALGAPI
  48. config CRYPTO_BLKCIPHER2
  49. tristate
  50. select CRYPTO_ALGAPI2
  51. select CRYPTO_RNG2
  52. select CRYPTO_WORKQUEUE
  53. config CRYPTO_HASH
  54. tristate
  55. select CRYPTO_HASH2
  56. select CRYPTO_ALGAPI
  57. config CRYPTO_HASH2
  58. tristate
  59. select CRYPTO_ALGAPI2
  60. config CRYPTO_RNG
  61. tristate
  62. select CRYPTO_RNG2
  63. select CRYPTO_ALGAPI
  64. config CRYPTO_RNG2
  65. tristate
  66. select CRYPTO_ALGAPI2
  67. config CRYPTO_RNG_DEFAULT
  68. tristate
  69. select CRYPTO_DRBG_MENU
  70. config CRYPTO_AKCIPHER2
  71. tristate
  72. select CRYPTO_ALGAPI2
  73. config CRYPTO_AKCIPHER
  74. tristate
  75. select CRYPTO_AKCIPHER2
  76. select CRYPTO_ALGAPI
  77. config CRYPTO_RSA
  78. tristate "RSA algorithm"
  79. select CRYPTO_AKCIPHER
  80. select MPILIB
  81. select ASN1
  82. help
  83. Generic implementation of the RSA public key algorithm.
  84. config CRYPTO_MANAGER
  85. tristate "Cryptographic algorithm manager"
  86. select CRYPTO_MANAGER2
  87. help
  88. Create default cryptographic template instantiations such as
  89. cbc(aes).
  90. config CRYPTO_MANAGER2
  91. def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
  92. select CRYPTO_AEAD2
  93. select CRYPTO_HASH2
  94. select CRYPTO_BLKCIPHER2
  95. select CRYPTO_AKCIPHER2
  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_NULL2
  121. help
  122. These are 'Null' algorithms, used by IPsec, which do nothing.
  123. config CRYPTO_NULL2
  124. tristate
  125. select CRYPTO_ALGAPI2
  126. select CRYPTO_BLKCIPHER2
  127. select CRYPTO_HASH2
  128. config CRYPTO_PCRYPT
  129. tristate "Parallel crypto engine"
  130. depends on SMP
  131. select PADATA
  132. select CRYPTO_MANAGER
  133. select CRYPTO_AEAD
  134. help
  135. This converts an arbitrary crypto algorithm into a parallel
  136. algorithm that executes in kernel threads.
  137. config CRYPTO_WORKQUEUE
  138. tristate
  139. config CRYPTO_CRYPTD
  140. tristate "Software async crypto daemon"
  141. select CRYPTO_BLKCIPHER
  142. select CRYPTO_HASH
  143. select CRYPTO_MANAGER
  144. select CRYPTO_WORKQUEUE
  145. help
  146. This is a generic software asynchronous crypto daemon that
  147. converts an arbitrary synchronous software crypto algorithm
  148. into an asynchronous algorithm that executes in a kernel thread.
  149. config CRYPTO_MCRYPTD
  150. tristate "Software async multi-buffer crypto daemon"
  151. select CRYPTO_BLKCIPHER
  152. select CRYPTO_HASH
  153. select CRYPTO_MANAGER
  154. select CRYPTO_WORKQUEUE
  155. help
  156. This is a generic software asynchronous crypto daemon that
  157. provides the kernel thread to assist multi-buffer crypto
  158. algorithms for submitting jobs and flushing jobs in multi-buffer
  159. crypto algorithms. Multi-buffer crypto algorithms are executed
  160. in the context of this kernel thread and drivers can post
  161. their crypto request asynchronously to be processed by this daemon.
  162. config CRYPTO_AUTHENC
  163. tristate "Authenc support"
  164. select CRYPTO_AEAD
  165. select CRYPTO_BLKCIPHER
  166. select CRYPTO_MANAGER
  167. select CRYPTO_HASH
  168. select CRYPTO_NULL
  169. help
  170. Authenc: Combined mode wrapper for IPsec.
  171. This is required for IPSec.
  172. config CRYPTO_TEST
  173. tristate "Testing module"
  174. depends on m
  175. select CRYPTO_MANAGER
  176. help
  177. Quick & dirty crypto test module.
  178. config CRYPTO_ABLK_HELPER
  179. tristate
  180. select CRYPTO_CRYPTD
  181. config CRYPTO_GLUE_HELPER_X86
  182. tristate
  183. depends on X86
  184. select CRYPTO_ALGAPI
  185. config CRYPTO_ENGINE
  186. tristate
  187. comment "Authenticated Encryption with Associated Data"
  188. config CRYPTO_CCM
  189. tristate "CCM support"
  190. select CRYPTO_CTR
  191. select CRYPTO_AEAD
  192. help
  193. Support for Counter with CBC MAC. Required for IPsec.
  194. config CRYPTO_GCM
  195. tristate "GCM/GMAC support"
  196. select CRYPTO_CTR
  197. select CRYPTO_AEAD
  198. select CRYPTO_GHASH
  199. select CRYPTO_NULL
  200. help
  201. Support for Galois/Counter Mode (GCM) and Galois Message
  202. Authentication Code (GMAC). Required for IPSec.
  203. config CRYPTO_CHACHA20POLY1305
  204. tristate "ChaCha20-Poly1305 AEAD support"
  205. select CRYPTO_CHACHA20
  206. select CRYPTO_POLY1305
  207. select CRYPTO_AEAD
  208. help
  209. ChaCha20-Poly1305 AEAD support, RFC7539.
  210. Support for the AEAD wrapper using the ChaCha20 stream cipher combined
  211. with the Poly1305 authenticator. It is defined in RFC7539 for use in
  212. IETF protocols.
  213. config CRYPTO_SEQIV
  214. tristate "Sequence Number IV Generator"
  215. select CRYPTO_AEAD
  216. select CRYPTO_BLKCIPHER
  217. select CRYPTO_NULL
  218. select CRYPTO_RNG_DEFAULT
  219. help
  220. This IV generator generates an IV based on a sequence number by
  221. xoring it with a salt. This algorithm is mainly useful for CTR
  222. config CRYPTO_ECHAINIV
  223. tristate "Encrypted Chain IV Generator"
  224. select CRYPTO_AEAD
  225. select CRYPTO_NULL
  226. select CRYPTO_RNG_DEFAULT
  227. default m
  228. help
  229. This IV generator generates an IV based on the encryption of
  230. a sequence number xored with a salt. This is the default
  231. algorithm for CBC.
  232. comment "Block modes"
  233. config CRYPTO_CBC
  234. tristate "CBC support"
  235. select CRYPTO_BLKCIPHER
  236. select CRYPTO_MANAGER
  237. help
  238. CBC: Cipher Block Chaining mode
  239. This block cipher algorithm is required for IPSec.
  240. config CRYPTO_CTR
  241. tristate "CTR support"
  242. select CRYPTO_BLKCIPHER
  243. select CRYPTO_SEQIV
  244. select CRYPTO_MANAGER
  245. help
  246. CTR: Counter mode
  247. This block cipher algorithm is required for IPSec.
  248. config CRYPTO_CTS
  249. tristate "CTS support"
  250. select CRYPTO_BLKCIPHER
  251. help
  252. CTS: Cipher Text Stealing
  253. This is the Cipher Text Stealing mode as described by
  254. Section 8 of rfc2040 and referenced by rfc3962.
  255. (rfc3962 includes errata information in its Appendix A)
  256. This mode is required for Kerberos gss mechanism support
  257. for AES encryption.
  258. config CRYPTO_ECB
  259. tristate "ECB support"
  260. select CRYPTO_BLKCIPHER
  261. select CRYPTO_MANAGER
  262. help
  263. ECB: Electronic CodeBook mode
  264. This is the simplest block cipher algorithm. It simply encrypts
  265. the input block by block.
  266. config CRYPTO_LRW
  267. tristate "LRW support"
  268. select CRYPTO_BLKCIPHER
  269. select CRYPTO_MANAGER
  270. select CRYPTO_GF128MUL
  271. help
  272. LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
  273. narrow block cipher mode for dm-crypt. Use it with cipher
  274. specification string aes-lrw-benbi, the key must be 256, 320 or 384.
  275. The first 128, 192 or 256 bits in the key are used for AES and the
  276. rest is used to tie each cipher block to its logical position.
  277. config CRYPTO_PCBC
  278. tristate "PCBC support"
  279. select CRYPTO_BLKCIPHER
  280. select CRYPTO_MANAGER
  281. help
  282. PCBC: Propagating Cipher Block Chaining mode
  283. This block cipher algorithm is required for RxRPC.
  284. config CRYPTO_XTS
  285. tristate "XTS support"
  286. select CRYPTO_BLKCIPHER
  287. select CRYPTO_MANAGER
  288. select CRYPTO_GF128MUL
  289. help
  290. XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
  291. key size 256, 384 or 512 bits. This implementation currently
  292. can't handle a sectorsize which is not a multiple of 16 bytes.
  293. config CRYPTO_KEYWRAP
  294. tristate "Key wrapping support"
  295. select CRYPTO_BLKCIPHER
  296. help
  297. Support for key wrapping (NIST SP800-38F / RFC3394) without
  298. padding.
  299. comment "Hash modes"
  300. config CRYPTO_CMAC
  301. tristate "CMAC support"
  302. select CRYPTO_HASH
  303. select CRYPTO_MANAGER
  304. help
  305. Cipher-based Message Authentication Code (CMAC) specified by
  306. The National Institute of Standards and Technology (NIST).
  307. https://tools.ietf.org/html/rfc4493
  308. http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
  309. config CRYPTO_HMAC
  310. tristate "HMAC support"
  311. select CRYPTO_HASH
  312. select CRYPTO_MANAGER
  313. help
  314. HMAC: Keyed-Hashing for Message Authentication (RFC2104).
  315. This is required for IPSec.
  316. config CRYPTO_XCBC
  317. tristate "XCBC support"
  318. select CRYPTO_HASH
  319. select CRYPTO_MANAGER
  320. help
  321. XCBC: Keyed-Hashing with encryption algorithm
  322. http://www.ietf.org/rfc/rfc3566.txt
  323. http://csrc.nist.gov/encryption/modes/proposedmodes/
  324. xcbc-mac/xcbc-mac-spec.pdf
  325. config CRYPTO_VMAC
  326. tristate "VMAC support"
  327. select CRYPTO_HASH
  328. select CRYPTO_MANAGER
  329. help
  330. VMAC is a message authentication algorithm designed for
  331. very high speed on 64-bit architectures.
  332. See also:
  333. <http://fastcrypto.org/vmac>
  334. comment "Digest"
  335. config CRYPTO_CRC32C
  336. tristate "CRC32c CRC algorithm"
  337. select CRYPTO_HASH
  338. select CRC32
  339. help
  340. Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
  341. by iSCSI for header and data digests and by others.
  342. See Castagnoli93. Module will be crc32c.
  343. config CRYPTO_CRC32C_INTEL
  344. tristate "CRC32c INTEL hardware acceleration"
  345. depends on X86
  346. select CRYPTO_HASH
  347. help
  348. In Intel processor with SSE4.2 supported, the processor will
  349. support CRC32C implementation using hardware accelerated CRC32
  350. instruction. This option will create 'crc32c-intel' module,
  351. which will enable any routine to use the CRC32 instruction to
  352. gain performance compared with software implementation.
  353. Module will be crc32c-intel.
  354. config CRYPTO_CRC32C_SPARC64
  355. tristate "CRC32c CRC algorithm (SPARC64)"
  356. depends on SPARC64
  357. select CRYPTO_HASH
  358. select CRC32
  359. help
  360. CRC32c CRC algorithm implemented using sparc64 crypto instructions,
  361. when available.
  362. config CRYPTO_CRC32
  363. tristate "CRC32 CRC algorithm"
  364. select CRYPTO_HASH
  365. select CRC32
  366. help
  367. CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
  368. Shash crypto api wrappers to crc32_le function.
  369. config CRYPTO_CRC32_PCLMUL
  370. tristate "CRC32 PCLMULQDQ hardware acceleration"
  371. depends on X86
  372. select CRYPTO_HASH
  373. select CRC32
  374. help
  375. From Intel Westmere and AMD Bulldozer processor with SSE4.2
  376. and PCLMULQDQ supported, the processor will support
  377. CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
  378. instruction. This option will create 'crc32-plcmul' module,
  379. which will enable any routine to use the CRC-32-IEEE 802.3 checksum
  380. and gain better performance as compared with the table implementation.
  381. config CRYPTO_CRCT10DIF
  382. tristate "CRCT10DIF algorithm"
  383. select CRYPTO_HASH
  384. help
  385. CRC T10 Data Integrity Field computation is being cast as
  386. a crypto transform. This allows for faster crc t10 diff
  387. transforms to be used if they are available.
  388. config CRYPTO_CRCT10DIF_PCLMUL
  389. tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
  390. depends on X86 && 64BIT && CRC_T10DIF
  391. select CRYPTO_HASH
  392. help
  393. For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
  394. CRC T10 DIF PCLMULQDQ computation can be hardware
  395. accelerated PCLMULQDQ instruction. This option will create
  396. 'crct10dif-plcmul' module, which is faster when computing the
  397. crct10dif checksum as compared with the generic table implementation.
  398. config CRYPTO_GHASH
  399. tristate "GHASH digest algorithm"
  400. select CRYPTO_GF128MUL
  401. select CRYPTO_HASH
  402. help
  403. GHASH is message digest algorithm for GCM (Galois/Counter Mode).
  404. config CRYPTO_POLY1305
  405. tristate "Poly1305 authenticator algorithm"
  406. select CRYPTO_HASH
  407. help
  408. Poly1305 authenticator algorithm, RFC7539.
  409. Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
  410. It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
  411. in IETF protocols. This is the portable C implementation of Poly1305.
  412. config CRYPTO_POLY1305_X86_64
  413. tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
  414. depends on X86 && 64BIT
  415. select CRYPTO_POLY1305
  416. help
  417. Poly1305 authenticator algorithm, RFC7539.
  418. Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
  419. It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
  420. in IETF protocols. This is the x86_64 assembler implementation using SIMD
  421. instructions.
  422. config CRYPTO_MD4
  423. tristate "MD4 digest algorithm"
  424. select CRYPTO_HASH
  425. help
  426. MD4 message digest algorithm (RFC1320).
  427. config CRYPTO_MD5
  428. tristate "MD5 digest algorithm"
  429. select CRYPTO_HASH
  430. help
  431. MD5 message digest algorithm (RFC1321).
  432. config CRYPTO_MD5_OCTEON
  433. tristate "MD5 digest algorithm (OCTEON)"
  434. depends on CPU_CAVIUM_OCTEON
  435. select CRYPTO_MD5
  436. select CRYPTO_HASH
  437. help
  438. MD5 message digest algorithm (RFC1321) implemented
  439. using OCTEON crypto instructions, when available.
  440. config CRYPTO_MD5_PPC
  441. tristate "MD5 digest algorithm (PPC)"
  442. depends on PPC
  443. select CRYPTO_HASH
  444. help
  445. MD5 message digest algorithm (RFC1321) implemented
  446. in PPC assembler.
  447. config CRYPTO_MD5_SPARC64
  448. tristate "MD5 digest algorithm (SPARC64)"
  449. depends on SPARC64
  450. select CRYPTO_MD5
  451. select CRYPTO_HASH
  452. help
  453. MD5 message digest algorithm (RFC1321) implemented
  454. using sparc64 crypto instructions, when available.
  455. config CRYPTO_MICHAEL_MIC
  456. tristate "Michael MIC keyed digest algorithm"
  457. select CRYPTO_HASH
  458. help
  459. Michael MIC is used for message integrity protection in TKIP
  460. (IEEE 802.11i). This algorithm is required for TKIP, but it
  461. should not be used for other purposes because of the weakness
  462. of the algorithm.
  463. config CRYPTO_RMD128
  464. tristate "RIPEMD-128 digest algorithm"
  465. select CRYPTO_HASH
  466. help
  467. RIPEMD-128 (ISO/IEC 10118-3:2004).
  468. RIPEMD-128 is a 128-bit cryptographic hash function. It should only
  469. be used as a secure replacement for RIPEMD. For other use cases,
  470. RIPEMD-160 should be used.
  471. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  472. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  473. config CRYPTO_RMD160
  474. tristate "RIPEMD-160 digest algorithm"
  475. select CRYPTO_HASH
  476. help
  477. RIPEMD-160 (ISO/IEC 10118-3:2004).
  478. RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
  479. to be used as a secure replacement for the 128-bit hash functions
  480. MD4, MD5 and it's predecessor RIPEMD
  481. (not to be confused with RIPEMD-128).
  482. It's speed is comparable to SHA1 and there are no known attacks
  483. against RIPEMD-160.
  484. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  485. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  486. config CRYPTO_RMD256
  487. tristate "RIPEMD-256 digest algorithm"
  488. select CRYPTO_HASH
  489. help
  490. RIPEMD-256 is an optional extension of RIPEMD-128 with a
  491. 256 bit hash. It is intended for applications that require
  492. longer hash-results, without needing a larger security level
  493. (than RIPEMD-128).
  494. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  495. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  496. config CRYPTO_RMD320
  497. tristate "RIPEMD-320 digest algorithm"
  498. select CRYPTO_HASH
  499. help
  500. RIPEMD-320 is an optional extension of RIPEMD-160 with a
  501. 320 bit hash. It is intended for applications that require
  502. longer hash-results, without needing a larger security level
  503. (than RIPEMD-160).
  504. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  505. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  506. config CRYPTO_SHA1
  507. tristate "SHA1 digest algorithm"
  508. select CRYPTO_HASH
  509. help
  510. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
  511. config CRYPTO_SHA1_SSSE3
  512. tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
  513. depends on X86 && 64BIT
  514. select CRYPTO_SHA1
  515. select CRYPTO_HASH
  516. help
  517. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  518. using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
  519. Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
  520. when available.
  521. config CRYPTO_SHA256_SSSE3
  522. tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
  523. depends on X86 && 64BIT
  524. select CRYPTO_SHA256
  525. select CRYPTO_HASH
  526. help
  527. SHA-256 secure hash standard (DFIPS 180-2) implemented
  528. using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
  529. Extensions version 1 (AVX1), or Advanced Vector Extensions
  530. version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
  531. Instructions) when available.
  532. config CRYPTO_SHA512_SSSE3
  533. tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
  534. depends on X86 && 64BIT
  535. select CRYPTO_SHA512
  536. select CRYPTO_HASH
  537. help
  538. SHA-512 secure hash standard (DFIPS 180-2) implemented
  539. using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
  540. Extensions version 1 (AVX1), or Advanced Vector Extensions
  541. version 2 (AVX2) instructions, when available.
  542. config CRYPTO_SHA1_OCTEON
  543. tristate "SHA1 digest algorithm (OCTEON)"
  544. depends on CPU_CAVIUM_OCTEON
  545. select CRYPTO_SHA1
  546. select CRYPTO_HASH
  547. help
  548. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  549. using OCTEON crypto instructions, when available.
  550. config CRYPTO_SHA1_SPARC64
  551. tristate "SHA1 digest algorithm (SPARC64)"
  552. depends on SPARC64
  553. select CRYPTO_SHA1
  554. select CRYPTO_HASH
  555. help
  556. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  557. using sparc64 crypto instructions, when available.
  558. config CRYPTO_SHA1_PPC
  559. tristate "SHA1 digest algorithm (powerpc)"
  560. depends on PPC
  561. help
  562. This is the powerpc hardware accelerated implementation of the
  563. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
  564. config CRYPTO_SHA1_PPC_SPE
  565. tristate "SHA1 digest algorithm (PPC SPE)"
  566. depends on PPC && SPE
  567. help
  568. SHA-1 secure hash standard (DFIPS 180-4) implemented
  569. using powerpc SPE SIMD instruction set.
  570. config CRYPTO_SHA1_MB
  571. tristate "SHA1 digest algorithm (x86_64 Multi-Buffer, Experimental)"
  572. depends on X86 && 64BIT
  573. select CRYPTO_SHA1
  574. select CRYPTO_HASH
  575. select CRYPTO_MCRYPTD
  576. help
  577. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  578. using multi-buffer technique. This algorithm computes on
  579. multiple data lanes concurrently with SIMD instructions for
  580. better throughput. It should not be enabled by default but
  581. used when there is significant amount of work to keep the keep
  582. the data lanes filled to get performance benefit. If the data
  583. lanes remain unfilled, a flush operation will be initiated to
  584. process the crypto jobs, adding a slight latency.
  585. config CRYPTO_SHA256
  586. tristate "SHA224 and SHA256 digest algorithm"
  587. select CRYPTO_HASH
  588. help
  589. SHA256 secure hash standard (DFIPS 180-2).
  590. This version of SHA implements a 256 bit hash with 128 bits of
  591. security against collision attacks.
  592. This code also includes SHA-224, a 224 bit hash with 112 bits
  593. of security against collision attacks.
  594. config CRYPTO_SHA256_PPC_SPE
  595. tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
  596. depends on PPC && SPE
  597. select CRYPTO_SHA256
  598. select CRYPTO_HASH
  599. help
  600. SHA224 and SHA256 secure hash standard (DFIPS 180-2)
  601. implemented using powerpc SPE SIMD instruction set.
  602. config CRYPTO_SHA256_OCTEON
  603. tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
  604. depends on CPU_CAVIUM_OCTEON
  605. select CRYPTO_SHA256
  606. select CRYPTO_HASH
  607. help
  608. SHA-256 secure hash standard (DFIPS 180-2) implemented
  609. using OCTEON crypto instructions, when available.
  610. config CRYPTO_SHA256_SPARC64
  611. tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
  612. depends on SPARC64
  613. select CRYPTO_SHA256
  614. select CRYPTO_HASH
  615. help
  616. SHA-256 secure hash standard (DFIPS 180-2) implemented
  617. using sparc64 crypto instructions, when available.
  618. config CRYPTO_SHA512
  619. tristate "SHA384 and SHA512 digest algorithms"
  620. select CRYPTO_HASH
  621. help
  622. SHA512 secure hash standard (DFIPS 180-2).
  623. This version of SHA implements a 512 bit hash with 256 bits of
  624. security against collision attacks.
  625. This code also includes SHA-384, a 384 bit hash with 192 bits
  626. of security against collision attacks.
  627. config CRYPTO_SHA512_OCTEON
  628. tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
  629. depends on CPU_CAVIUM_OCTEON
  630. select CRYPTO_SHA512
  631. select CRYPTO_HASH
  632. help
  633. SHA-512 secure hash standard (DFIPS 180-2) implemented
  634. using OCTEON crypto instructions, when available.
  635. config CRYPTO_SHA512_SPARC64
  636. tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
  637. depends on SPARC64
  638. select CRYPTO_SHA512
  639. select CRYPTO_HASH
  640. help
  641. SHA-512 secure hash standard (DFIPS 180-2) implemented
  642. using sparc64 crypto instructions, when available.
  643. config CRYPTO_TGR192
  644. tristate "Tiger digest algorithms"
  645. select CRYPTO_HASH
  646. help
  647. Tiger hash algorithm 192, 160 and 128-bit hashes
  648. Tiger is a hash function optimized for 64-bit processors while
  649. still having decent performance on 32-bit processors.
  650. Tiger was developed by Ross Anderson and Eli Biham.
  651. See also:
  652. <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
  653. config CRYPTO_WP512
  654. tristate "Whirlpool digest algorithms"
  655. select CRYPTO_HASH
  656. help
  657. Whirlpool hash algorithm 512, 384 and 256-bit hashes
  658. Whirlpool-512 is part of the NESSIE cryptographic primitives.
  659. Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
  660. See also:
  661. <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
  662. config CRYPTO_GHASH_CLMUL_NI_INTEL
  663. tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
  664. depends on X86 && 64BIT
  665. select CRYPTO_CRYPTD
  666. help
  667. GHASH is message digest algorithm for GCM (Galois/Counter Mode).
  668. The implementation is accelerated by CLMUL-NI of Intel.
  669. comment "Ciphers"
  670. config CRYPTO_AES
  671. tristate "AES cipher algorithms"
  672. select CRYPTO_ALGAPI
  673. help
  674. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  675. algorithm.
  676. Rijndael appears to be consistently a very good performer in
  677. both hardware and software across a wide range of computing
  678. environments regardless of its use in feedback or non-feedback
  679. modes. Its key setup time is excellent, and its key agility is
  680. good. Rijndael's very low memory requirements make it very well
  681. suited for restricted-space environments, in which it also
  682. demonstrates excellent performance. Rijndael's operations are
  683. among the easiest to defend against power and timing attacks.
  684. The AES specifies three key sizes: 128, 192 and 256 bits
  685. See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
  686. config CRYPTO_AES_586
  687. tristate "AES cipher algorithms (i586)"
  688. depends on (X86 || UML_X86) && !64BIT
  689. select CRYPTO_ALGAPI
  690. select CRYPTO_AES
  691. help
  692. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  693. algorithm.
  694. Rijndael appears to be consistently a very good performer in
  695. both hardware and software across a wide range of computing
  696. environments regardless of its use in feedback or non-feedback
  697. modes. Its key setup time is excellent, and its key agility is
  698. good. Rijndael's very low memory requirements make it very well
  699. suited for restricted-space environments, in which it also
  700. demonstrates excellent performance. Rijndael's operations are
  701. among the easiest to defend against power and timing attacks.
  702. The AES specifies three key sizes: 128, 192 and 256 bits
  703. See <http://csrc.nist.gov/encryption/aes/> for more information.
  704. config CRYPTO_AES_X86_64
  705. tristate "AES cipher algorithms (x86_64)"
  706. depends on (X86 || UML_X86) && 64BIT
  707. select CRYPTO_ALGAPI
  708. select CRYPTO_AES
  709. help
  710. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  711. algorithm.
  712. Rijndael appears to be consistently a very good performer in
  713. both hardware and software across a wide range of computing
  714. environments regardless of its use in feedback or non-feedback
  715. modes. Its key setup time is excellent, and its key agility is
  716. good. Rijndael's very low memory requirements make it very well
  717. suited for restricted-space environments, in which it also
  718. demonstrates excellent performance. Rijndael's operations are
  719. among the easiest to defend against power and timing attacks.
  720. The AES specifies three key sizes: 128, 192 and 256 bits
  721. See <http://csrc.nist.gov/encryption/aes/> for more information.
  722. config CRYPTO_AES_NI_INTEL
  723. tristate "AES cipher algorithms (AES-NI)"
  724. depends on X86
  725. select CRYPTO_AES_X86_64 if 64BIT
  726. select CRYPTO_AES_586 if !64BIT
  727. select CRYPTO_CRYPTD
  728. select CRYPTO_ABLK_HELPER
  729. select CRYPTO_ALGAPI
  730. select CRYPTO_GLUE_HELPER_X86 if 64BIT
  731. select CRYPTO_LRW
  732. select CRYPTO_XTS
  733. help
  734. Use Intel AES-NI instructions for AES algorithm.
  735. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  736. algorithm.
  737. Rijndael appears to be consistently a very good performer in
  738. both hardware and software across a wide range of computing
  739. environments regardless of its use in feedback or non-feedback
  740. modes. Its key setup time is excellent, and its key agility is
  741. good. Rijndael's very low memory requirements make it very well
  742. suited for restricted-space environments, in which it also
  743. demonstrates excellent performance. Rijndael's operations are
  744. among the easiest to defend against power and timing attacks.
  745. The AES specifies three key sizes: 128, 192 and 256 bits
  746. See <http://csrc.nist.gov/encryption/aes/> for more information.
  747. In addition to AES cipher algorithm support, the acceleration
  748. for some popular block cipher mode is supported too, including
  749. ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
  750. acceleration for CTR.
  751. config CRYPTO_AES_SPARC64
  752. tristate "AES cipher algorithms (SPARC64)"
  753. depends on SPARC64
  754. select CRYPTO_CRYPTD
  755. select CRYPTO_ALGAPI
  756. help
  757. Use SPARC64 crypto opcodes for AES algorithm.
  758. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  759. algorithm.
  760. Rijndael appears to be consistently a very good performer in
  761. both hardware and software across a wide range of computing
  762. environments regardless of its use in feedback or non-feedback
  763. modes. Its key setup time is excellent, and its key agility is
  764. good. Rijndael's very low memory requirements make it very well
  765. suited for restricted-space environments, in which it also
  766. demonstrates excellent performance. Rijndael's operations are
  767. among the easiest to defend against power and timing attacks.
  768. The AES specifies three key sizes: 128, 192 and 256 bits
  769. See <http://csrc.nist.gov/encryption/aes/> for more information.
  770. In addition to AES cipher algorithm support, the acceleration
  771. for some popular block cipher mode is supported too, including
  772. ECB and CBC.
  773. config CRYPTO_AES_PPC_SPE
  774. tristate "AES cipher algorithms (PPC SPE)"
  775. depends on PPC && SPE
  776. help
  777. AES cipher algorithms (FIPS-197). Additionally the acceleration
  778. for popular block cipher modes ECB, CBC, CTR and XTS is supported.
  779. This module should only be used for low power (router) devices
  780. without hardware AES acceleration (e.g. caam crypto). It reduces the
  781. size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
  782. timining attacks. Nevertheless it might be not as secure as other
  783. architecture specific assembler implementations that work on 1KB
  784. tables or 256 bytes S-boxes.
  785. config CRYPTO_ANUBIS
  786. tristate "Anubis cipher algorithm"
  787. select CRYPTO_ALGAPI
  788. help
  789. Anubis cipher algorithm.
  790. Anubis is a variable key length cipher which can use keys from
  791. 128 bits to 320 bits in length. It was evaluated as a entrant
  792. in the NESSIE competition.
  793. See also:
  794. <https://www.cosic.esat.kuleuven.be/nessie/reports/>
  795. <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
  796. config CRYPTO_ARC4
  797. tristate "ARC4 cipher algorithm"
  798. select CRYPTO_BLKCIPHER
  799. help
  800. ARC4 cipher algorithm.
  801. ARC4 is a stream cipher using keys ranging from 8 bits to 2048
  802. bits in length. This algorithm is required for driver-based
  803. WEP, but it should not be for other purposes because of the
  804. weakness of the algorithm.
  805. config CRYPTO_BLOWFISH
  806. tristate "Blowfish cipher algorithm"
  807. select CRYPTO_ALGAPI
  808. select CRYPTO_BLOWFISH_COMMON
  809. help
  810. Blowfish cipher algorithm, by Bruce Schneier.
  811. This is a variable key length cipher which can use keys from 32
  812. bits to 448 bits in length. It's fast, simple and specifically
  813. designed for use on "large microprocessors".
  814. See also:
  815. <http://www.schneier.com/blowfish.html>
  816. config CRYPTO_BLOWFISH_COMMON
  817. tristate
  818. help
  819. Common parts of the Blowfish cipher algorithm shared by the
  820. generic c and the assembler implementations.
  821. See also:
  822. <http://www.schneier.com/blowfish.html>
  823. config CRYPTO_BLOWFISH_X86_64
  824. tristate "Blowfish cipher algorithm (x86_64)"
  825. depends on X86 && 64BIT
  826. select CRYPTO_ALGAPI
  827. select CRYPTO_BLOWFISH_COMMON
  828. help
  829. Blowfish cipher algorithm (x86_64), by Bruce Schneier.
  830. This is a variable key length cipher which can use keys from 32
  831. bits to 448 bits in length. It's fast, simple and specifically
  832. designed for use on "large microprocessors".
  833. See also:
  834. <http://www.schneier.com/blowfish.html>
  835. config CRYPTO_CAMELLIA
  836. tristate "Camellia cipher algorithms"
  837. depends on CRYPTO
  838. select CRYPTO_ALGAPI
  839. help
  840. Camellia cipher algorithms module.
  841. Camellia is a symmetric key block cipher developed jointly
  842. at NTT and Mitsubishi Electric Corporation.
  843. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  844. See also:
  845. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  846. config CRYPTO_CAMELLIA_X86_64
  847. tristate "Camellia cipher algorithm (x86_64)"
  848. depends on X86 && 64BIT
  849. depends on CRYPTO
  850. select CRYPTO_ALGAPI
  851. select CRYPTO_GLUE_HELPER_X86
  852. select CRYPTO_LRW
  853. select CRYPTO_XTS
  854. help
  855. Camellia cipher algorithm module (x86_64).
  856. Camellia is a symmetric key block cipher developed jointly
  857. at NTT and Mitsubishi Electric Corporation.
  858. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  859. See also:
  860. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  861. config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
  862. tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
  863. depends on X86 && 64BIT
  864. depends on CRYPTO
  865. select CRYPTO_ALGAPI
  866. select CRYPTO_CRYPTD
  867. select CRYPTO_ABLK_HELPER
  868. select CRYPTO_GLUE_HELPER_X86
  869. select CRYPTO_CAMELLIA_X86_64
  870. select CRYPTO_LRW
  871. select CRYPTO_XTS
  872. help
  873. Camellia cipher algorithm module (x86_64/AES-NI/AVX).
  874. Camellia is a symmetric key block cipher developed jointly
  875. at NTT and Mitsubishi Electric Corporation.
  876. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  877. See also:
  878. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  879. config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
  880. tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
  881. depends on X86 && 64BIT
  882. depends on CRYPTO
  883. select CRYPTO_ALGAPI
  884. select CRYPTO_CRYPTD
  885. select CRYPTO_ABLK_HELPER
  886. select CRYPTO_GLUE_HELPER_X86
  887. select CRYPTO_CAMELLIA_X86_64
  888. select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
  889. select CRYPTO_LRW
  890. select CRYPTO_XTS
  891. help
  892. Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
  893. Camellia is a symmetric key block cipher developed jointly
  894. at NTT and Mitsubishi Electric Corporation.
  895. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  896. See also:
  897. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  898. config CRYPTO_CAMELLIA_SPARC64
  899. tristate "Camellia cipher algorithm (SPARC64)"
  900. depends on SPARC64
  901. depends on CRYPTO
  902. select CRYPTO_ALGAPI
  903. help
  904. Camellia cipher algorithm module (SPARC64).
  905. Camellia is a symmetric key block cipher developed jointly
  906. at NTT and Mitsubishi Electric Corporation.
  907. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  908. See also:
  909. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  910. config CRYPTO_CAST_COMMON
  911. tristate
  912. help
  913. Common parts of the CAST cipher algorithms shared by the
  914. generic c and the assembler implementations.
  915. config CRYPTO_CAST5
  916. tristate "CAST5 (CAST-128) cipher algorithm"
  917. select CRYPTO_ALGAPI
  918. select CRYPTO_CAST_COMMON
  919. help
  920. The CAST5 encryption algorithm (synonymous with CAST-128) is
  921. described in RFC2144.
  922. config CRYPTO_CAST5_AVX_X86_64
  923. tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
  924. depends on X86 && 64BIT
  925. select CRYPTO_ALGAPI
  926. select CRYPTO_CRYPTD
  927. select CRYPTO_ABLK_HELPER
  928. select CRYPTO_CAST_COMMON
  929. select CRYPTO_CAST5
  930. help
  931. The CAST5 encryption algorithm (synonymous with CAST-128) is
  932. described in RFC2144.
  933. This module provides the Cast5 cipher algorithm that processes
  934. sixteen blocks parallel using the AVX instruction set.
  935. config CRYPTO_CAST6
  936. tristate "CAST6 (CAST-256) cipher algorithm"
  937. select CRYPTO_ALGAPI
  938. select CRYPTO_CAST_COMMON
  939. help
  940. The CAST6 encryption algorithm (synonymous with CAST-256) is
  941. described in RFC2612.
  942. config CRYPTO_CAST6_AVX_X86_64
  943. tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
  944. depends on X86 && 64BIT
  945. select CRYPTO_ALGAPI
  946. select CRYPTO_CRYPTD
  947. select CRYPTO_ABLK_HELPER
  948. select CRYPTO_GLUE_HELPER_X86
  949. select CRYPTO_CAST_COMMON
  950. select CRYPTO_CAST6
  951. select CRYPTO_LRW
  952. select CRYPTO_XTS
  953. help
  954. The CAST6 encryption algorithm (synonymous with CAST-256) is
  955. described in RFC2612.
  956. This module provides the Cast6 cipher algorithm that processes
  957. eight blocks parallel using the AVX instruction set.
  958. config CRYPTO_DES
  959. tristate "DES and Triple DES EDE cipher algorithms"
  960. select CRYPTO_ALGAPI
  961. help
  962. DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
  963. config CRYPTO_DES_SPARC64
  964. tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
  965. depends on SPARC64
  966. select CRYPTO_ALGAPI
  967. select CRYPTO_DES
  968. help
  969. DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
  970. optimized using SPARC64 crypto opcodes.
  971. config CRYPTO_DES3_EDE_X86_64
  972. tristate "Triple DES EDE cipher algorithm (x86-64)"
  973. depends on X86 && 64BIT
  974. select CRYPTO_ALGAPI
  975. select CRYPTO_DES
  976. help
  977. Triple DES EDE (FIPS 46-3) algorithm.
  978. This module provides implementation of the Triple DES EDE cipher
  979. algorithm that is optimized for x86-64 processors. Two versions of
  980. algorithm are provided; regular processing one input block and
  981. one that processes three blocks parallel.
  982. config CRYPTO_FCRYPT
  983. tristate "FCrypt cipher algorithm"
  984. select CRYPTO_ALGAPI
  985. select CRYPTO_BLKCIPHER
  986. help
  987. FCrypt algorithm used by RxRPC.
  988. config CRYPTO_KHAZAD
  989. tristate "Khazad cipher algorithm"
  990. select CRYPTO_ALGAPI
  991. help
  992. Khazad cipher algorithm.
  993. Khazad was a finalist in the initial NESSIE competition. It is
  994. an algorithm optimized for 64-bit processors with good performance
  995. on 32-bit processors. Khazad uses an 128 bit key size.
  996. See also:
  997. <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
  998. config CRYPTO_SALSA20
  999. tristate "Salsa20 stream cipher algorithm"
  1000. select CRYPTO_BLKCIPHER
  1001. help
  1002. Salsa20 stream cipher algorithm.
  1003. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  1004. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  1005. The Salsa20 stream cipher algorithm is designed by Daniel J.
  1006. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  1007. config CRYPTO_SALSA20_586
  1008. tristate "Salsa20 stream cipher algorithm (i586)"
  1009. depends on (X86 || UML_X86) && !64BIT
  1010. select CRYPTO_BLKCIPHER
  1011. help
  1012. Salsa20 stream cipher algorithm.
  1013. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  1014. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  1015. The Salsa20 stream cipher algorithm is designed by Daniel J.
  1016. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  1017. config CRYPTO_SALSA20_X86_64
  1018. tristate "Salsa20 stream cipher algorithm (x86_64)"
  1019. depends on (X86 || UML_X86) && 64BIT
  1020. select CRYPTO_BLKCIPHER
  1021. help
  1022. Salsa20 stream cipher algorithm.
  1023. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  1024. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  1025. The Salsa20 stream cipher algorithm is designed by Daniel J.
  1026. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  1027. config CRYPTO_CHACHA20
  1028. tristate "ChaCha20 cipher algorithm"
  1029. select CRYPTO_BLKCIPHER
  1030. help
  1031. ChaCha20 cipher algorithm, RFC7539.
  1032. ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
  1033. Bernstein and further specified in RFC7539 for use in IETF protocols.
  1034. This is the portable C implementation of ChaCha20.
  1035. See also:
  1036. <http://cr.yp.to/chacha/chacha-20080128.pdf>
  1037. config CRYPTO_CHACHA20_X86_64
  1038. tristate "ChaCha20 cipher algorithm (x86_64/SSSE3/AVX2)"
  1039. depends on X86 && 64BIT
  1040. select CRYPTO_BLKCIPHER
  1041. select CRYPTO_CHACHA20
  1042. help
  1043. ChaCha20 cipher algorithm, RFC7539.
  1044. ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
  1045. Bernstein and further specified in RFC7539 for use in IETF protocols.
  1046. This is the x86_64 assembler implementation using SIMD instructions.
  1047. See also:
  1048. <http://cr.yp.to/chacha/chacha-20080128.pdf>
  1049. config CRYPTO_SEED
  1050. tristate "SEED cipher algorithm"
  1051. select CRYPTO_ALGAPI
  1052. help
  1053. SEED cipher algorithm (RFC4269).
  1054. SEED is a 128-bit symmetric key block cipher that has been
  1055. developed by KISA (Korea Information Security Agency) as a
  1056. national standard encryption algorithm of the Republic of Korea.
  1057. It is a 16 round block cipher with the key size of 128 bit.
  1058. See also:
  1059. <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
  1060. config CRYPTO_SERPENT
  1061. tristate "Serpent cipher algorithm"
  1062. select CRYPTO_ALGAPI
  1063. help
  1064. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1065. Keys are allowed to be from 0 to 256 bits in length, in steps
  1066. of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
  1067. variant of Serpent for compatibility with old kerneli.org code.
  1068. See also:
  1069. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  1070. config CRYPTO_SERPENT_SSE2_X86_64
  1071. tristate "Serpent cipher algorithm (x86_64/SSE2)"
  1072. depends on X86 && 64BIT
  1073. select CRYPTO_ALGAPI
  1074. select CRYPTO_CRYPTD
  1075. select CRYPTO_ABLK_HELPER
  1076. select CRYPTO_GLUE_HELPER_X86
  1077. select CRYPTO_SERPENT
  1078. select CRYPTO_LRW
  1079. select CRYPTO_XTS
  1080. help
  1081. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1082. Keys are allowed to be from 0 to 256 bits in length, in steps
  1083. of 8 bits.
  1084. This module provides Serpent cipher algorithm that processes eight
  1085. blocks parallel using SSE2 instruction set.
  1086. See also:
  1087. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  1088. config CRYPTO_SERPENT_SSE2_586
  1089. tristate "Serpent cipher algorithm (i586/SSE2)"
  1090. depends on X86 && !64BIT
  1091. select CRYPTO_ALGAPI
  1092. select CRYPTO_CRYPTD
  1093. select CRYPTO_ABLK_HELPER
  1094. select CRYPTO_GLUE_HELPER_X86
  1095. select CRYPTO_SERPENT
  1096. select CRYPTO_LRW
  1097. select CRYPTO_XTS
  1098. help
  1099. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1100. Keys are allowed to be from 0 to 256 bits in length, in steps
  1101. of 8 bits.
  1102. This module provides Serpent cipher algorithm that processes four
  1103. blocks parallel using SSE2 instruction set.
  1104. See also:
  1105. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  1106. config CRYPTO_SERPENT_AVX_X86_64
  1107. tristate "Serpent cipher algorithm (x86_64/AVX)"
  1108. depends on X86 && 64BIT
  1109. select CRYPTO_ALGAPI
  1110. select CRYPTO_CRYPTD
  1111. select CRYPTO_ABLK_HELPER
  1112. select CRYPTO_GLUE_HELPER_X86
  1113. select CRYPTO_SERPENT
  1114. select CRYPTO_LRW
  1115. select CRYPTO_XTS
  1116. help
  1117. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1118. Keys are allowed to be from 0 to 256 bits in length, in steps
  1119. of 8 bits.
  1120. This module provides the Serpent cipher algorithm that processes
  1121. eight blocks parallel using the AVX instruction set.
  1122. See also:
  1123. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  1124. config CRYPTO_SERPENT_AVX2_X86_64
  1125. tristate "Serpent cipher algorithm (x86_64/AVX2)"
  1126. depends on X86 && 64BIT
  1127. select CRYPTO_ALGAPI
  1128. select CRYPTO_CRYPTD
  1129. select CRYPTO_ABLK_HELPER
  1130. select CRYPTO_GLUE_HELPER_X86
  1131. select CRYPTO_SERPENT
  1132. select CRYPTO_SERPENT_AVX_X86_64
  1133. select CRYPTO_LRW
  1134. select CRYPTO_XTS
  1135. help
  1136. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1137. Keys are allowed to be from 0 to 256 bits in length, in steps
  1138. of 8 bits.
  1139. This module provides Serpent cipher algorithm that processes 16
  1140. blocks parallel using AVX2 instruction set.
  1141. See also:
  1142. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  1143. config CRYPTO_TEA
  1144. tristate "TEA, XTEA and XETA cipher algorithms"
  1145. select CRYPTO_ALGAPI
  1146. help
  1147. TEA cipher algorithm.
  1148. Tiny Encryption Algorithm is a simple cipher that uses
  1149. many rounds for security. It is very fast and uses
  1150. little memory.
  1151. Xtendend Tiny Encryption Algorithm is a modification to
  1152. the TEA algorithm to address a potential key weakness
  1153. in the TEA algorithm.
  1154. Xtendend Encryption Tiny Algorithm is a mis-implementation
  1155. of the XTEA algorithm for compatibility purposes.
  1156. config CRYPTO_TWOFISH
  1157. tristate "Twofish cipher algorithm"
  1158. select CRYPTO_ALGAPI
  1159. select CRYPTO_TWOFISH_COMMON
  1160. help
  1161. Twofish cipher algorithm.
  1162. Twofish was submitted as an AES (Advanced Encryption Standard)
  1163. candidate cipher by researchers at CounterPane Systems. It is a
  1164. 16 round block cipher supporting key sizes of 128, 192, and 256
  1165. bits.
  1166. See also:
  1167. <http://www.schneier.com/twofish.html>
  1168. config CRYPTO_TWOFISH_COMMON
  1169. tristate
  1170. help
  1171. Common parts of the Twofish cipher algorithm shared by the
  1172. generic c and the assembler implementations.
  1173. config CRYPTO_TWOFISH_586
  1174. tristate "Twofish cipher algorithms (i586)"
  1175. depends on (X86 || UML_X86) && !64BIT
  1176. select CRYPTO_ALGAPI
  1177. select CRYPTO_TWOFISH_COMMON
  1178. help
  1179. Twofish cipher algorithm.
  1180. Twofish was submitted as an AES (Advanced Encryption Standard)
  1181. candidate cipher by researchers at CounterPane Systems. It is a
  1182. 16 round block cipher supporting key sizes of 128, 192, and 256
  1183. bits.
  1184. See also:
  1185. <http://www.schneier.com/twofish.html>
  1186. config CRYPTO_TWOFISH_X86_64
  1187. tristate "Twofish cipher algorithm (x86_64)"
  1188. depends on (X86 || UML_X86) && 64BIT
  1189. select CRYPTO_ALGAPI
  1190. select CRYPTO_TWOFISH_COMMON
  1191. help
  1192. Twofish cipher algorithm (x86_64).
  1193. Twofish was submitted as an AES (Advanced Encryption Standard)
  1194. candidate cipher by researchers at CounterPane Systems. It is a
  1195. 16 round block cipher supporting key sizes of 128, 192, and 256
  1196. bits.
  1197. See also:
  1198. <http://www.schneier.com/twofish.html>
  1199. config CRYPTO_TWOFISH_X86_64_3WAY
  1200. tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
  1201. depends on X86 && 64BIT
  1202. select CRYPTO_ALGAPI
  1203. select CRYPTO_TWOFISH_COMMON
  1204. select CRYPTO_TWOFISH_X86_64
  1205. select CRYPTO_GLUE_HELPER_X86
  1206. select CRYPTO_LRW
  1207. select CRYPTO_XTS
  1208. help
  1209. Twofish cipher algorithm (x86_64, 3-way parallel).
  1210. Twofish was submitted as an AES (Advanced Encryption Standard)
  1211. candidate cipher by researchers at CounterPane Systems. It is a
  1212. 16 round block cipher supporting key sizes of 128, 192, and 256
  1213. bits.
  1214. This module provides Twofish cipher algorithm that processes three
  1215. blocks parallel, utilizing resources of out-of-order CPUs better.
  1216. See also:
  1217. <http://www.schneier.com/twofish.html>
  1218. config CRYPTO_TWOFISH_AVX_X86_64
  1219. tristate "Twofish cipher algorithm (x86_64/AVX)"
  1220. depends on X86 && 64BIT
  1221. select CRYPTO_ALGAPI
  1222. select CRYPTO_CRYPTD
  1223. select CRYPTO_ABLK_HELPER
  1224. select CRYPTO_GLUE_HELPER_X86
  1225. select CRYPTO_TWOFISH_COMMON
  1226. select CRYPTO_TWOFISH_X86_64
  1227. select CRYPTO_TWOFISH_X86_64_3WAY
  1228. select CRYPTO_LRW
  1229. select CRYPTO_XTS
  1230. help
  1231. Twofish cipher algorithm (x86_64/AVX).
  1232. Twofish was submitted as an AES (Advanced Encryption Standard)
  1233. candidate cipher by researchers at CounterPane Systems. It is a
  1234. 16 round block cipher supporting key sizes of 128, 192, and 256
  1235. bits.
  1236. This module provides the Twofish cipher algorithm that processes
  1237. eight blocks parallel using the AVX Instruction Set.
  1238. See also:
  1239. <http://www.schneier.com/twofish.html>
  1240. comment "Compression"
  1241. config CRYPTO_DEFLATE
  1242. tristate "Deflate compression algorithm"
  1243. select CRYPTO_ALGAPI
  1244. select ZLIB_INFLATE
  1245. select ZLIB_DEFLATE
  1246. help
  1247. This is the Deflate algorithm (RFC1951), specified for use in
  1248. IPSec with the IPCOMP protocol (RFC3173, RFC2394).
  1249. You will most probably want this if using IPSec.
  1250. config CRYPTO_LZO
  1251. tristate "LZO compression algorithm"
  1252. select CRYPTO_ALGAPI
  1253. select LZO_COMPRESS
  1254. select LZO_DECOMPRESS
  1255. help
  1256. This is the LZO algorithm.
  1257. config CRYPTO_842
  1258. tristate "842 compression algorithm"
  1259. select CRYPTO_ALGAPI
  1260. select 842_COMPRESS
  1261. select 842_DECOMPRESS
  1262. help
  1263. This is the 842 algorithm.
  1264. config CRYPTO_LZ4
  1265. tristate "LZ4 compression algorithm"
  1266. select CRYPTO_ALGAPI
  1267. select LZ4_COMPRESS
  1268. select LZ4_DECOMPRESS
  1269. help
  1270. This is the LZ4 algorithm.
  1271. config CRYPTO_LZ4HC
  1272. tristate "LZ4HC compression algorithm"
  1273. select CRYPTO_ALGAPI
  1274. select LZ4HC_COMPRESS
  1275. select LZ4_DECOMPRESS
  1276. help
  1277. This is the LZ4 high compression mode algorithm.
  1278. comment "Random Number Generation"
  1279. config CRYPTO_ANSI_CPRNG
  1280. tristate "Pseudo Random Number Generation for Cryptographic modules"
  1281. select CRYPTO_AES
  1282. select CRYPTO_RNG
  1283. help
  1284. This option enables the generic pseudo random number generator
  1285. for cryptographic modules. Uses the Algorithm specified in
  1286. ANSI X9.31 A.2.4. Note that this option must be enabled if
  1287. CRYPTO_FIPS is selected
  1288. menuconfig CRYPTO_DRBG_MENU
  1289. tristate "NIST SP800-90A DRBG"
  1290. help
  1291. NIST SP800-90A compliant DRBG. In the following submenu, one or
  1292. more of the DRBG types must be selected.
  1293. if CRYPTO_DRBG_MENU
  1294. config CRYPTO_DRBG_HMAC
  1295. bool
  1296. default y
  1297. select CRYPTO_HMAC
  1298. select CRYPTO_SHA256
  1299. config CRYPTO_DRBG_HASH
  1300. bool "Enable Hash DRBG"
  1301. select CRYPTO_SHA256
  1302. help
  1303. Enable the Hash DRBG variant as defined in NIST SP800-90A.
  1304. config CRYPTO_DRBG_CTR
  1305. bool "Enable CTR DRBG"
  1306. select CRYPTO_AES
  1307. help
  1308. Enable the CTR DRBG variant as defined in NIST SP800-90A.
  1309. config CRYPTO_DRBG
  1310. tristate
  1311. default CRYPTO_DRBG_MENU
  1312. select CRYPTO_RNG
  1313. select CRYPTO_JITTERENTROPY
  1314. endif # if CRYPTO_DRBG_MENU
  1315. config CRYPTO_JITTERENTROPY
  1316. tristate "Jitterentropy Non-Deterministic Random Number Generator"
  1317. select CRYPTO_RNG
  1318. help
  1319. The Jitterentropy RNG is a noise that is intended
  1320. to provide seed to another RNG. The RNG does not
  1321. perform any cryptographic whitening of the generated
  1322. random numbers. This Jitterentropy RNG registers with
  1323. the kernel crypto API and can be used by any caller.
  1324. config CRYPTO_USER_API
  1325. tristate
  1326. config CRYPTO_USER_API_HASH
  1327. tristate "User-space interface for hash algorithms"
  1328. depends on NET
  1329. select CRYPTO_HASH
  1330. select CRYPTO_USER_API
  1331. help
  1332. This option enables the user-spaces interface for hash
  1333. algorithms.
  1334. config CRYPTO_USER_API_SKCIPHER
  1335. tristate "User-space interface for symmetric key cipher algorithms"
  1336. depends on NET
  1337. select CRYPTO_BLKCIPHER
  1338. select CRYPTO_USER_API
  1339. help
  1340. This option enables the user-spaces interface for symmetric
  1341. key cipher algorithms.
  1342. config CRYPTO_USER_API_RNG
  1343. tristate "User-space interface for random number generator algorithms"
  1344. depends on NET
  1345. select CRYPTO_RNG
  1346. select CRYPTO_USER_API
  1347. help
  1348. This option enables the user-spaces interface for random
  1349. number generator algorithms.
  1350. config CRYPTO_USER_API_AEAD
  1351. tristate "User-space interface for AEAD cipher algorithms"
  1352. depends on NET
  1353. select CRYPTO_AEAD
  1354. select CRYPTO_USER_API
  1355. help
  1356. This option enables the user-spaces interface for AEAD
  1357. cipher algorithms.
  1358. config CRYPTO_HASH_INFO
  1359. bool
  1360. source "drivers/crypto/Kconfig"
  1361. source crypto/asymmetric_keys/Kconfig
  1362. source certs/Kconfig
  1363. endif # if CRYPTO