Kconfig 58 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975
  1. # SPDX-License-Identifier: GPL-2.0
  2. #
  3. # Generic algorithms support
  4. #
  5. config XOR_BLOCKS
  6. tristate
  7. #
  8. # async_tx api: hardware offloaded memory transfer/transform support
  9. #
  10. source "crypto/async_tx/Kconfig"
  11. #
  12. # Cryptographic API Configuration
  13. #
  14. menuconfig CRYPTO
  15. tristate "Cryptographic API"
  16. help
  17. This option provides the core Cryptographic API.
  18. if CRYPTO
  19. comment "Crypto core or helper"
  20. config CRYPTO_FIPS
  21. bool "FIPS 200 compliance"
  22. depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
  23. depends on (MODULE_SIG || !MODULES)
  24. help
  25. This option enables the fips boot option which is
  26. required if you want the system to operate in a FIPS 200
  27. certification. You should say no unless you know what
  28. this is.
  29. # CRYPTO_FIPS140 just enables the support in the kernel for loading fips140.ko.
  30. # The module still needs to be built and loaded if you need FIPS 140 compliance.
  31. config CRYPTO_FIPS140
  32. def_bool y
  33. depends on MODULES && ARM64 && ARM64_MODULE_PLTS
  34. config CRYPTO_FIPS140_MOD
  35. bool "Enable FIPS 140 cryptographic module"
  36. depends on LTO_CLANG && CRYPTO_FIPS140
  37. help
  38. This option enables building a loadable module fips140.ko, which
  39. contains various crypto algorithms that are also built into vmlinux.
  40. At load time, this module overrides the built-in implementations of
  41. these algorithms with its implementations. It also runs self-tests on
  42. these algorithms and verifies the integrity of its code and data. If
  43. either of these steps fails, the kernel will panic.
  44. This module is intended to be loaded at early boot time in order to
  45. meet FIPS 140 and NIAP FPT_TST_EXT.1 requirements. It shouldn't be
  46. used if you don't need to meet these requirements.
  47. config CRYPTO_FIPS140_MOD_EVAL_TESTING
  48. bool "Enable evaluation testing features in FIPS 140 module"
  49. depends on CRYPTO_FIPS140_MOD
  50. help
  51. This option adds some features to the FIPS 140 module which are needed
  52. for lab evaluation testing of the module, e.g. support for injecting
  53. errors and support for a userspace interface to some of the module's
  54. services. This option should not be enabled in production builds.
  55. config CRYPTO_ALGAPI
  56. tristate
  57. select CRYPTO_ALGAPI2
  58. help
  59. This option provides the API for cryptographic algorithms.
  60. config CRYPTO_ALGAPI2
  61. tristate
  62. config CRYPTO_AEAD
  63. tristate
  64. select CRYPTO_AEAD2
  65. select CRYPTO_ALGAPI
  66. config CRYPTO_AEAD2
  67. tristate
  68. select CRYPTO_ALGAPI2
  69. select CRYPTO_NULL2
  70. select CRYPTO_RNG2
  71. config CRYPTO_SKCIPHER
  72. tristate
  73. select CRYPTO_SKCIPHER2
  74. select CRYPTO_ALGAPI
  75. config CRYPTO_SKCIPHER2
  76. tristate
  77. select CRYPTO_ALGAPI2
  78. select CRYPTO_RNG2
  79. config CRYPTO_HASH
  80. tristate
  81. select CRYPTO_HASH2
  82. select CRYPTO_ALGAPI
  83. config CRYPTO_HASH2
  84. tristate
  85. select CRYPTO_ALGAPI2
  86. config CRYPTO_RNG
  87. tristate
  88. select CRYPTO_RNG2
  89. select CRYPTO_ALGAPI
  90. config CRYPTO_RNG2
  91. tristate
  92. select CRYPTO_ALGAPI2
  93. config CRYPTO_RNG_DEFAULT
  94. tristate
  95. select CRYPTO_DRBG_MENU
  96. config CRYPTO_AKCIPHER2
  97. tristate
  98. select CRYPTO_ALGAPI2
  99. config CRYPTO_AKCIPHER
  100. tristate
  101. select CRYPTO_AKCIPHER2
  102. select CRYPTO_ALGAPI
  103. config CRYPTO_KPP2
  104. tristate
  105. select CRYPTO_ALGAPI2
  106. config CRYPTO_KPP
  107. tristate
  108. select CRYPTO_ALGAPI
  109. select CRYPTO_KPP2
  110. config CRYPTO_ACOMP2
  111. tristate
  112. select CRYPTO_ALGAPI2
  113. select SGL_ALLOC
  114. config CRYPTO_ACOMP
  115. tristate
  116. select CRYPTO_ALGAPI
  117. select CRYPTO_ACOMP2
  118. config CRYPTO_MANAGER
  119. tristate "Cryptographic algorithm manager"
  120. select CRYPTO_MANAGER2
  121. help
  122. Create default cryptographic template instantiations such as
  123. cbc(aes).
  124. config CRYPTO_MANAGER2
  125. def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
  126. select CRYPTO_AEAD2
  127. select CRYPTO_HASH2
  128. select CRYPTO_SKCIPHER2
  129. select CRYPTO_AKCIPHER2
  130. select CRYPTO_KPP2
  131. select CRYPTO_ACOMP2
  132. config CRYPTO_USER
  133. tristate "Userspace cryptographic algorithm configuration"
  134. depends on NET
  135. select CRYPTO_MANAGER
  136. help
  137. Userspace configuration for cryptographic instantiations such as
  138. cbc(aes).
  139. config CRYPTO_MANAGER_DISABLE_TESTS
  140. bool "Disable run-time self tests"
  141. default y
  142. help
  143. Disable run-time self tests that normally take place at
  144. algorithm registration.
  145. config CRYPTO_MANAGER_EXTRA_TESTS
  146. bool "Enable extra run-time crypto self tests"
  147. depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER
  148. help
  149. Enable extra run-time self tests of registered crypto algorithms,
  150. including randomized fuzz tests.
  151. This is intended for developer use only, as these tests take much
  152. longer to run than the normal self tests.
  153. config CRYPTO_GF128MUL
  154. tristate
  155. config CRYPTO_NULL
  156. tristate "Null algorithms"
  157. select CRYPTO_NULL2
  158. help
  159. These are 'Null' algorithms, used by IPsec, which do nothing.
  160. config CRYPTO_NULL2
  161. tristate
  162. select CRYPTO_ALGAPI2
  163. select CRYPTO_SKCIPHER2
  164. select CRYPTO_HASH2
  165. config CRYPTO_PCRYPT
  166. tristate "Parallel crypto engine"
  167. depends on SMP
  168. select PADATA
  169. select CRYPTO_MANAGER
  170. select CRYPTO_AEAD
  171. help
  172. This converts an arbitrary crypto algorithm into a parallel
  173. algorithm that executes in kernel threads.
  174. config CRYPTO_CRYPTD
  175. tristate "Software async crypto daemon"
  176. select CRYPTO_SKCIPHER
  177. select CRYPTO_HASH
  178. select CRYPTO_MANAGER
  179. help
  180. This is a generic software asynchronous crypto daemon that
  181. converts an arbitrary synchronous software crypto algorithm
  182. into an asynchronous algorithm that executes in a kernel thread.
  183. config CRYPTO_AUTHENC
  184. tristate "Authenc support"
  185. select CRYPTO_AEAD
  186. select CRYPTO_SKCIPHER
  187. select CRYPTO_MANAGER
  188. select CRYPTO_HASH
  189. select CRYPTO_NULL
  190. help
  191. Authenc: Combined mode wrapper for IPsec.
  192. This is required for IPSec.
  193. config CRYPTO_TEST
  194. tristate "Testing module"
  195. depends on m
  196. select CRYPTO_MANAGER
  197. help
  198. Quick & dirty crypto test module.
  199. config CRYPTO_SIMD
  200. tristate
  201. select CRYPTO_CRYPTD
  202. config CRYPTO_GLUE_HELPER_X86
  203. tristate
  204. depends on X86
  205. select CRYPTO_SKCIPHER
  206. config CRYPTO_ENGINE
  207. tristate
  208. default y
  209. comment "Public-key cryptography"
  210. config CRYPTO_RSA
  211. tristate "RSA algorithm"
  212. select CRYPTO_AKCIPHER
  213. select CRYPTO_MANAGER
  214. select MPILIB
  215. select ASN1
  216. help
  217. Generic implementation of the RSA public key algorithm.
  218. config CRYPTO_DH
  219. tristate "Diffie-Hellman algorithm"
  220. select CRYPTO_KPP
  221. select MPILIB
  222. help
  223. Generic implementation of the Diffie-Hellman algorithm.
  224. config CRYPTO_ECC
  225. tristate
  226. select CRYPTO_RNG_DEFAULT
  227. config CRYPTO_ECDH
  228. tristate "ECDH algorithm"
  229. select CRYPTO_ECC
  230. select CRYPTO_KPP
  231. help
  232. Generic implementation of the ECDH algorithm
  233. config CRYPTO_ECRDSA
  234. tristate "EC-RDSA (GOST 34.10) algorithm"
  235. select CRYPTO_ECC
  236. select CRYPTO_AKCIPHER
  237. select CRYPTO_STREEBOG
  238. select OID_REGISTRY
  239. select ASN1
  240. help
  241. Elliptic Curve Russian Digital Signature Algorithm (GOST R 34.10-2012,
  242. RFC 7091, ISO/IEC 14888-3:2018) is one of the Russian cryptographic
  243. standard algorithms (called GOST algorithms). Only signature verification
  244. is implemented.
  245. config CRYPTO_SM2
  246. tristate "SM2 algorithm"
  247. select CRYPTO_SM3
  248. select CRYPTO_AKCIPHER
  249. select CRYPTO_MANAGER
  250. select MPILIB
  251. select ASN1
  252. help
  253. Generic implementation of the SM2 public key algorithm. It was
  254. published by State Encryption Management Bureau, China.
  255. as specified by OSCCA GM/T 0003.1-2012 -- 0003.5-2012.
  256. References:
  257. https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02
  258. http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
  259. http://www.gmbz.org.cn/main/bzlb.html
  260. config CRYPTO_CURVE25519
  261. tristate "Curve25519 algorithm"
  262. select CRYPTO_KPP
  263. select CRYPTO_LIB_CURVE25519_GENERIC
  264. config CRYPTO_CURVE25519_X86
  265. tristate "x86_64 accelerated Curve25519 scalar multiplication library"
  266. depends on X86 && 64BIT
  267. select CRYPTO_LIB_CURVE25519_GENERIC
  268. select CRYPTO_ARCH_HAVE_LIB_CURVE25519
  269. comment "Authenticated Encryption with Associated Data"
  270. config CRYPTO_CCM
  271. tristate "CCM support"
  272. select CRYPTO_CTR
  273. select CRYPTO_HASH
  274. select CRYPTO_AEAD
  275. select CRYPTO_MANAGER
  276. help
  277. Support for Counter with CBC MAC. Required for IPsec.
  278. config CRYPTO_GCM
  279. tristate "GCM/GMAC support"
  280. select CRYPTO_CTR
  281. select CRYPTO_AEAD
  282. select CRYPTO_GHASH
  283. select CRYPTO_NULL
  284. select CRYPTO_MANAGER
  285. help
  286. Support for Galois/Counter Mode (GCM) and Galois Message
  287. Authentication Code (GMAC). Required for IPSec.
  288. config CRYPTO_CHACHA20POLY1305
  289. tristate "ChaCha20-Poly1305 AEAD support"
  290. select CRYPTO_CHACHA20
  291. select CRYPTO_POLY1305
  292. select CRYPTO_AEAD
  293. select CRYPTO_MANAGER
  294. help
  295. ChaCha20-Poly1305 AEAD support, RFC7539.
  296. Support for the AEAD wrapper using the ChaCha20 stream cipher combined
  297. with the Poly1305 authenticator. It is defined in RFC7539 for use in
  298. IETF protocols.
  299. config CRYPTO_AEGIS128
  300. tristate "AEGIS-128 AEAD algorithm"
  301. select CRYPTO_AEAD
  302. select CRYPTO_AES # for AES S-box tables
  303. help
  304. Support for the AEGIS-128 dedicated AEAD algorithm.
  305. config CRYPTO_AEGIS128_SIMD
  306. bool "Support SIMD acceleration for AEGIS-128"
  307. depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
  308. default y
  309. config CRYPTO_AEGIS128_AESNI_SSE2
  310. tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
  311. depends on X86 && 64BIT
  312. select CRYPTO_AEAD
  313. select CRYPTO_SIMD
  314. help
  315. AESNI+SSE2 implementation of the AEGIS-128 dedicated AEAD algorithm.
  316. config CRYPTO_SEQIV
  317. tristate "Sequence Number IV Generator"
  318. select CRYPTO_AEAD
  319. select CRYPTO_SKCIPHER
  320. select CRYPTO_NULL
  321. select CRYPTO_RNG_DEFAULT
  322. select CRYPTO_MANAGER
  323. help
  324. This IV generator generates an IV based on a sequence number by
  325. xoring it with a salt. This algorithm is mainly useful for CTR
  326. config CRYPTO_ECHAINIV
  327. tristate "Encrypted Chain IV Generator"
  328. select CRYPTO_AEAD
  329. select CRYPTO_NULL
  330. select CRYPTO_RNG_DEFAULT
  331. select CRYPTO_MANAGER
  332. help
  333. This IV generator generates an IV based on the encryption of
  334. a sequence number xored with a salt. This is the default
  335. algorithm for CBC.
  336. comment "Block modes"
  337. config CRYPTO_CBC
  338. tristate "CBC support"
  339. select CRYPTO_SKCIPHER
  340. select CRYPTO_MANAGER
  341. help
  342. CBC: Cipher Block Chaining mode
  343. This block cipher algorithm is required for IPSec.
  344. config CRYPTO_CFB
  345. tristate "CFB support"
  346. select CRYPTO_SKCIPHER
  347. select CRYPTO_MANAGER
  348. help
  349. CFB: Cipher FeedBack mode
  350. This block cipher algorithm is required for TPM2 Cryptography.
  351. config CRYPTO_CTR
  352. tristate "CTR support"
  353. select CRYPTO_SKCIPHER
  354. select CRYPTO_MANAGER
  355. help
  356. CTR: Counter mode
  357. This block cipher algorithm is required for IPSec.
  358. config CRYPTO_CTS
  359. tristate "CTS support"
  360. select CRYPTO_SKCIPHER
  361. select CRYPTO_MANAGER
  362. help
  363. CTS: Cipher Text Stealing
  364. This is the Cipher Text Stealing mode as described by
  365. Section 8 of rfc2040 and referenced by rfc3962
  366. (rfc3962 includes errata information in its Appendix A) or
  367. CBC-CS3 as defined by NIST in Sp800-38A addendum from Oct 2010.
  368. This mode is required for Kerberos gss mechanism support
  369. for AES encryption.
  370. See: https://csrc.nist.gov/publications/detail/sp/800-38a/addendum/final
  371. config CRYPTO_ECB
  372. tristate "ECB support"
  373. select CRYPTO_SKCIPHER
  374. select CRYPTO_MANAGER
  375. help
  376. ECB: Electronic CodeBook mode
  377. This is the simplest block cipher algorithm. It simply encrypts
  378. the input block by block.
  379. config CRYPTO_LRW
  380. tristate "LRW support"
  381. select CRYPTO_SKCIPHER
  382. select CRYPTO_MANAGER
  383. select CRYPTO_GF128MUL
  384. help
  385. LRW: Liskov Rivest Wagner, a tweakable, non malleable, non movable
  386. narrow block cipher mode for dm-crypt. Use it with cipher
  387. specification string aes-lrw-benbi, the key must be 256, 320 or 384.
  388. The first 128, 192 or 256 bits in the key are used for AES and the
  389. rest is used to tie each cipher block to its logical position.
  390. config CRYPTO_OFB
  391. tristate "OFB support"
  392. select CRYPTO_SKCIPHER
  393. select CRYPTO_MANAGER
  394. help
  395. OFB: the Output Feedback mode makes a block cipher into a synchronous
  396. stream cipher. It generates keystream blocks, which are then XORed
  397. with the plaintext blocks to get the ciphertext. Flipping a bit in the
  398. ciphertext produces a flipped bit in the plaintext at the same
  399. location. This property allows many error correcting codes to function
  400. normally even when applied before encryption.
  401. config CRYPTO_PCBC
  402. tristate "PCBC support"
  403. select CRYPTO_SKCIPHER
  404. select CRYPTO_MANAGER
  405. help
  406. PCBC: Propagating Cipher Block Chaining mode
  407. This block cipher algorithm is required for RxRPC.
  408. config CRYPTO_XTS
  409. tristate "XTS support"
  410. select CRYPTO_SKCIPHER
  411. select CRYPTO_MANAGER
  412. select CRYPTO_ECB
  413. help
  414. XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
  415. key size 256, 384 or 512 bits. This implementation currently
  416. can't handle a sectorsize which is not a multiple of 16 bytes.
  417. config CRYPTO_KEYWRAP
  418. tristate "Key wrapping support"
  419. select CRYPTO_SKCIPHER
  420. select CRYPTO_MANAGER
  421. help
  422. Support for key wrapping (NIST SP800-38F / RFC3394) without
  423. padding.
  424. config CRYPTO_NHPOLY1305
  425. tristate
  426. select CRYPTO_HASH
  427. select CRYPTO_LIB_POLY1305_GENERIC
  428. config CRYPTO_NHPOLY1305_SSE2
  429. tristate "NHPoly1305 hash function (x86_64 SSE2 implementation)"
  430. depends on X86 && 64BIT
  431. select CRYPTO_NHPOLY1305
  432. help
  433. SSE2 optimized implementation of the hash function used by the
  434. Adiantum encryption mode.
  435. config CRYPTO_NHPOLY1305_AVX2
  436. tristate "NHPoly1305 hash function (x86_64 AVX2 implementation)"
  437. depends on X86 && 64BIT
  438. select CRYPTO_NHPOLY1305
  439. help
  440. AVX2 optimized implementation of the hash function used by the
  441. Adiantum encryption mode.
  442. config CRYPTO_ADIANTUM
  443. tristate "Adiantum support"
  444. select CRYPTO_CHACHA20
  445. select CRYPTO_LIB_POLY1305_GENERIC
  446. select CRYPTO_NHPOLY1305
  447. select CRYPTO_MANAGER
  448. help
  449. Adiantum is a tweakable, length-preserving encryption mode
  450. designed for fast and secure disk encryption, especially on
  451. CPUs without dedicated crypto instructions. It encrypts
  452. each sector using the XChaCha12 stream cipher, two passes of
  453. an ε-almost-∆-universal hash function, and an invocation of
  454. the AES-256 block cipher on a single 16-byte block. On CPUs
  455. without AES instructions, Adiantum is much faster than
  456. AES-XTS.
  457. Adiantum's security is provably reducible to that of its
  458. underlying stream and block ciphers, subject to a security
  459. bound. Unlike XTS, Adiantum is a true wide-block encryption
  460. mode, so it actually provides an even stronger notion of
  461. security than XTS, subject to the security bound.
  462. If unsure, say N.
  463. config CRYPTO_ESSIV
  464. tristate "ESSIV support for block encryption"
  465. select CRYPTO_AUTHENC
  466. help
  467. Encrypted salt-sector initialization vector (ESSIV) is an IV
  468. generation method that is used in some cases by fscrypt and/or
  469. dm-crypt. It uses the hash of the block encryption key as the
  470. symmetric key for a block encryption pass applied to the input
  471. IV, making low entropy IV sources more suitable for block
  472. encryption.
  473. This driver implements a crypto API template that can be
  474. instantiated either as an skcipher or as an AEAD (depending on the
  475. type of the first template argument), and which defers encryption
  476. and decryption requests to the encapsulated cipher after applying
  477. ESSIV to the input IV. Note that in the AEAD case, it is assumed
  478. that the keys are presented in the same format used by the authenc
  479. template, and that the IV appears at the end of the authenticated
  480. associated data (AAD) region (which is how dm-crypt uses it.)
  481. Note that the use of ESSIV is not recommended for new deployments,
  482. and so this only needs to be enabled when interoperability with
  483. existing encrypted volumes of filesystems is required, or when
  484. building for a particular system that requires it (e.g., when
  485. the SoC in question has accelerated CBC but not XTS, making CBC
  486. combined with ESSIV the only feasible mode for h/w accelerated
  487. block encryption)
  488. comment "Hash modes"
  489. config CRYPTO_CMAC
  490. tristate "CMAC support"
  491. select CRYPTO_HASH
  492. select CRYPTO_MANAGER
  493. help
  494. Cipher-based Message Authentication Code (CMAC) specified by
  495. The National Institute of Standards and Technology (NIST).
  496. https://tools.ietf.org/html/rfc4493
  497. http://csrc.nist.gov/publications/nistpubs/800-38B/SP_800-38B.pdf
  498. config CRYPTO_HMAC
  499. tristate "HMAC support"
  500. select CRYPTO_HASH
  501. select CRYPTO_MANAGER
  502. help
  503. HMAC: Keyed-Hashing for Message Authentication (RFC2104).
  504. This is required for IPSec.
  505. config CRYPTO_XCBC
  506. tristate "XCBC support"
  507. select CRYPTO_HASH
  508. select CRYPTO_MANAGER
  509. help
  510. XCBC: Keyed-Hashing with encryption algorithm
  511. https://www.ietf.org/rfc/rfc3566.txt
  512. http://csrc.nist.gov/encryption/modes/proposedmodes/
  513. xcbc-mac/xcbc-mac-spec.pdf
  514. config CRYPTO_VMAC
  515. tristate "VMAC support"
  516. select CRYPTO_HASH
  517. select CRYPTO_MANAGER
  518. help
  519. VMAC is a message authentication algorithm designed for
  520. very high speed on 64-bit architectures.
  521. See also:
  522. <https://fastcrypto.org/vmac>
  523. comment "Digest"
  524. config CRYPTO_CRC32C
  525. tristate "CRC32c CRC algorithm"
  526. select CRYPTO_HASH
  527. select CRC32
  528. help
  529. Castagnoli, et al Cyclic Redundancy-Check Algorithm. Used
  530. by iSCSI for header and data digests and by others.
  531. See Castagnoli93. Module will be crc32c.
  532. config CRYPTO_CRC32C_INTEL
  533. tristate "CRC32c INTEL hardware acceleration"
  534. depends on X86
  535. select CRYPTO_HASH
  536. help
  537. In Intel processor with SSE4.2 supported, the processor will
  538. support CRC32C implementation using hardware accelerated CRC32
  539. instruction. This option will create 'crc32c-intel' module,
  540. which will enable any routine to use the CRC32 instruction to
  541. gain performance compared with software implementation.
  542. Module will be crc32c-intel.
  543. config CRYPTO_CRC32C_VPMSUM
  544. tristate "CRC32c CRC algorithm (powerpc64)"
  545. depends on PPC64 && ALTIVEC
  546. select CRYPTO_HASH
  547. select CRC32
  548. help
  549. CRC32c algorithm implemented using vector polynomial multiply-sum
  550. (vpmsum) instructions, introduced in POWER8. Enable on POWER8
  551. and newer processors for improved performance.
  552. config CRYPTO_CRC32C_SPARC64
  553. tristate "CRC32c CRC algorithm (SPARC64)"
  554. depends on SPARC64
  555. select CRYPTO_HASH
  556. select CRC32
  557. help
  558. CRC32c CRC algorithm implemented using sparc64 crypto instructions,
  559. when available.
  560. config CRYPTO_CRC32
  561. tristate "CRC32 CRC algorithm"
  562. select CRYPTO_HASH
  563. select CRC32
  564. help
  565. CRC-32-IEEE 802.3 cyclic redundancy-check algorithm.
  566. Shash crypto api wrappers to crc32_le function.
  567. config CRYPTO_CRC32_PCLMUL
  568. tristate "CRC32 PCLMULQDQ hardware acceleration"
  569. depends on X86
  570. select CRYPTO_HASH
  571. select CRC32
  572. help
  573. From Intel Westmere and AMD Bulldozer processor with SSE4.2
  574. and PCLMULQDQ supported, the processor will support
  575. CRC32 PCLMULQDQ implementation using hardware accelerated PCLMULQDQ
  576. instruction. This option will create 'crc32-pclmul' module,
  577. which will enable any routine to use the CRC-32-IEEE 802.3 checksum
  578. and gain better performance as compared with the table implementation.
  579. config CRYPTO_CRC32_MIPS
  580. tristate "CRC32c and CRC32 CRC algorithm (MIPS)"
  581. depends on MIPS_CRC_SUPPORT
  582. select CRYPTO_HASH
  583. help
  584. CRC32c and CRC32 CRC algorithms implemented using mips crypto
  585. instructions, when available.
  586. config CRYPTO_XXHASH
  587. tristate "xxHash hash algorithm"
  588. select CRYPTO_HASH
  589. select XXHASH
  590. help
  591. xxHash non-cryptographic hash algorithm. Extremely fast, working at
  592. speeds close to RAM limits.
  593. config CRYPTO_BLAKE2B
  594. tristate "BLAKE2b digest algorithm"
  595. select CRYPTO_HASH
  596. help
  597. Implementation of cryptographic hash function BLAKE2b (or just BLAKE2),
  598. optimized for 64bit platforms and can produce digests of any size
  599. between 1 to 64. The keyed hash is also implemented.
  600. This module provides the following algorithms:
  601. - blake2b-160
  602. - blake2b-256
  603. - blake2b-384
  604. - blake2b-512
  605. See https://blake2.net for further information.
  606. config CRYPTO_BLAKE2S
  607. tristate "BLAKE2s digest algorithm"
  608. select CRYPTO_LIB_BLAKE2S_GENERIC
  609. select CRYPTO_HASH
  610. help
  611. Implementation of cryptographic hash function BLAKE2s
  612. optimized for 8-32bit platforms and can produce digests of any size
  613. between 1 to 32. The keyed hash is also implemented.
  614. This module provides the following algorithms:
  615. - blake2s-128
  616. - blake2s-160
  617. - blake2s-224
  618. - blake2s-256
  619. See https://blake2.net for further information.
  620. config CRYPTO_BLAKE2S_X86
  621. tristate "BLAKE2s digest algorithm (x86 accelerated version)"
  622. depends on X86 && 64BIT
  623. select CRYPTO_LIB_BLAKE2S_GENERIC
  624. select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
  625. config CRYPTO_CRCT10DIF
  626. tristate "CRCT10DIF algorithm"
  627. select CRYPTO_HASH
  628. help
  629. CRC T10 Data Integrity Field computation is being cast as
  630. a crypto transform. This allows for faster crc t10 diff
  631. transforms to be used if they are available.
  632. config CRYPTO_CRCT10DIF_PCLMUL
  633. tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
  634. depends on X86 && 64BIT && CRC_T10DIF
  635. select CRYPTO_HASH
  636. help
  637. For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
  638. CRC T10 DIF PCLMULQDQ computation can be hardware
  639. accelerated PCLMULQDQ instruction. This option will create
  640. 'crct10dif-pclmul' module, which is faster when computing the
  641. crct10dif checksum as compared with the generic table implementation.
  642. config CRYPTO_CRCT10DIF_VPMSUM
  643. tristate "CRC32T10DIF powerpc64 hardware acceleration"
  644. depends on PPC64 && ALTIVEC && CRC_T10DIF
  645. select CRYPTO_HASH
  646. help
  647. CRC10T10DIF algorithm implemented using vector polynomial
  648. multiply-sum (vpmsum) instructions, introduced in POWER8. Enable on
  649. POWER8 and newer processors for improved performance.
  650. config CRYPTO_VPMSUM_TESTER
  651. tristate "Powerpc64 vpmsum hardware acceleration tester"
  652. depends on CRYPTO_CRCT10DIF_VPMSUM && CRYPTO_CRC32C_VPMSUM
  653. help
  654. Stress test for CRC32c and CRC-T10DIF algorithms implemented with
  655. POWER8 vpmsum instructions.
  656. Unless you are testing these algorithms, you don't need this.
  657. config CRYPTO_GHASH
  658. tristate "GHASH hash function"
  659. select CRYPTO_GF128MUL
  660. select CRYPTO_HASH
  661. help
  662. GHASH is the hash function used in GCM (Galois/Counter Mode).
  663. It is not a general-purpose cryptographic hash function.
  664. config CRYPTO_POLY1305
  665. tristate "Poly1305 authenticator algorithm"
  666. select CRYPTO_HASH
  667. select CRYPTO_LIB_POLY1305_GENERIC
  668. help
  669. Poly1305 authenticator algorithm, RFC7539.
  670. Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
  671. It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
  672. in IETF protocols. This is the portable C implementation of Poly1305.
  673. config CRYPTO_POLY1305_X86_64
  674. tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
  675. depends on X86 && 64BIT
  676. select CRYPTO_LIB_POLY1305_GENERIC
  677. select CRYPTO_ARCH_HAVE_LIB_POLY1305
  678. help
  679. Poly1305 authenticator algorithm, RFC7539.
  680. Poly1305 is an authenticator algorithm designed by Daniel J. Bernstein.
  681. It is used for the ChaCha20-Poly1305 AEAD, specified in RFC7539 for use
  682. in IETF protocols. This is the x86_64 assembler implementation using SIMD
  683. instructions.
  684. config CRYPTO_POLY1305_MIPS
  685. tristate "Poly1305 authenticator algorithm (MIPS optimized)"
  686. depends on MIPS
  687. select CRYPTO_ARCH_HAVE_LIB_POLY1305
  688. config CRYPTO_MD4
  689. tristate "MD4 digest algorithm"
  690. select CRYPTO_HASH
  691. help
  692. MD4 message digest algorithm (RFC1320).
  693. config CRYPTO_MD5
  694. tristate "MD5 digest algorithm"
  695. select CRYPTO_HASH
  696. help
  697. MD5 message digest algorithm (RFC1321).
  698. config CRYPTO_MD5_OCTEON
  699. tristate "MD5 digest algorithm (OCTEON)"
  700. depends on CPU_CAVIUM_OCTEON
  701. select CRYPTO_MD5
  702. select CRYPTO_HASH
  703. help
  704. MD5 message digest algorithm (RFC1321) implemented
  705. using OCTEON crypto instructions, when available.
  706. config CRYPTO_MD5_PPC
  707. tristate "MD5 digest algorithm (PPC)"
  708. depends on PPC
  709. select CRYPTO_HASH
  710. help
  711. MD5 message digest algorithm (RFC1321) implemented
  712. in PPC assembler.
  713. config CRYPTO_MD5_SPARC64
  714. tristate "MD5 digest algorithm (SPARC64)"
  715. depends on SPARC64
  716. select CRYPTO_MD5
  717. select CRYPTO_HASH
  718. help
  719. MD5 message digest algorithm (RFC1321) implemented
  720. using sparc64 crypto instructions, when available.
  721. config CRYPTO_MICHAEL_MIC
  722. tristate "Michael MIC keyed digest algorithm"
  723. select CRYPTO_HASH
  724. help
  725. Michael MIC is used for message integrity protection in TKIP
  726. (IEEE 802.11i). This algorithm is required for TKIP, but it
  727. should not be used for other purposes because of the weakness
  728. of the algorithm.
  729. config CRYPTO_RMD128
  730. tristate "RIPEMD-128 digest algorithm"
  731. select CRYPTO_HASH
  732. help
  733. RIPEMD-128 (ISO/IEC 10118-3:2004).
  734. RIPEMD-128 is a 128-bit cryptographic hash function. It should only
  735. be used as a secure replacement for RIPEMD. For other use cases,
  736. RIPEMD-160 should be used.
  737. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  738. See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  739. config CRYPTO_RMD160
  740. tristate "RIPEMD-160 digest algorithm"
  741. select CRYPTO_HASH
  742. help
  743. RIPEMD-160 (ISO/IEC 10118-3:2004).
  744. RIPEMD-160 is a 160-bit cryptographic hash function. It is intended
  745. to be used as a secure replacement for the 128-bit hash functions
  746. MD4, MD5 and it's predecessor RIPEMD
  747. (not to be confused with RIPEMD-128).
  748. It's speed is comparable to SHA1 and there are no known attacks
  749. against RIPEMD-160.
  750. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  751. See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  752. config CRYPTO_RMD256
  753. tristate "RIPEMD-256 digest algorithm"
  754. select CRYPTO_HASH
  755. help
  756. RIPEMD-256 is an optional extension of RIPEMD-128 with a
  757. 256 bit hash. It is intended for applications that require
  758. longer hash-results, without needing a larger security level
  759. (than RIPEMD-128).
  760. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  761. See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  762. config CRYPTO_RMD320
  763. tristate "RIPEMD-320 digest algorithm"
  764. select CRYPTO_HASH
  765. help
  766. RIPEMD-320 is an optional extension of RIPEMD-160 with a
  767. 320 bit hash. It is intended for applications that require
  768. longer hash-results, without needing a larger security level
  769. (than RIPEMD-160).
  770. Developed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
  771. See <https://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
  772. config CRYPTO_SHA1
  773. tristate "SHA1 digest algorithm"
  774. select CRYPTO_HASH
  775. help
  776. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
  777. config CRYPTO_SHA1_SSSE3
  778. tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
  779. depends on X86 && 64BIT
  780. select CRYPTO_SHA1
  781. select CRYPTO_HASH
  782. help
  783. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  784. using Supplemental SSE3 (SSSE3) instructions or Advanced Vector
  785. Extensions (AVX/AVX2) or SHA-NI(SHA Extensions New Instructions),
  786. when available.
  787. config CRYPTO_SHA256_SSSE3
  788. tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
  789. depends on X86 && 64BIT
  790. select CRYPTO_SHA256
  791. select CRYPTO_HASH
  792. help
  793. SHA-256 secure hash standard (DFIPS 180-2) implemented
  794. using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
  795. Extensions version 1 (AVX1), or Advanced Vector Extensions
  796. version 2 (AVX2) instructions, or SHA-NI (SHA Extensions New
  797. Instructions) when available.
  798. config CRYPTO_SHA512_SSSE3
  799. tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
  800. depends on X86 && 64BIT
  801. select CRYPTO_SHA512
  802. select CRYPTO_HASH
  803. help
  804. SHA-512 secure hash standard (DFIPS 180-2) implemented
  805. using Supplemental SSE3 (SSSE3) instructions, or Advanced Vector
  806. Extensions version 1 (AVX1), or Advanced Vector Extensions
  807. version 2 (AVX2) instructions, when available.
  808. config CRYPTO_SHA1_OCTEON
  809. tristate "SHA1 digest algorithm (OCTEON)"
  810. depends on CPU_CAVIUM_OCTEON
  811. select CRYPTO_SHA1
  812. select CRYPTO_HASH
  813. help
  814. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  815. using OCTEON crypto instructions, when available.
  816. config CRYPTO_SHA1_SPARC64
  817. tristate "SHA1 digest algorithm (SPARC64)"
  818. depends on SPARC64
  819. select CRYPTO_SHA1
  820. select CRYPTO_HASH
  821. help
  822. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2) implemented
  823. using sparc64 crypto instructions, when available.
  824. config CRYPTO_SHA1_PPC
  825. tristate "SHA1 digest algorithm (powerpc)"
  826. depends on PPC
  827. help
  828. This is the powerpc hardware accelerated implementation of the
  829. SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
  830. config CRYPTO_SHA1_PPC_SPE
  831. tristate "SHA1 digest algorithm (PPC SPE)"
  832. depends on PPC && SPE
  833. help
  834. SHA-1 secure hash standard (DFIPS 180-4) implemented
  835. using powerpc SPE SIMD instruction set.
  836. config CRYPTO_SHA256
  837. tristate "SHA224 and SHA256 digest algorithm"
  838. select CRYPTO_HASH
  839. select CRYPTO_LIB_SHA256
  840. help
  841. SHA256 secure hash standard (DFIPS 180-2).
  842. This version of SHA implements a 256 bit hash with 128 bits of
  843. security against collision attacks.
  844. This code also includes SHA-224, a 224 bit hash with 112 bits
  845. of security against collision attacks.
  846. config CRYPTO_SHA256_PPC_SPE
  847. tristate "SHA224 and SHA256 digest algorithm (PPC SPE)"
  848. depends on PPC && SPE
  849. select CRYPTO_SHA256
  850. select CRYPTO_HASH
  851. help
  852. SHA224 and SHA256 secure hash standard (DFIPS 180-2)
  853. implemented using powerpc SPE SIMD instruction set.
  854. config CRYPTO_SHA256_OCTEON
  855. tristate "SHA224 and SHA256 digest algorithm (OCTEON)"
  856. depends on CPU_CAVIUM_OCTEON
  857. select CRYPTO_SHA256
  858. select CRYPTO_HASH
  859. help
  860. SHA-256 secure hash standard (DFIPS 180-2) implemented
  861. using OCTEON crypto instructions, when available.
  862. config CRYPTO_SHA256_SPARC64
  863. tristate "SHA224 and SHA256 digest algorithm (SPARC64)"
  864. depends on SPARC64
  865. select CRYPTO_SHA256
  866. select CRYPTO_HASH
  867. help
  868. SHA-256 secure hash standard (DFIPS 180-2) implemented
  869. using sparc64 crypto instructions, when available.
  870. config CRYPTO_SHA512
  871. tristate "SHA384 and SHA512 digest algorithms"
  872. select CRYPTO_HASH
  873. help
  874. SHA512 secure hash standard (DFIPS 180-2).
  875. This version of SHA implements a 512 bit hash with 256 bits of
  876. security against collision attacks.
  877. This code also includes SHA-384, a 384 bit hash with 192 bits
  878. of security against collision attacks.
  879. config CRYPTO_SHA512_OCTEON
  880. tristate "SHA384 and SHA512 digest algorithms (OCTEON)"
  881. depends on CPU_CAVIUM_OCTEON
  882. select CRYPTO_SHA512
  883. select CRYPTO_HASH
  884. help
  885. SHA-512 secure hash standard (DFIPS 180-2) implemented
  886. using OCTEON crypto instructions, when available.
  887. config CRYPTO_SHA512_SPARC64
  888. tristate "SHA384 and SHA512 digest algorithm (SPARC64)"
  889. depends on SPARC64
  890. select CRYPTO_SHA512
  891. select CRYPTO_HASH
  892. help
  893. SHA-512 secure hash standard (DFIPS 180-2) implemented
  894. using sparc64 crypto instructions, when available.
  895. config CRYPTO_SHA3
  896. tristate "SHA3 digest algorithm"
  897. select CRYPTO_HASH
  898. help
  899. SHA-3 secure hash standard (DFIPS 202). It's based on
  900. cryptographic sponge function family called Keccak.
  901. References:
  902. http://keccak.noekeon.org/
  903. config CRYPTO_SM3
  904. tristate "SM3 digest algorithm"
  905. select CRYPTO_HASH
  906. help
  907. SM3 secure hash function as defined by OSCCA GM/T 0004-2012 SM3).
  908. It is part of the Chinese Commercial Cryptography suite.
  909. References:
  910. http://www.oscca.gov.cn/UpFile/20101222141857786.pdf
  911. https://datatracker.ietf.org/doc/html/draft-shen-sm3-hash
  912. config CRYPTO_STREEBOG
  913. tristate "Streebog Hash Function"
  914. select CRYPTO_HASH
  915. help
  916. Streebog Hash Function (GOST R 34.11-2012, RFC 6986) is one of the Russian
  917. cryptographic standard algorithms (called GOST algorithms).
  918. This setting enables two hash algorithms with 256 and 512 bits output.
  919. References:
  920. https://tc26.ru/upload/iblock/fed/feddbb4d26b685903faa2ba11aea43f6.pdf
  921. https://tools.ietf.org/html/rfc6986
  922. config CRYPTO_TGR192
  923. tristate "Tiger digest algorithms"
  924. select CRYPTO_HASH
  925. help
  926. Tiger hash algorithm 192, 160 and 128-bit hashes
  927. Tiger is a hash function optimized for 64-bit processors while
  928. still having decent performance on 32-bit processors.
  929. Tiger was developed by Ross Anderson and Eli Biham.
  930. See also:
  931. <https://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
  932. config CRYPTO_WP512
  933. tristate "Whirlpool digest algorithms"
  934. select CRYPTO_HASH
  935. help
  936. Whirlpool hash algorithm 512, 384 and 256-bit hashes
  937. Whirlpool-512 is part of the NESSIE cryptographic primitives.
  938. Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
  939. See also:
  940. <http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html>
  941. config CRYPTO_GHASH_CLMUL_NI_INTEL
  942. tristate "GHASH hash function (CLMUL-NI accelerated)"
  943. depends on X86 && 64BIT
  944. select CRYPTO_CRYPTD
  945. help
  946. This is the x86_64 CLMUL-NI accelerated implementation of
  947. GHASH, the hash function used in GCM (Galois/Counter mode).
  948. comment "Ciphers"
  949. config CRYPTO_AES
  950. tristate "AES cipher algorithms"
  951. select CRYPTO_ALGAPI
  952. select CRYPTO_LIB_AES
  953. help
  954. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  955. algorithm.
  956. Rijndael appears to be consistently a very good performer in
  957. both hardware and software across a wide range of computing
  958. environments regardless of its use in feedback or non-feedback
  959. modes. Its key setup time is excellent, and its key agility is
  960. good. Rijndael's very low memory requirements make it very well
  961. suited for restricted-space environments, in which it also
  962. demonstrates excellent performance. Rijndael's operations are
  963. among the easiest to defend against power and timing attacks.
  964. The AES specifies three key sizes: 128, 192 and 256 bits
  965. See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
  966. config CRYPTO_AES_TI
  967. tristate "Fixed time AES cipher"
  968. select CRYPTO_ALGAPI
  969. select CRYPTO_LIB_AES
  970. help
  971. This is a generic implementation of AES that attempts to eliminate
  972. data dependent latencies as much as possible without affecting
  973. performance too much. It is intended for use by the generic CCM
  974. and GCM drivers, and other CTR or CMAC/XCBC based modes that rely
  975. solely on encryption (although decryption is supported as well, but
  976. with a more dramatic performance hit)
  977. Instead of using 16 lookup tables of 1 KB each, (8 for encryption and
  978. 8 for decryption), this implementation only uses just two S-boxes of
  979. 256 bytes each, and attempts to eliminate data dependent latencies by
  980. prefetching the entire table into the cache at the start of each
  981. block. Interrupts are also disabled to avoid races where cachelines
  982. are evicted when the CPU is interrupted to do something else.
  983. config CRYPTO_AES_NI_INTEL
  984. tristate "AES cipher algorithms (AES-NI)"
  985. depends on X86
  986. select CRYPTO_AEAD
  987. select CRYPTO_LIB_AES
  988. select CRYPTO_ALGAPI
  989. select CRYPTO_SKCIPHER
  990. select CRYPTO_GLUE_HELPER_X86 if 64BIT
  991. select CRYPTO_SIMD
  992. help
  993. Use Intel AES-NI instructions for AES algorithm.
  994. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  995. algorithm.
  996. Rijndael appears to be consistently a very good performer in
  997. both hardware and software across a wide range of computing
  998. environments regardless of its use in feedback or non-feedback
  999. modes. Its key setup time is excellent, and its key agility is
  1000. good. Rijndael's very low memory requirements make it very well
  1001. suited for restricted-space environments, in which it also
  1002. demonstrates excellent performance. Rijndael's operations are
  1003. among the easiest to defend against power and timing attacks.
  1004. The AES specifies three key sizes: 128, 192 and 256 bits
  1005. See <http://csrc.nist.gov/encryption/aes/> for more information.
  1006. In addition to AES cipher algorithm support, the acceleration
  1007. for some popular block cipher mode is supported too, including
  1008. ECB, CBC, LRW, XTS. The 64 bit version has additional
  1009. acceleration for CTR.
  1010. config CRYPTO_AES_SPARC64
  1011. tristate "AES cipher algorithms (SPARC64)"
  1012. depends on SPARC64
  1013. select CRYPTO_SKCIPHER
  1014. help
  1015. Use SPARC64 crypto opcodes for AES algorithm.
  1016. AES cipher algorithms (FIPS-197). AES uses the Rijndael
  1017. algorithm.
  1018. Rijndael appears to be consistently a very good performer in
  1019. both hardware and software across a wide range of computing
  1020. environments regardless of its use in feedback or non-feedback
  1021. modes. Its key setup time is excellent, and its key agility is
  1022. good. Rijndael's very low memory requirements make it very well
  1023. suited for restricted-space environments, in which it also
  1024. demonstrates excellent performance. Rijndael's operations are
  1025. among the easiest to defend against power and timing attacks.
  1026. The AES specifies three key sizes: 128, 192 and 256 bits
  1027. See <http://csrc.nist.gov/encryption/aes/> for more information.
  1028. In addition to AES cipher algorithm support, the acceleration
  1029. for some popular block cipher mode is supported too, including
  1030. ECB and CBC.
  1031. config CRYPTO_AES_PPC_SPE
  1032. tristate "AES cipher algorithms (PPC SPE)"
  1033. depends on PPC && SPE
  1034. select CRYPTO_SKCIPHER
  1035. help
  1036. AES cipher algorithms (FIPS-197). Additionally the acceleration
  1037. for popular block cipher modes ECB, CBC, CTR and XTS is supported.
  1038. This module should only be used for low power (router) devices
  1039. without hardware AES acceleration (e.g. caam crypto). It reduces the
  1040. size of the AES tables from 16KB to 8KB + 256 bytes and mitigates
  1041. timining attacks. Nevertheless it might be not as secure as other
  1042. architecture specific assembler implementations that work on 1KB
  1043. tables or 256 bytes S-boxes.
  1044. config CRYPTO_ANUBIS
  1045. tristate "Anubis cipher algorithm"
  1046. depends on CRYPTO_USER_API_ENABLE_OBSOLETE
  1047. select CRYPTO_ALGAPI
  1048. help
  1049. Anubis cipher algorithm.
  1050. Anubis is a variable key length cipher which can use keys from
  1051. 128 bits to 320 bits in length. It was evaluated as a entrant
  1052. in the NESSIE competition.
  1053. See also:
  1054. <https://www.cosic.esat.kuleuven.be/nessie/reports/>
  1055. <http://www.larc.usp.br/~pbarreto/AnubisPage.html>
  1056. config CRYPTO_ARC4
  1057. tristate "ARC4 cipher algorithm"
  1058. depends on CRYPTO_USER_API_ENABLE_OBSOLETE
  1059. select CRYPTO_SKCIPHER
  1060. select CRYPTO_LIB_ARC4
  1061. help
  1062. ARC4 cipher algorithm.
  1063. ARC4 is a stream cipher using keys ranging from 8 bits to 2048
  1064. bits in length. This algorithm is required for driver-based
  1065. WEP, but it should not be for other purposes because of the
  1066. weakness of the algorithm.
  1067. config CRYPTO_BLOWFISH
  1068. tristate "Blowfish cipher algorithm"
  1069. select CRYPTO_ALGAPI
  1070. select CRYPTO_BLOWFISH_COMMON
  1071. help
  1072. Blowfish cipher algorithm, by Bruce Schneier.
  1073. This is a variable key length cipher which can use keys from 32
  1074. bits to 448 bits in length. It's fast, simple and specifically
  1075. designed for use on "large microprocessors".
  1076. See also:
  1077. <https://www.schneier.com/blowfish.html>
  1078. config CRYPTO_BLOWFISH_COMMON
  1079. tristate
  1080. help
  1081. Common parts of the Blowfish cipher algorithm shared by the
  1082. generic c and the assembler implementations.
  1083. See also:
  1084. <https://www.schneier.com/blowfish.html>
  1085. config CRYPTO_BLOWFISH_X86_64
  1086. tristate "Blowfish cipher algorithm (x86_64)"
  1087. depends on X86 && 64BIT
  1088. select CRYPTO_SKCIPHER
  1089. select CRYPTO_BLOWFISH_COMMON
  1090. help
  1091. Blowfish cipher algorithm (x86_64), by Bruce Schneier.
  1092. This is a variable key length cipher which can use keys from 32
  1093. bits to 448 bits in length. It's fast, simple and specifically
  1094. designed for use on "large microprocessors".
  1095. See also:
  1096. <https://www.schneier.com/blowfish.html>
  1097. config CRYPTO_CAMELLIA
  1098. tristate "Camellia cipher algorithms"
  1099. depends on CRYPTO
  1100. select CRYPTO_ALGAPI
  1101. help
  1102. Camellia cipher algorithms module.
  1103. Camellia is a symmetric key block cipher developed jointly
  1104. at NTT and Mitsubishi Electric Corporation.
  1105. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  1106. See also:
  1107. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  1108. config CRYPTO_CAMELLIA_X86_64
  1109. tristate "Camellia cipher algorithm (x86_64)"
  1110. depends on X86 && 64BIT
  1111. depends on CRYPTO
  1112. select CRYPTO_SKCIPHER
  1113. select CRYPTO_GLUE_HELPER_X86
  1114. help
  1115. Camellia cipher algorithm module (x86_64).
  1116. Camellia is a symmetric key block cipher developed jointly
  1117. at NTT and Mitsubishi Electric Corporation.
  1118. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  1119. See also:
  1120. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  1121. config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
  1122. tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
  1123. depends on X86 && 64BIT
  1124. depends on CRYPTO
  1125. select CRYPTO_SKCIPHER
  1126. select CRYPTO_CAMELLIA_X86_64
  1127. select CRYPTO_GLUE_HELPER_X86
  1128. select CRYPTO_SIMD
  1129. select CRYPTO_XTS
  1130. help
  1131. Camellia cipher algorithm module (x86_64/AES-NI/AVX).
  1132. Camellia is a symmetric key block cipher developed jointly
  1133. at NTT and Mitsubishi Electric Corporation.
  1134. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  1135. See also:
  1136. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  1137. config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
  1138. tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
  1139. depends on X86 && 64BIT
  1140. depends on CRYPTO
  1141. select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
  1142. help
  1143. Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
  1144. Camellia is a symmetric key block cipher developed jointly
  1145. at NTT and Mitsubishi Electric Corporation.
  1146. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  1147. See also:
  1148. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  1149. config CRYPTO_CAMELLIA_SPARC64
  1150. tristate "Camellia cipher algorithm (SPARC64)"
  1151. depends on SPARC64
  1152. depends on CRYPTO
  1153. select CRYPTO_ALGAPI
  1154. select CRYPTO_SKCIPHER
  1155. help
  1156. Camellia cipher algorithm module (SPARC64).
  1157. Camellia is a symmetric key block cipher developed jointly
  1158. at NTT and Mitsubishi Electric Corporation.
  1159. The Camellia specifies three key sizes: 128, 192 and 256 bits.
  1160. See also:
  1161. <https://info.isl.ntt.co.jp/crypt/eng/camellia/index_s.html>
  1162. config CRYPTO_CAST_COMMON
  1163. tristate
  1164. help
  1165. Common parts of the CAST cipher algorithms shared by the
  1166. generic c and the assembler implementations.
  1167. config CRYPTO_CAST5
  1168. tristate "CAST5 (CAST-128) cipher algorithm"
  1169. select CRYPTO_ALGAPI
  1170. select CRYPTO_CAST_COMMON
  1171. help
  1172. The CAST5 encryption algorithm (synonymous with CAST-128) is
  1173. described in RFC2144.
  1174. config CRYPTO_CAST5_AVX_X86_64
  1175. tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
  1176. depends on X86 && 64BIT
  1177. select CRYPTO_SKCIPHER
  1178. select CRYPTO_CAST5
  1179. select CRYPTO_CAST_COMMON
  1180. select CRYPTO_SIMD
  1181. help
  1182. The CAST5 encryption algorithm (synonymous with CAST-128) is
  1183. described in RFC2144.
  1184. This module provides the Cast5 cipher algorithm that processes
  1185. sixteen blocks parallel using the AVX instruction set.
  1186. config CRYPTO_CAST6
  1187. tristate "CAST6 (CAST-256) cipher algorithm"
  1188. select CRYPTO_ALGAPI
  1189. select CRYPTO_CAST_COMMON
  1190. help
  1191. The CAST6 encryption algorithm (synonymous with CAST-256) is
  1192. described in RFC2612.
  1193. config CRYPTO_CAST6_AVX_X86_64
  1194. tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
  1195. depends on X86 && 64BIT
  1196. select CRYPTO_SKCIPHER
  1197. select CRYPTO_CAST6
  1198. select CRYPTO_CAST_COMMON
  1199. select CRYPTO_GLUE_HELPER_X86
  1200. select CRYPTO_SIMD
  1201. select CRYPTO_XTS
  1202. help
  1203. The CAST6 encryption algorithm (synonymous with CAST-256) is
  1204. described in RFC2612.
  1205. This module provides the Cast6 cipher algorithm that processes
  1206. eight blocks parallel using the AVX instruction set.
  1207. config CRYPTO_DES
  1208. tristate "DES and Triple DES EDE cipher algorithms"
  1209. select CRYPTO_ALGAPI
  1210. select CRYPTO_LIB_DES
  1211. help
  1212. DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
  1213. config CRYPTO_DES_SPARC64
  1214. tristate "DES and Triple DES EDE cipher algorithms (SPARC64)"
  1215. depends on SPARC64
  1216. select CRYPTO_ALGAPI
  1217. select CRYPTO_LIB_DES
  1218. select CRYPTO_SKCIPHER
  1219. help
  1220. DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3),
  1221. optimized using SPARC64 crypto opcodes.
  1222. config CRYPTO_DES3_EDE_X86_64
  1223. tristate "Triple DES EDE cipher algorithm (x86-64)"
  1224. depends on X86 && 64BIT
  1225. select CRYPTO_SKCIPHER
  1226. select CRYPTO_LIB_DES
  1227. help
  1228. Triple DES EDE (FIPS 46-3) algorithm.
  1229. This module provides implementation of the Triple DES EDE cipher
  1230. algorithm that is optimized for x86-64 processors. Two versions of
  1231. algorithm are provided; regular processing one input block and
  1232. one that processes three blocks parallel.
  1233. config CRYPTO_FCRYPT
  1234. tristate "FCrypt cipher algorithm"
  1235. select CRYPTO_ALGAPI
  1236. select CRYPTO_SKCIPHER
  1237. help
  1238. FCrypt algorithm used by RxRPC.
  1239. config CRYPTO_KHAZAD
  1240. tristate "Khazad cipher algorithm"
  1241. depends on CRYPTO_USER_API_ENABLE_OBSOLETE
  1242. select CRYPTO_ALGAPI
  1243. help
  1244. Khazad cipher algorithm.
  1245. Khazad was a finalist in the initial NESSIE competition. It is
  1246. an algorithm optimized for 64-bit processors with good performance
  1247. on 32-bit processors. Khazad uses an 128 bit key size.
  1248. See also:
  1249. <http://www.larc.usp.br/~pbarreto/KhazadPage.html>
  1250. config CRYPTO_SALSA20
  1251. tristate "Salsa20 stream cipher algorithm"
  1252. select CRYPTO_SKCIPHER
  1253. help
  1254. Salsa20 stream cipher algorithm.
  1255. Salsa20 is a stream cipher submitted to eSTREAM, the ECRYPT
  1256. Stream Cipher Project. See <https://www.ecrypt.eu.org/stream/>
  1257. The Salsa20 stream cipher algorithm is designed by Daniel J.
  1258. Bernstein <djb@cr.yp.to>. See <https://cr.yp.to/snuffle.html>
  1259. config CRYPTO_CHACHA20
  1260. tristate "ChaCha stream cipher algorithms"
  1261. select CRYPTO_LIB_CHACHA_GENERIC
  1262. select CRYPTO_SKCIPHER
  1263. help
  1264. The ChaCha20, XChaCha20, and XChaCha12 stream cipher algorithms.
  1265. ChaCha20 is a 256-bit high-speed stream cipher designed by Daniel J.
  1266. Bernstein and further specified in RFC7539 for use in IETF protocols.
  1267. This is the portable C implementation of ChaCha20. See also:
  1268. <https://cr.yp.to/chacha/chacha-20080128.pdf>
  1269. XChaCha20 is the application of the XSalsa20 construction to ChaCha20
  1270. rather than to Salsa20. XChaCha20 extends ChaCha20's nonce length
  1271. from 64 bits (or 96 bits using the RFC7539 convention) to 192 bits,
  1272. while provably retaining ChaCha20's security. See also:
  1273. <https://cr.yp.to/snuffle/xsalsa-20081128.pdf>
  1274. XChaCha12 is XChaCha20 reduced to 12 rounds, with correspondingly
  1275. reduced security margin but increased performance. It can be needed
  1276. in some performance-sensitive scenarios.
  1277. config CRYPTO_CHACHA20_X86_64
  1278. tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
  1279. depends on X86 && 64BIT
  1280. select CRYPTO_SKCIPHER
  1281. select CRYPTO_LIB_CHACHA_GENERIC
  1282. select CRYPTO_ARCH_HAVE_LIB_CHACHA
  1283. help
  1284. SSSE3, AVX2, and AVX-512VL optimized implementations of the ChaCha20,
  1285. XChaCha20, and XChaCha12 stream ciphers.
  1286. config CRYPTO_CHACHA_MIPS
  1287. tristate "ChaCha stream cipher algorithms (MIPS 32r2 optimized)"
  1288. depends on CPU_MIPS32_R2
  1289. select CRYPTO_SKCIPHER
  1290. select CRYPTO_ARCH_HAVE_LIB_CHACHA
  1291. config CRYPTO_SEED
  1292. tristate "SEED cipher algorithm"
  1293. depends on CRYPTO_USER_API_ENABLE_OBSOLETE
  1294. select CRYPTO_ALGAPI
  1295. help
  1296. SEED cipher algorithm (RFC4269).
  1297. SEED is a 128-bit symmetric key block cipher that has been
  1298. developed by KISA (Korea Information Security Agency) as a
  1299. national standard encryption algorithm of the Republic of Korea.
  1300. It is a 16 round block cipher with the key size of 128 bit.
  1301. See also:
  1302. <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>
  1303. config CRYPTO_SERPENT
  1304. tristate "Serpent cipher algorithm"
  1305. select CRYPTO_ALGAPI
  1306. help
  1307. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1308. Keys are allowed to be from 0 to 256 bits in length, in steps
  1309. of 8 bits. Also includes the 'Tnepres' algorithm, a reversed
  1310. variant of Serpent for compatibility with old kerneli.org code.
  1311. See also:
  1312. <https://www.cl.cam.ac.uk/~rja14/serpent.html>
  1313. config CRYPTO_SERPENT_SSE2_X86_64
  1314. tristate "Serpent cipher algorithm (x86_64/SSE2)"
  1315. depends on X86 && 64BIT
  1316. select CRYPTO_SKCIPHER
  1317. select CRYPTO_GLUE_HELPER_X86
  1318. select CRYPTO_SERPENT
  1319. select CRYPTO_SIMD
  1320. help
  1321. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1322. Keys are allowed to be from 0 to 256 bits in length, in steps
  1323. of 8 bits.
  1324. This module provides Serpent cipher algorithm that processes eight
  1325. blocks parallel using SSE2 instruction set.
  1326. See also:
  1327. <https://www.cl.cam.ac.uk/~rja14/serpent.html>
  1328. config CRYPTO_SERPENT_SSE2_586
  1329. tristate "Serpent cipher algorithm (i586/SSE2)"
  1330. depends on X86 && !64BIT
  1331. select CRYPTO_SKCIPHER
  1332. select CRYPTO_GLUE_HELPER_X86
  1333. select CRYPTO_SERPENT
  1334. select CRYPTO_SIMD
  1335. help
  1336. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1337. Keys are allowed to be from 0 to 256 bits in length, in steps
  1338. of 8 bits.
  1339. This module provides Serpent cipher algorithm that processes four
  1340. blocks parallel using SSE2 instruction set.
  1341. See also:
  1342. <https://www.cl.cam.ac.uk/~rja14/serpent.html>
  1343. config CRYPTO_SERPENT_AVX_X86_64
  1344. tristate "Serpent cipher algorithm (x86_64/AVX)"
  1345. depends on X86 && 64BIT
  1346. select CRYPTO_SKCIPHER
  1347. select CRYPTO_GLUE_HELPER_X86
  1348. select CRYPTO_SERPENT
  1349. select CRYPTO_SIMD
  1350. select CRYPTO_XTS
  1351. help
  1352. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1353. Keys are allowed to be from 0 to 256 bits in length, in steps
  1354. of 8 bits.
  1355. This module provides the Serpent cipher algorithm that processes
  1356. eight blocks parallel using the AVX instruction set.
  1357. See also:
  1358. <https://www.cl.cam.ac.uk/~rja14/serpent.html>
  1359. config CRYPTO_SERPENT_AVX2_X86_64
  1360. tristate "Serpent cipher algorithm (x86_64/AVX2)"
  1361. depends on X86 && 64BIT
  1362. select CRYPTO_SERPENT_AVX_X86_64
  1363. help
  1364. Serpent cipher algorithm, by Anderson, Biham & Knudsen.
  1365. Keys are allowed to be from 0 to 256 bits in length, in steps
  1366. of 8 bits.
  1367. This module provides Serpent cipher algorithm that processes 16
  1368. blocks parallel using AVX2 instruction set.
  1369. See also:
  1370. <https://www.cl.cam.ac.uk/~rja14/serpent.html>
  1371. config CRYPTO_SM4
  1372. tristate "SM4 cipher algorithm"
  1373. select CRYPTO_ALGAPI
  1374. help
  1375. SM4 cipher algorithms (OSCCA GB/T 32907-2016).
  1376. SM4 (GBT.32907-2016) is a cryptographic standard issued by the
  1377. Organization of State Commercial Administration of China (OSCCA)
  1378. as an authorized cryptographic algorithms for the use within China.
  1379. SMS4 was originally created for use in protecting wireless
  1380. networks, and is mandated in the Chinese National Standard for
  1381. Wireless LAN WAPI (Wired Authentication and Privacy Infrastructure)
  1382. (GB.15629.11-2003).
  1383. The latest SM4 standard (GBT.32907-2016) was proposed by OSCCA and
  1384. standardized through TC 260 of the Standardization Administration
  1385. of the People's Republic of China (SAC).
  1386. The input, output, and key of SMS4 are each 128 bits.
  1387. See also: <https://eprint.iacr.org/2008/329.pdf>
  1388. If unsure, say N.
  1389. config CRYPTO_TEA
  1390. tristate "TEA, XTEA and XETA cipher algorithms"
  1391. depends on CRYPTO_USER_API_ENABLE_OBSOLETE
  1392. select CRYPTO_ALGAPI
  1393. help
  1394. TEA cipher algorithm.
  1395. Tiny Encryption Algorithm is a simple cipher that uses
  1396. many rounds for security. It is very fast and uses
  1397. little memory.
  1398. Xtendend Tiny Encryption Algorithm is a modification to
  1399. the TEA algorithm to address a potential key weakness
  1400. in the TEA algorithm.
  1401. Xtendend Encryption Tiny Algorithm is a mis-implementation
  1402. of the XTEA algorithm for compatibility purposes.
  1403. config CRYPTO_TWOFISH
  1404. tristate "Twofish cipher algorithm"
  1405. select CRYPTO_ALGAPI
  1406. select CRYPTO_TWOFISH_COMMON
  1407. help
  1408. Twofish cipher algorithm.
  1409. Twofish was submitted as an AES (Advanced Encryption Standard)
  1410. candidate cipher by researchers at CounterPane Systems. It is a
  1411. 16 round block cipher supporting key sizes of 128, 192, and 256
  1412. bits.
  1413. See also:
  1414. <https://www.schneier.com/twofish.html>
  1415. config CRYPTO_TWOFISH_COMMON
  1416. tristate
  1417. help
  1418. Common parts of the Twofish cipher algorithm shared by the
  1419. generic c and the assembler implementations.
  1420. config CRYPTO_TWOFISH_586
  1421. tristate "Twofish cipher algorithms (i586)"
  1422. depends on (X86 || UML_X86) && !64BIT
  1423. select CRYPTO_ALGAPI
  1424. select CRYPTO_TWOFISH_COMMON
  1425. help
  1426. Twofish cipher algorithm.
  1427. Twofish was submitted as an AES (Advanced Encryption Standard)
  1428. candidate cipher by researchers at CounterPane Systems. It is a
  1429. 16 round block cipher supporting key sizes of 128, 192, and 256
  1430. bits.
  1431. See also:
  1432. <https://www.schneier.com/twofish.html>
  1433. config CRYPTO_TWOFISH_X86_64
  1434. tristate "Twofish cipher algorithm (x86_64)"
  1435. depends on (X86 || UML_X86) && 64BIT
  1436. select CRYPTO_ALGAPI
  1437. select CRYPTO_TWOFISH_COMMON
  1438. help
  1439. Twofish cipher algorithm (x86_64).
  1440. Twofish was submitted as an AES (Advanced Encryption Standard)
  1441. candidate cipher by researchers at CounterPane Systems. It is a
  1442. 16 round block cipher supporting key sizes of 128, 192, and 256
  1443. bits.
  1444. See also:
  1445. <https://www.schneier.com/twofish.html>
  1446. config CRYPTO_TWOFISH_X86_64_3WAY
  1447. tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
  1448. depends on X86 && 64BIT
  1449. select CRYPTO_SKCIPHER
  1450. select CRYPTO_TWOFISH_COMMON
  1451. select CRYPTO_TWOFISH_X86_64
  1452. select CRYPTO_GLUE_HELPER_X86
  1453. help
  1454. Twofish cipher algorithm (x86_64, 3-way parallel).
  1455. Twofish was submitted as an AES (Advanced Encryption Standard)
  1456. candidate cipher by researchers at CounterPane Systems. It is a
  1457. 16 round block cipher supporting key sizes of 128, 192, and 256
  1458. bits.
  1459. This module provides Twofish cipher algorithm that processes three
  1460. blocks parallel, utilizing resources of out-of-order CPUs better.
  1461. See also:
  1462. <https://www.schneier.com/twofish.html>
  1463. config CRYPTO_TWOFISH_AVX_X86_64
  1464. tristate "Twofish cipher algorithm (x86_64/AVX)"
  1465. depends on X86 && 64BIT
  1466. select CRYPTO_SKCIPHER
  1467. select CRYPTO_GLUE_HELPER_X86
  1468. select CRYPTO_SIMD
  1469. select CRYPTO_TWOFISH_COMMON
  1470. select CRYPTO_TWOFISH_X86_64
  1471. select CRYPTO_TWOFISH_X86_64_3WAY
  1472. help
  1473. Twofish cipher algorithm (x86_64/AVX).
  1474. Twofish was submitted as an AES (Advanced Encryption Standard)
  1475. candidate cipher by researchers at CounterPane Systems. It is a
  1476. 16 round block cipher supporting key sizes of 128, 192, and 256
  1477. bits.
  1478. This module provides the Twofish cipher algorithm that processes
  1479. eight blocks parallel using the AVX Instruction Set.
  1480. See also:
  1481. <https://www.schneier.com/twofish.html>
  1482. comment "Compression"
  1483. config CRYPTO_DEFLATE
  1484. tristate "Deflate compression algorithm"
  1485. select CRYPTO_ALGAPI
  1486. select CRYPTO_ACOMP2
  1487. select ZLIB_INFLATE
  1488. select ZLIB_DEFLATE
  1489. help
  1490. This is the Deflate algorithm (RFC1951), specified for use in
  1491. IPSec with the IPCOMP protocol (RFC3173, RFC2394).
  1492. You will most probably want this if using IPSec.
  1493. config CRYPTO_LZO
  1494. tristate "LZO compression algorithm"
  1495. select CRYPTO_ALGAPI
  1496. select CRYPTO_ACOMP2
  1497. select LZO_COMPRESS
  1498. select LZO_DECOMPRESS
  1499. help
  1500. This is the LZO algorithm.
  1501. config CRYPTO_842
  1502. tristate "842 compression algorithm"
  1503. select CRYPTO_ALGAPI
  1504. select CRYPTO_ACOMP2
  1505. select 842_COMPRESS
  1506. select 842_DECOMPRESS
  1507. help
  1508. This is the 842 algorithm.
  1509. config CRYPTO_LZ4
  1510. tristate "LZ4 compression algorithm"
  1511. select CRYPTO_ALGAPI
  1512. select CRYPTO_ACOMP2
  1513. select LZ4_COMPRESS
  1514. select LZ4_DECOMPRESS
  1515. help
  1516. This is the LZ4 algorithm.
  1517. config CRYPTO_LZ4HC
  1518. tristate "LZ4HC compression algorithm"
  1519. select CRYPTO_ALGAPI
  1520. select CRYPTO_ACOMP2
  1521. select LZ4HC_COMPRESS
  1522. select LZ4_DECOMPRESS
  1523. help
  1524. This is the LZ4 high compression mode algorithm.
  1525. config CRYPTO_ZSTD
  1526. tristate "Zstd compression algorithm"
  1527. select CRYPTO_ALGAPI
  1528. select CRYPTO_ACOMP2
  1529. select ZSTD_COMPRESS
  1530. select ZSTD_DECOMPRESS
  1531. help
  1532. This is the zstd algorithm.
  1533. comment "Random Number Generation"
  1534. config CRYPTO_ANSI_CPRNG
  1535. tristate "Pseudo Random Number Generation for Cryptographic modules"
  1536. select CRYPTO_AES
  1537. select CRYPTO_RNG
  1538. help
  1539. This option enables the generic pseudo random number generator
  1540. for cryptographic modules. Uses the Algorithm specified in
  1541. ANSI X9.31 A.2.4. Note that this option must be enabled if
  1542. CRYPTO_FIPS is selected
  1543. menuconfig CRYPTO_DRBG_MENU
  1544. tristate "NIST SP800-90A DRBG"
  1545. help
  1546. NIST SP800-90A compliant DRBG. In the following submenu, one or
  1547. more of the DRBG types must be selected.
  1548. if CRYPTO_DRBG_MENU
  1549. config CRYPTO_DRBG_HMAC
  1550. bool
  1551. default y
  1552. select CRYPTO_HMAC
  1553. select CRYPTO_SHA256
  1554. config CRYPTO_DRBG_HASH
  1555. bool "Enable Hash DRBG"
  1556. select CRYPTO_SHA256
  1557. help
  1558. Enable the Hash DRBG variant as defined in NIST SP800-90A.
  1559. config CRYPTO_DRBG_CTR
  1560. bool "Enable CTR DRBG"
  1561. select CRYPTO_AES
  1562. select CRYPTO_CTR
  1563. help
  1564. Enable the CTR DRBG variant as defined in NIST SP800-90A.
  1565. config CRYPTO_DRBG
  1566. tristate
  1567. default CRYPTO_DRBG_MENU
  1568. select CRYPTO_RNG
  1569. select CRYPTO_JITTERENTROPY
  1570. endif # if CRYPTO_DRBG_MENU
  1571. config CRYPTO_JITTERENTROPY
  1572. tristate "Jitterentropy Non-Deterministic Random Number Generator"
  1573. select CRYPTO_RNG
  1574. help
  1575. The Jitterentropy RNG is a noise that is intended
  1576. to provide seed to another RNG. The RNG does not
  1577. perform any cryptographic whitening of the generated
  1578. random numbers. This Jitterentropy RNG registers with
  1579. the kernel crypto API and can be used by any caller.
  1580. config CRYPTO_USER_API
  1581. tristate
  1582. config CRYPTO_USER_API_HASH
  1583. tristate "User-space interface for hash algorithms"
  1584. depends on NET
  1585. select CRYPTO_HASH
  1586. select CRYPTO_USER_API
  1587. help
  1588. This option enables the user-spaces interface for hash
  1589. algorithms.
  1590. config CRYPTO_USER_API_SKCIPHER
  1591. tristate "User-space interface for symmetric key cipher algorithms"
  1592. depends on NET
  1593. select CRYPTO_SKCIPHER
  1594. select CRYPTO_USER_API
  1595. help
  1596. This option enables the user-spaces interface for symmetric
  1597. key cipher algorithms.
  1598. config CRYPTO_USER_API_RNG
  1599. tristate "User-space interface for random number generator algorithms"
  1600. depends on NET
  1601. select CRYPTO_RNG
  1602. select CRYPTO_USER_API
  1603. help
  1604. This option enables the user-spaces interface for random
  1605. number generator algorithms.
  1606. config CRYPTO_USER_API_RNG_CAVP
  1607. bool "Enable CAVP testing of DRBG"
  1608. depends on CRYPTO_USER_API_RNG && CRYPTO_DRBG
  1609. help
  1610. This option enables extra API for CAVP testing via the user-space
  1611. interface: resetting of DRBG entropy, and providing Additional Data.
  1612. This should only be enabled for CAVP testing. You should say
  1613. no unless you know what this is.
  1614. config CRYPTO_USER_API_AEAD
  1615. tristate "User-space interface for AEAD cipher algorithms"
  1616. depends on NET
  1617. select CRYPTO_AEAD
  1618. select CRYPTO_SKCIPHER
  1619. select CRYPTO_NULL
  1620. select CRYPTO_USER_API
  1621. help
  1622. This option enables the user-spaces interface for AEAD
  1623. cipher algorithms.
  1624. config CRYPTO_USER_API_ENABLE_OBSOLETE
  1625. bool "Enable obsolete cryptographic algorithms for userspace"
  1626. depends on CRYPTO_USER_API
  1627. default y
  1628. help
  1629. Allow obsolete cryptographic algorithms to be selected that have
  1630. already been phased out from internal use by the kernel, and are
  1631. only useful for userspace clients that still rely on them.
  1632. config CRYPTO_STATS
  1633. bool "Crypto usage statistics for User-space"
  1634. depends on CRYPTO_USER
  1635. help
  1636. This option enables the gathering of crypto stats.
  1637. This will collect:
  1638. - encrypt/decrypt size and numbers of symmeric operations
  1639. - compress/decompress size and numbers of compress operations
  1640. - size and numbers of hash operations
  1641. - encrypt/decrypt/sign/verify numbers for asymmetric operations
  1642. - generate/seed numbers for rng operations
  1643. config CRYPTO_HASH_INFO
  1644. bool
  1645. source "lib/crypto/Kconfig"
  1646. source "drivers/crypto/Kconfig"
  1647. source "crypto/asymmetric_keys/Kconfig"
  1648. source "certs/Kconfig"
  1649. endif # if CRYPTO