Kconfig 47 KB

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