Kconfig 46 KB

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