Kconfig 42 KB

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