Kconfig 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125
  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. help
  23. This options enables the fips boot option which is
  24. required if you want to system to operate in a FIPS 200
  25. certification. You should say no unless you know what
  26. this is.
  27. config CRYPTO_FIPS_INTEG_COPY_ADDRESS
  28. hex "FIPS integrity check zImage offset"
  29. default 0x8A008000
  30. help
  31. This options sets the offset from stext address where
  32. zImage will be copied for integrity check if you want
  33. to system to operate in FIPS mode, which enables
  34. kernel crypto module.
  35. If you need to change this value, change in device
  36. specific configuration file instead of here.
  37. config CRYPTO_ALGAPI
  38. tristate
  39. select CRYPTO_ALGAPI2
  40. help
  41. This option provides the API for cryptographic algorithms.
  42. config CRYPTO_ALGAPI2
  43. tristate
  44. config CRYPTO_AEAD
  45. tristate
  46. select CRYPTO_AEAD2
  47. select CRYPTO_ALGAPI
  48. config CRYPTO_AEAD2
  49. tristate
  50. select CRYPTO_ALGAPI2
  51. config CRYPTO_BLKCIPHER
  52. tristate
  53. select CRYPTO_BLKCIPHER2
  54. select CRYPTO_ALGAPI
  55. config CRYPTO_BLKCIPHER2
  56. tristate
  57. select CRYPTO_ALGAPI2
  58. select CRYPTO_RNG2
  59. select CRYPTO_WORKQUEUE
  60. config CRYPTO_HASH
  61. tristate
  62. select CRYPTO_HASH2
  63. select CRYPTO_ALGAPI
  64. config CRYPTO_HASH2
  65. tristate
  66. select CRYPTO_ALGAPI2
  67. config CRYPTO_RNG
  68. tristate
  69. select CRYPTO_RNG2
  70. select CRYPTO_ALGAPI
  71. config CRYPTO_RNG2
  72. tristate
  73. select CRYPTO_ALGAPI2
  74. config CRYPTO_PCOMP
  75. tristate
  76. select CRYPTO_PCOMP2
  77. select CRYPTO_ALGAPI
  78. config CRYPTO_PCOMP2
  79. tristate
  80. select CRYPTO_ALGAPI2
  81. config CRYPTO_MANAGER
  82. tristate "Cryptographic algorithm manager"
  83. select CRYPTO_MANAGER2
  84. help
  85. Create default cryptographic template instantiations such as
  86. cbc(aes).
  87. config CRYPTO_MANAGER2
  88. def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
  89. select CRYPTO_AEAD2
  90. select CRYPTO_HASH2
  91. select CRYPTO_BLKCIPHER2
  92. select CRYPTO_PCOMP2
  93. config CRYPTO_ABLK_HELPER
  94. tristate
  95. select CRYPTO_CRYPTD
  96. config CRYPTO_USER
  97. tristate "Userspace cryptographic algorithm configuration"
  98. depends on NET
  99. select CRYPTO_MANAGER
  100. help
  101. Userspace configuration for cryptographic instantiations such as
  102. cbc(aes).
  103. config CRYPTO_MANAGER_DISABLE_TESTS
  104. bool "Disable run-time self tests"
  105. default y
  106. depends on CRYPTO_MANAGER2
  107. help
  108. Disable run-time self tests that normally take place at
  109. algorithm registration.
  110. config CRYPTO_GF128MUL
  111. tristate "GF(2^128) multiplication functions"
  112. help
  113. Efficient table driven implementation of multiplications in the
  114. field GF(2^128). This is needed by some cypher modes. This
  115. option will be selected automatically if you select such a
  116. cipher mode. Only select this option by hand if you expect to load
  117. an external module that requires these functions.
  118. config CRYPTO_NULL
  119. tristate "Null algorithms"
  120. select CRYPTO_ALGAPI
  121. select CRYPTO_BLKCIPHER
  122. select CRYPTO_HASH
  123. help
  124. These are 'Null' algorithms, used by IPsec, which do nothing.
  125. config CRYPTO_PCRYPT
  126. tristate "Parallel crypto engine (EXPERIMENTAL)"
  127. depends on SMP && EXPERIMENTAL
  128. select PADATA
  129. select CRYPTO_MANAGER
  130. select CRYPTO_AEAD
  131. help
  132. This converts an arbitrary crypto algorithm into a parallel
  133. algorithm that executes in kernel threads.
  134. config CRYPTO_WORKQUEUE
  135. tristate
  136. config CRYPTO_CRYPTD
  137. tristate "Software async crypto daemon"
  138. select CRYPTO_BLKCIPHER
  139. select CRYPTO_HASH
  140. select CRYPTO_MANAGER
  141. select CRYPTO_WORKQUEUE
  142. help
  143. This is a generic software asynchronous crypto daemon that
  144. converts an arbitrary synchronous software crypto algorithm
  145. into an asynchronous algorithm that executes in a kernel thread.
  146. config CRYPTO_AUTHENC
  147. tristate "Authenc support"
  148. select CRYPTO_AEAD
  149. select CRYPTO_BLKCIPHER
  150. select CRYPTO_MANAGER
  151. select CRYPTO_HASH
  152. help
  153. Authenc: Combined mode wrapper for IPsec.
  154. This is required for IPSec.
  155. config CRYPTO_TEST
  156. tristate "Testing module"
  157. default n
  158. select CRYPTO_MANAGER
  159. help
  160. Quick & dirty crypto test module.
  161. comment "Authenticated Encryption with Associated Data"
  162. config CRYPTO_CCM
  163. tristate "CCM support"
  164. select CRYPTO_CTR
  165. select CRYPTO_AEAD
  166. help
  167. Support for Counter with CBC MAC. Required for IPsec.
  168. config CRYPTO_GCM
  169. tristate "GCM/GMAC support"
  170. select CRYPTO_CTR
  171. select CRYPTO_AEAD
  172. select CRYPTO_GHASH
  173. help
  174. Support for Galois/Counter Mode (GCM) and Galois Message
  175. Authentication Code (GMAC). Required for IPSec.
  176. config CRYPTO_SEQIV
  177. tristate "Sequence Number IV Generator"
  178. select CRYPTO_AEAD
  179. select CRYPTO_BLKCIPHER
  180. select CRYPTO_RNG
  181. help
  182. This IV generator generates an IV based on a sequence number by
  183. xoring it with a salt. This algorithm is mainly useful for CTR
  184. comment "Block modes"
  185. config CRYPTO_CBC
  186. tristate "CBC support"
  187. select CRYPTO_BLKCIPHER
  188. select CRYPTO_MANAGER
  189. help
  190. CBC: Cipher Block Chaining mode
  191. This block cipher algorithm is required for IPSec.
  192. config CRYPTO_CTR
  193. tristate "CTR support"
  194. select CRYPTO_BLKCIPHER
  195. select CRYPTO_SEQIV
  196. select CRYPTO_MANAGER
  197. help
  198. CTR: Counter mode
  199. This block cipher algorithm is required for IPSec.
  200. config CRYPTO_CTS
  201. tristate "CTS support"
  202. select CRYPTO_BLKCIPHER
  203. help
  204. CTS: Cipher Text Stealing
  205. This is the Cipher Text Stealing mode as described by
  206. Section 8 of rfc2040 and referenced by rfc3962.
  207. (rfc3962 includes errata information in its Appendix A)
  208. This mode is required for Kerberos gss mechanism support
  209. for AES encryption.
  210. config CRYPTO_ECB
  211. tristate "ECB support"
  212. select CRYPTO_BLKCIPHER
  213. select CRYPTO_MANAGER
  214. help
  215. ECB: Electronic CodeBook mode
  216. This is the simplest block cipher algorithm. It simply encrypts
  217. the input block by block.
  218. config CRYPTO_LRW
  219. tristate "LRW support"
  220. select CRYPTO_BLKCIPHER
  221. select CRYPTO_MANAGER
  222. select CRYPTO_GF128MUL
  223. help
  224. LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
  225. narrow block cipher mode for dm-crypt. Use it with cipher
  226. specification string aes-lrw-benbi, the key must be 256, 320 or 384.
  227. The first 128, 192 or 256 bits in the key are used for AES and the
  228. rest is used to tie each cipher block to its logical position.
  229. config CRYPTO_PCBC
  230. tristate "PCBC support"
  231. select CRYPTO_BLKCIPHER
  232. select CRYPTO_MANAGER
  233. help
  234. PCBC: Propagating Cipher Block Chaining mode
  235. This block cipher algorithm is required for RxRPC.
  236. config CRYPTO_XTS
  237. tristate "XTS support"
  238. select CRYPTO_BLKCIPHER
  239. select CRYPTO_MANAGER
  240. select CRYPTO_GF128MUL
  241. help
  242. XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
  243. key size 256, 384 or 512 bits. This implementation currently
  244. can't handle a sectorsize which is not a multiple of 16 bytes.
  245. comment "Hash modes"
  246. config CRYPTO_HMAC
  247. tristate "HMAC support"
  248. select CRYPTO_HASH
  249. select CRYPTO_MANAGER
  250. help
  251. HMAC: Keyed-Hashing for Message Authentication (RFC2104).
  252. This is required for IPSec.
  253. config CRYPTO_XCBC
  254. tristate "XCBC support"
  255. depends on EXPERIMENTAL
  256. select CRYPTO_HASH
  257. select CRYPTO_MANAGER
  258. help
  259. XCBC: Keyed-Hashing with encryption algorithm
  260. http://www.ietf.org/rfc/rfc3566.txt
  261. http://csrc.nist.gov/encryption/modes/proposedmodes/
  262. xcbc-mac/xcbc-mac-spec.pdf
  263. config CRYPTO_VMAC
  264. tristate "VMAC support"
  265. depends on EXPERIMENTAL
  266. select CRYPTO_HASH
  267. select CRYPTO_MANAGER
  268. help
  269. VMAC is a message authentication algorithm designed for
  270. very high speed on 64-bit architectures.
  271. See also:
  272. <http://fastcrypto.org/vmac>
  273. comment "Digest"
  274. config CRYPTO_CRC32C
  275. tristate "CRC32c CRC algorithm"
  276. select CRYPTO_HASH
  277. select CRC32
  278. help
  279. Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
  280. by iSCSI for header and data digests and by others.
  281. See Castagnoli93. Module will be crc32c.
  282. config CRYPTO_CRC32C_INTEL
  283. tristate "CRC32c INTEL hardware acceleration"
  284. depends on X86
  285. select CRYPTO_HASH
  286. help
  287. In Intel processor with SSE4.2 supported, the processor will
  288. support CRC32C implementation using hardware accelerated CRC32
  289. instruction. This option will create 'crc32c-intel' module,
  290. which will enable any routine to use the CRC32 instruction to
  291. gain performance compared with software implementation.
  292. Module will be crc32c-intel.
  293. config CRYPTO_GHASH
  294. tristate "GHASH digest algorithm"
  295. select CRYPTO_GF128MUL
  296. help
  297. GHASH is message digest algorithm for GCM (Galois/Counter Mode).
  298. config CRYPTO_MD4
  299. tristate "MD4 digest algorithm"
  300. select CRYPTO_HASH
  301. help
  302. MD4 message digest algorithm (RFC1320).
  303. config CRYPTO_MD5
  304. tristate "MD5 digest algorithm"
  305. select CRYPTO_HASH
  306. help
  307. MD5 message digest algorithm (RFC1321).
  308. config CRYPTO_MICHAEL_MIC
  309. tristate "Michael MIC keyed digest algorithm"
  310. select CRYPTO_HASH
  311. help
  312. Michael MIC is used for message integrity protection in TKIP
  313. (IEEE 802.11i). This algorithm is required for TKIP, but it
  314. should not be used for other purposes because of the weakness
  315. of the algorithm.
  316. config CRYPTO_RMD128
  317. tristate "RIPEMD-128 digest algorithm"
  318. select CRYPTO_HASH
  319. help
  320. RIPEMD-128 (ISO/IEC 10118-3:2004).
  321. RIPEMD-128 is a 128-bit cryptographic hash function. It should only
  322. be used as a secure replacement for RIPEMD. For other use cases,
  323. RIPEMD-160 should be used.
  324. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  325. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  326. config CRYPTO_RMD160
  327. tristate "RIPEMD-160 digest algorithm"
  328. select CRYPTO_HASH
  329. help
  330. RIPEMD-160 (ISO/IEC 10118-3:2004).
  331. RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
  332. to be used as a secure replacement for the 128-bit hash functions
  333. MD4, MD5 and it's predecessor RIPEMD
  334. (not to be confused with RIPEMD-128).
  335. It's speed is comparable to SHA1 and there are no known attacks
  336. against RIPEMD-160.
  337. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  338. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  339. config CRYPTO_RMD256
  340. tristate "RIPEMD-256 digest algorithm"
  341. select CRYPTO_HASH
  342. help
  343. RIPEMD-256 is an optional extension of RIPEMD-128 with a
  344. 256 bit hash. It is intended for applications that require
  345. longer hash-results, without needing a larger security level
  346. (than RIPEMD-128).
  347. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  348. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  349. config CRYPTO_RMD320
  350. tristate "RIPEMD-320 digest algorithm"
  351. select CRYPTO_HASH
  352. help
  353. RIPEMD-320 is an optional extension of RIPEMD-160 with a
  354. 320 bit hash. It is intended for applications that require
  355. longer hash-results, without needing a larger security level
  356. (than RIPEMD-160).
  357. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  358. See <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  359. config CRYPTO_SHA1
  360. tristate "SHA1 digest algorithm"
  361. select CRYPTO_HASH
  362. help
  363. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
  364. config CRYPTO_SHA1_SSSE3
  365. tristate "SHA1 digest algorithm (SSSE3/AVX)"
  366. depends on X86 && 64BIT
  367. select CRYPTO_SHA1
  368. select CRYPTO_HASH
  369. help
  370. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  371. using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
  372. Extensions (AVX), when available.
  373. config CRYPTO_SHA1_ARM
  374. tristate "SHA1 digest algorithm (ARM-asm)"
  375. depends on ARM
  376. select CRYPTO_SHA1
  377. select CRYPTO_HASH
  378. default y
  379. help
  380. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  381. using optimized ARM assembler.
  382. config CRYPTO_SHA1_ARM_NEON
  383. tristate "SHA1 digest algorithm (ARM NEON)"
  384. depends on ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN
  385. select CRYPTO_SHA1_ARM
  386. select CRYPTO_SHA1
  387. select CRYPTO_HASH
  388. help
  389. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  390. using optimized ARM NEON assembly, when NEON instructions are
  391. available.
  392. config CRYPTO_SHA256
  393. tristate "SHA224 and SHA256 digest algorithm"
  394. select CRYPTO_HASH
  395. help
  396. SHA256 secure hash standard (DFIPS 180-2).
  397. This version of SHA implements a 256 bit hash with 128 bits of
  398. security against collision attacks.
  399. This code also includes SHA-224, a 224 bit hash with 112 bits
  400. of security against collision attacks.
  401. config CRYPTO_SHA512
  402. tristate "SHA384 and SHA512 digest algorithms"
  403. select CRYPTO_HASH
  404. help
  405. SHA512 secure hash standard (DFIPS 180-2).
  406. This version of SHA implements a 512 bit hash with 256 bits of
  407. security against collision attacks.
  408. This code also includes SHA-384, a 384 bit hash with 192 bits
  409. of security against collision attacks.
  410. config CRYPTO_SHA512_ARM_NEON
  411. tristate "SHA384 and SHA512 digest algorithm (ARM NEON)"
  412. depends on ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN
  413. select CRYPTO_SHA512
  414. select CRYPTO_HASH
  415. help
  416. SHA-512 secure hash standard (DFIPS 180-2) implemented
  417. using ARM NEON instructions, when available.
  418. This version of SHA implements a 512 bit hash with 256 bits of
  419. security against collision attacks.
  420. This code also includes SHA-384, a 384 bit hash with 192 bits
  421. of security against collision attacks.
  422. config CRYPTO_TGR192
  423. tristate "Tiger digest algorithms"
  424. select CRYPTO_HASH
  425. help
  426. Tiger hash algorithm 192, 160 and 128-bit hashes
  427. Tiger is a hash function optimized for 64-bit processors while
  428. still having decent performance on 32-bit processors.
  429. Tiger was developed by Ross Anderson and Eli Biham.
  430. See also:
  431. <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
  432. config CRYPTO_WP512
  433. tristate "Whirlpool digest algorithms"
  434. select CRYPTO_HASH
  435. help
  436. Whirlpool hash algorithm 512, 384 and 256-bit hashes
  437. Whirlpool-512 is part of the NESSIE cryptographic primitives.
  438. Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
  439. See also:
  440. <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
  441. config CRYPTO_GHASH_CLMUL_NI_INTEL
  442. tristate "GHASH digest algorithm (CLMUL-NI accelerated)"
  443. depends on X86 && 64BIT
  444. select CRYPTO_CRYPTD
  445. help
  446. GHASH is message digest algorithm for GCM (Galois/Counter Mode).
  447. The implementation is accelerated by CLMUL-NI of Intel.
  448. comment "Ciphers"
  449. config CRYPTO_AES
  450. tristate "AES cipher algorithms"
  451. select CRYPTO_ALGAPI
  452. help
  453. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  454. algorithm.
  455. Rijndael appears to be consistently a very good performer in
  456. both hardware and software across a wide range of computing
  457. environments regardless of its use in feedback or non-feedback
  458. modes. Its key setup time is excellent, and its key agility is
  459. good. Rijndael's very low memory requirements make it very well
  460. suited for restricted-space environments, in which it also
  461. demonstrates excellent performance. Rijndael's operations are
  462. among the easiest to defend against power and timing attacks.
  463. The AES specifies three key sizes: 128, 192 and 256 bits
  464. See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
  465. config CRYPTO_AES_586
  466. tristate "AES cipher algorithms (i586)"
  467. depends on (X86 || UML_X86) && !64BIT
  468. select CRYPTO_ALGAPI
  469. select CRYPTO_AES
  470. help
  471. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  472. algorithm.
  473. Rijndael appears to be consistently a very good performer in
  474. both hardware and software across a wide range of computing
  475. environments regardless of its use in feedback or non-feedback
  476. modes. Its key setup time is excellent, and its key agility is
  477. good. Rijndael's very low memory requirements make it very well
  478. suited for restricted-space environments, in which it also
  479. demonstrates excellent performance. Rijndael's operations are
  480. among the easiest to defend against power and timing attacks.
  481. The AES specifies three key sizes: 128, 192 and 256 bits
  482. See <http://csrc.nist.gov/encryption/aes/> for more information.
  483. config CRYPTO_AES_X86_64
  484. tristate "AES cipher algorithms (x86_64)"
  485. depends on (X86 || UML_X86) && 64BIT
  486. select CRYPTO_ALGAPI
  487. select CRYPTO_AES
  488. help
  489. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  490. algorithm.
  491. Rijndael appears to be consistently a very good performer in
  492. both hardware and software across a wide range of computing
  493. environments regardless of its use in feedback or non-feedback
  494. modes. Its key setup time is excellent, and its key agility is
  495. good. Rijndael's very low memory requirements make it very well
  496. suited for restricted-space environments, in which it also
  497. demonstrates excellent performance. Rijndael's operations are
  498. among the easiest to defend against power and timing attacks.
  499. The AES specifies three key sizes: 128, 192 and 256 bits
  500. See <http://csrc.nist.gov/encryption/aes/> for more information.
  501. config CRYPTO_AES_NI_INTEL
  502. tristate "AES cipher algorithms (AES-NI)"
  503. depends on X86
  504. select CRYPTO_AES_X86_64 if 64BIT
  505. select CRYPTO_AES_586 if !64BIT
  506. select CRYPTO_CRYPTD
  507. select CRYPTO_ALGAPI
  508. help
  509. Use Intel AES-NI instructions for AES algorithm.
  510. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  511. algorithm.
  512. Rijndael appears to be consistently a very good performer in
  513. both hardware and software across a wide range of computing
  514. environments regardless of its use in feedback or non-feedback
  515. modes. Its key setup time is excellent, and its key agility is
  516. good. Rijndael's very low memory requirements make it very well
  517. suited for restricted-space environments, in which it also
  518. demonstrates excellent performance. Rijndael's operations are
  519. among the easiest to defend against power and timing attacks.
  520. The AES specifies three key sizes: 128, 192 and 256 bits
  521. See <http://csrc.nist.gov/encryption/aes/> for more information.
  522. In addition to AES cipher algorithm support, the acceleration
  523. for some popular block cipher mode is supported too, including
  524. ECB, CBC, LRW, PCBC, XTS. The 64 bit version has additional
  525. acceleration for CTR.
  526. config CRYPTO_AES_ARM
  527. tristate "AES cipher algorithms (ARM-asm)"
  528. depends on ARM
  529. select CRYPTO_ALGAPI
  530. select CRYPTO_AES
  531. default y
  532. help
  533. Use optimized AES assembler routines for ARM platforms.
  534. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  535. algorithm.
  536. Rijndael appears to be consistently a very good performer in
  537. both hardware and software across a wide range of computing
  538. environments regardless of its use in feedback or non-feedback
  539. modes. Its key setup time is excellent, and its key agility is
  540. good. Rijndael's very low memory requirements make it very well
  541. suited for restricted-space environments, in which it also
  542. demonstrates excellent performance. Rijndael's operations are
  543. among the easiest to defend against power and timing attacks.
  544. The AES specifies three key sizes: 128, 192 and 256 bits
  545. See <http://csrc.nist.gov/encryption/aes/> for more information.
  546. config CRYPTO_AES_ARM_BS
  547. tristate "Bit sliced AES using NEON instructions"
  548. depends on ARM && KERNEL_MODE_NEON
  549. select CRYPTO_ALGAPI
  550. select CRYPTO_AES_ARM
  551. select CRYPTO_ABLK_HELPER
  552. help
  553. Use a faster and more secure NEON based implementation of AES in CBC,
  554. CTR and XTS modes
  555. Bit sliced AES gives around 45% speedup on Cortex-A15 for CTR mode
  556. and for XTS mode encryption, CBC and XTS mode decryption speedup is
  557. around 25%. (CBC encryption speed is not affected by this driver.)
  558. This implementation does not rely on any lookup tables so it is
  559. believed to be invulnerable to cache timing attacks.
  560. config CRYPTO_ANUBIS
  561. tristate "Anubis cipher algorithm"
  562. select CRYPTO_ALGAPI
  563. help
  564. Anubis cipher algorithm.
  565. Anubis is a variable key length cipher which can use keys from
  566. 128 bits to 320 bits in length. It was evaluated as a entrant
  567. in the NESSIE competition.
  568. See also:
  569. <https://www.cosic.esat.kuleuven.be/nessie/reports/>
  570. <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
  571. config CRYPTO_ARC4
  572. tristate "ARC4 cipher algorithm"
  573. select CRYPTO_ALGAPI
  574. help
  575. ARC4 cipher algorithm.
  576. ARC4 is a stream cipher using keys ranging from 8 bits to 2048
  577. bits in length. This algorithm is required for driver-based
  578. WEP, but it should not be for other purposes because of the
  579. weakness of the algorithm.
  580. config CRYPTO_BLOWFISH
  581. tristate "Blowfish cipher algorithm"
  582. select CRYPTO_ALGAPI
  583. select CRYPTO_BLOWFISH_COMMON
  584. help
  585. Blowfish cipher algorithm, by Bruce Schneier.
  586. This is a variable key length cipher which can use keys from 32
  587. bits to 448 bits in length. It's fast, simple and specifically
  588. designed for use on "large microprocessors".
  589. See also:
  590. <http://www.schneier.com/blowfish.html>
  591. config CRYPTO_BLOWFISH_COMMON
  592. tristate
  593. help
  594. Common parts of the Blowfish cipher algorithm shared by the
  595. generic c and the assembler implementations.
  596. See also:
  597. <http://www.schneier.com/blowfish.html>
  598. config CRYPTO_BLOWFISH_X86_64
  599. tristate "Blowfish cipher algorithm (x86_64)"
  600. depends on X86 && 64BIT
  601. select CRYPTO_ALGAPI
  602. select CRYPTO_BLOWFISH_COMMON
  603. help
  604. Blowfish cipher algorithm (x86_64), by Bruce Schneier.
  605. This is a variable key length cipher which can use keys from 32
  606. bits to 448 bits in length. It's fast, simple and specifically
  607. designed for use on "large microprocessors".
  608. See also:
  609. <http://www.schneier.com/blowfish.html>
  610. config CRYPTO_CAMELLIA
  611. tristate "Camellia cipher algorithms"
  612. depends on CRYPTO
  613. select CRYPTO_ALGAPI
  614. help
  615. Camellia cipher algorithms module.
  616. Camellia is a symmetric key block cipher developed jointly
  617. at NTT and Mitsubishi Electric Corporation.
  618. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  619. See also:
  620. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  621. config CRYPTO_CAMELLIA_X86_64
  622. tristate "Camellia cipher algorithm (x86_64)"
  623. depends on X86 && 64BIT
  624. depends on CRYPTO
  625. select CRYPTO_ALGAPI
  626. select CRYPTO_LRW
  627. select CRYPTO_XTS
  628. help
  629. Camellia cipher algorithm module (x86_64).
  630. Camellia is a symmetric key block cipher developed jointly
  631. at NTT and Mitsubishi Electric Corporation.
  632. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  633. See also:
  634. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  635. config CRYPTO_CAST5
  636. tristate "CAST5 (CAST-128) cipher algorithm"
  637. select CRYPTO_ALGAPI
  638. help
  639. The CAST5 encryption algorithm (synonymous with CAST-128) is
  640. described in RFC2144.
  641. config CRYPTO_CAST6
  642. tristate "CAST6 (CAST-256) cipher algorithm"
  643. select CRYPTO_ALGAPI
  644. help
  645. The CAST6 encryption algorithm (synonymous with CAST-256) is
  646. described in RFC2612.
  647. config CRYPTO_DES
  648. tristate "DES and Triple DES EDE cipher algorithms"
  649. select CRYPTO_ALGAPI
  650. help
  651. DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
  652. config CRYPTO_FCRYPT
  653. tristate "FCrypt cipher algorithm"
  654. select CRYPTO_ALGAPI
  655. select CRYPTO_BLKCIPHER
  656. help
  657. FCrypt algorithm used by RxRPC.
  658. config CRYPTO_KHAZAD
  659. tristate "Khazad cipher algorithm"
  660. select CRYPTO_ALGAPI
  661. help
  662. Khazad cipher algorithm.
  663. Khazad was a finalist in the initial NESSIE competition. It is
  664. an algorithm optimized for 64-bit processors with good performance
  665. on 32-bit processors. Khazad uses an 128 bit key size.
  666. See also:
  667. <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
  668. config CRYPTO_SALSA20
  669. tristate "Salsa20 stream cipher algorithm (EXPERIMENTAL)"
  670. depends on EXPERIMENTAL
  671. select CRYPTO_BLKCIPHER
  672. help
  673. Salsa20 stream cipher algorithm.
  674. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  675. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  676. The Salsa20 stream cipher algorithm is designed by Daniel J.
  677. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  678. config CRYPTO_SALSA20_586
  679. tristate "Salsa20 stream cipher algorithm (i586) (EXPERIMENTAL)"
  680. depends on (X86 || UML_X86) && !64BIT
  681. depends on EXPERIMENTAL
  682. select CRYPTO_BLKCIPHER
  683. help
  684. Salsa20 stream cipher algorithm.
  685. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  686. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  687. The Salsa20 stream cipher algorithm is designed by Daniel J.
  688. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  689. config CRYPTO_SALSA20_X86_64
  690. tristate "Salsa20 stream cipher algorithm (x86_64) (EXPERIMENTAL)"
  691. depends on (X86 || UML_X86) && 64BIT
  692. depends on EXPERIMENTAL
  693. select CRYPTO_BLKCIPHER
  694. help
  695. Salsa20 stream cipher algorithm.
  696. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  697. Stream Cipher Project. See <http://www.ecrypt.eu.org/stream/>
  698. The Salsa20 stream cipher algorithm is designed by Daniel J.
  699. Bernstein <djb@cr.yp.to>. See <http://cr.yp.to/snuffle.html>
  700. config CRYPTO_SEED
  701. tristate "SEED cipher algorithm"
  702. select CRYPTO_ALGAPI
  703. help
  704. SEED cipher algorithm (RFC4269).
  705. SEED is a 128-bit symmetric key block cipher that has been
  706. developed by KISA (Korea Information Security Agency) as a
  707. national standard encryption algorithm of the Republic of Korea.
  708. It is a 16 round block cipher with the key size of 128 bit.
  709. See also:
  710. <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
  711. config CRYPTO_SERPENT
  712. tristate "Serpent cipher algorithm"
  713. select CRYPTO_ALGAPI
  714. help
  715. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  716. Keys are allowed to be from 0 to 256 bits in length, in steps
  717. of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
  718. variant of Serpent for compatibility with old kerneli.org code.
  719. See also:
  720. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  721. config CRYPTO_SERPENT_SSE2_X86_64
  722. tristate "Serpent cipher algorithm (x86_64/SSE2)"
  723. depends on X86 && 64BIT
  724. select CRYPTO_ALGAPI
  725. select CRYPTO_CRYPTD
  726. select CRYPTO_SERPENT
  727. select CRYPTO_LRW
  728. select CRYPTO_XTS
  729. help
  730. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  731. Keys are allowed to be from 0 to 256 bits in length, in steps
  732. of 8 bits.
  733. This module provides Serpent cipher algorithm that processes eigth
  734. blocks parallel using SSE2 instruction set.
  735. See also:
  736. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  737. config CRYPTO_SERPENT_SSE2_586
  738. tristate "Serpent cipher algorithm (i586/SSE2)"
  739. depends on X86 && !64BIT
  740. select CRYPTO_ALGAPI
  741. select CRYPTO_CRYPTD
  742. select CRYPTO_SERPENT
  743. select CRYPTO_LRW
  744. select CRYPTO_XTS
  745. help
  746. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  747. Keys are allowed to be from 0 to 256 bits in length, in steps
  748. of 8 bits.
  749. This module provides Serpent cipher algorithm that processes four
  750. blocks parallel using SSE2 instruction set.
  751. See also:
  752. <http://www.cl.cam.ac.uk/~rja14/serpent.html>
  753. config CRYPTO_TEA
  754. tristate "TEA, XTEA and XETA cipher algorithms"
  755. select CRYPTO_ALGAPI
  756. help
  757. TEA cipher algorithm.
  758. Tiny Encryption Algorithm is a simple cipher that uses
  759. many rounds for security. It is very fast and uses
  760. little memory.
  761. Xtendend Tiny Encryption Algorithm is a modification to
  762. the TEA algorithm to address a potential key weakness
  763. in the TEA algorithm.
  764. Xtendend Encryption Tiny Algorithm is a mis-implementation
  765. of the XTEA algorithm for compatibility purposes.
  766. config CRYPTO_TWOFISH
  767. tristate "Twofish cipher algorithm"
  768. select CRYPTO_ALGAPI
  769. select CRYPTO_TWOFISH_COMMON
  770. help
  771. Twofish cipher algorithm.
  772. Twofish was submitted as an AES (Advanced Encryption Standard)
  773. candidate cipher by researchers at CounterPane Systems. It is a
  774. 16 round block cipher supporting key sizes of 128, 192, and 256
  775. bits.
  776. See also:
  777. <http://www.schneier.com/twofish.html>
  778. config CRYPTO_TWOFISH_COMMON
  779. tristate
  780. help
  781. Common parts of the Twofish cipher algorithm shared by the
  782. generic c and the assembler implementations.
  783. config CRYPTO_TWOFISH_586
  784. tristate "Twofish cipher algorithms (i586)"
  785. depends on (X86 || UML_X86) && !64BIT
  786. select CRYPTO_ALGAPI
  787. select CRYPTO_TWOFISH_COMMON
  788. help
  789. Twofish cipher algorithm.
  790. Twofish was submitted as an AES (Advanced Encryption Standard)
  791. candidate cipher by researchers at CounterPane Systems. It is a
  792. 16 round block cipher supporting key sizes of 128, 192, and 256
  793. bits.
  794. See also:
  795. <http://www.schneier.com/twofish.html>
  796. config CRYPTO_TWOFISH_X86_64
  797. tristate "Twofish cipher algorithm (x86_64)"
  798. depends on (X86 || UML_X86) && 64BIT
  799. select CRYPTO_ALGAPI
  800. select CRYPTO_TWOFISH_COMMON
  801. help
  802. Twofish cipher algorithm (x86_64).
  803. Twofish was submitted as an AES (Advanced Encryption Standard)
  804. candidate cipher by researchers at CounterPane Systems. It is a
  805. 16 round block cipher supporting key sizes of 128, 192, and 256
  806. bits.
  807. See also:
  808. <http://www.schneier.com/twofish.html>
  809. config CRYPTO_TWOFISH_X86_64_3WAY
  810. tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
  811. depends on X86 && 64BIT
  812. select CRYPTO_ALGAPI
  813. select CRYPTO_TWOFISH_COMMON
  814. select CRYPTO_TWOFISH_X86_64
  815. select CRYPTO_LRW
  816. select CRYPTO_XTS
  817. help
  818. Twofish cipher algorithm (x86_64, 3-way parallel).
  819. Twofish was submitted as an AES (Advanced Encryption Standard)
  820. candidate cipher by researchers at CounterPane Systems. It is a
  821. 16 round block cipher supporting key sizes of 128, 192, and 256
  822. bits.
  823. This module provides Twofish cipher algorithm that processes three
  824. blocks parallel, utilizing resources of out-of-order CPUs better.
  825. See also:
  826. <http://www.schneier.com/twofish.html>
  827. comment "Compression"
  828. config CRYPTO_DEFLATE
  829. tristate "Deflate compression algorithm"
  830. select CRYPTO_ALGAPI
  831. select ZLIB_INFLATE
  832. select ZLIB_DEFLATE
  833. help
  834. This is the Deflate algorithm (RFC1951), specified for use in
  835. IPSec with the IPCOMP protocol (RFC3173, RFC2394).
  836. You will most probably want this if using IPSec.
  837. config CRYPTO_ZLIB
  838. tristate "Zlib compression algorithm"
  839. select CRYPTO_PCOMP
  840. select ZLIB_INFLATE
  841. select ZLIB_DEFLATE
  842. select NLATTR
  843. help
  844. This is the zlib algorithm.
  845. config CRYPTO_LZO
  846. tristate "LZO compression algorithm"
  847. select CRYPTO_ALGAPI
  848. select LZO_COMPRESS
  849. select LZO_DECOMPRESS
  850. help
  851. This is the LZO algorithm.
  852. config CRYPTO_LZ4
  853. tristate "LZ4 compression algorithm"
  854. select CRYPTO_ALGAPI
  855. select LZ4_COMPRESS
  856. select LZ4_DECOMPRESS
  857. help
  858. This is the LZ4 algorithm.
  859. config CRYPTO_LZ4HC
  860. tristate "LZ4HC compression algorithm"
  861. select CRYPTO_ALGAPI
  862. select LZ4HC_COMPRESS
  863. select LZ4_DECOMPRESS
  864. help
  865. This is the LZ4 high compression mode algorithm.
  866. comment "Random Number Generation"
  867. config CRYPTO_ANSI_CPRNG
  868. tristate "Pseudo Random Number Generation for Cryptographic modules"
  869. default m
  870. select CRYPTO_AES
  871. select CRYPTO_RNG
  872. help
  873. This option enables the generic pseudo random number generator
  874. for cryptographic modules. Uses the Algorithm specified in
  875. ANSI X9.31 A.2.4. Note that this option must be enabled if
  876. CRYPTO_FIPS is selected
  877. menuconfig CRYPTO_DRBG_MENU
  878. tristate "NIST SP800-90A DRBG"
  879. help
  880. NIST SP800-90A compliant DRBG. In the following submenu, one or
  881. more of the DRBG types must be selected.
  882. if CRYPTO_DRBG_MENU
  883. config CRYPTO_DRBG_HMAC
  884. bool "Enable HMAC DRBG"
  885. default y
  886. select CRYPTO_HMAC
  887. help
  888. Enable the HMAC DRBG variant as defined in NIST SP800-90A.
  889. config CRYPTO_DRBG_HASH
  890. bool "Enable Hash DRBG"
  891. select CRYPTO_HASH
  892. help
  893. Enable the Hash DRBG variant as defined in NIST SP800-90A.
  894. config CRYPTO_DRBG_CTR
  895. bool "Enable CTR DRBG"
  896. select CRYPTO_AES
  897. help
  898. Enable the CTR DRBG variant as defined in NIST SP800-90A.
  899. config CRYPTO_DRBG
  900. tristate
  901. default CRYPTO_DRBG_MENU if (CRYPTO_DRBG_HMAC || CRYPTO_DRBG_HASH || CRYPTO_DRBG_CTR)
  902. select CRYPTO_RNG
  903. endif # if CRYPTO_DRBG_MENU
  904. config CRYPTO_USER_API
  905. tristate
  906. config CRYPTO_USER_API_HASH
  907. tristate "User-space interface for hash algorithms"
  908. depends on NET
  909. select CRYPTO_HASH
  910. select CRYPTO_USER_API
  911. help
  912. This option enables the user-spaces interface for hash
  913. algorithms.
  914. config CRYPTO_USER_API_SKCIPHER
  915. tristate "User-space interface for symmetric key cipher algorithms"
  916. depends on NET
  917. select CRYPTO_BLKCIPHER
  918. select CRYPTO_USER_API
  919. help
  920. This option enables the user-spaces interface for symmetric
  921. key cipher algorithms.
  922. source "drivers/crypto/Kconfig"
  923. endif # if CRYPTO