Kconfig 49 KB

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