[CRYPTO] api: Split out low-level API
[linux-2.6.git] / crypto / Kconfig
1 #
2 # Cryptographic API Configuration
3 #
4
5 menu "Cryptographic options"
6
7 config CRYPTO
8         bool "Cryptographic API"
9         help
10           This option provides the core Cryptographic API.
11
12 if CRYPTO
13
14 config CRYPTO_ALGAPI
15         tristate
16         help
17           This option provides the API for cryptographic algorithms.
18
19 config CRYPTO_HMAC
20         bool "HMAC support"
21         help
22           HMAC: Keyed-Hashing for Message Authentication (RFC2104).
23           This is required for IPSec.
24
25 config CRYPTO_NULL
26         tristate "Null algorithms"
27         select CRYPTO_ALGAPI
28         help
29           These are 'Null' algorithms, used by IPsec, which do nothing.
30
31 config CRYPTO_MD4
32         tristate "MD4 digest algorithm"
33         select CRYPTO_ALGAPI
34         help
35           MD4 message digest algorithm (RFC1320).
36
37 config CRYPTO_MD5
38         tristate "MD5 digest algorithm"
39         select CRYPTO_ALGAPI
40         help
41           MD5 message digest algorithm (RFC1321).
42
43 config CRYPTO_SHA1
44         tristate "SHA1 digest algorithm"
45         select CRYPTO_ALGAPI
46         help
47           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
48
49 config CRYPTO_SHA1_S390
50         tristate "SHA1 digest algorithm (s390)"
51         depends on S390
52         select CRYPTO_ALGAPI
53         help
54           This is the s390 hardware accelerated implementation of the
55           SHA-1 secure hash standard (FIPS 180-1/DFIPS 180-2).
56
57 config CRYPTO_SHA256
58         tristate "SHA256 digest algorithm"
59         select CRYPTO_ALGAPI
60         help
61           SHA256 secure hash standard (DFIPS 180-2).
62           
63           This version of SHA implements a 256 bit hash with 128 bits of
64           security against collision attacks.
65
66 config CRYPTO_SHA256_S390
67         tristate "SHA256 digest algorithm (s390)"
68         depends on S390
69         select CRYPTO_ALGAPI
70         help
71           This is the s390 hardware accelerated implementation of the
72           SHA256 secure hash standard (DFIPS 180-2).
73
74           This version of SHA implements a 256 bit hash with 128 bits of
75           security against collision attacks.
76
77 config CRYPTO_SHA512
78         tristate "SHA384 and SHA512 digest algorithms"
79         select CRYPTO_ALGAPI
80         help
81           SHA512 secure hash standard (DFIPS 180-2).
82           
83           This version of SHA implements a 512 bit hash with 256 bits of
84           security against collision attacks.
85
86           This code also includes SHA-384, a 384 bit hash with 192 bits
87           of security against collision attacks.
88
89 config CRYPTO_WP512
90         tristate "Whirlpool digest algorithms"
91         select CRYPTO_ALGAPI
92         help
93           Whirlpool hash algorithm 512, 384 and 256-bit hashes
94
95           Whirlpool-512 is part of the NESSIE cryptographic primitives.
96           Whirlpool will be part of the ISO/IEC 10118-3:2003(E) standard
97
98           See also:
99           <http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html>
100
101 config CRYPTO_TGR192
102         tristate "Tiger digest algorithms"
103         select CRYPTO_ALGAPI
104         help
105           Tiger hash algorithm 192, 160 and 128-bit hashes
106
107           Tiger is a hash function optimized for 64-bit processors while
108           still having decent performance on 32-bit processors.
109           Tiger was developed by Ross Anderson and Eli Biham.
110
111           See also:
112           <http://www.cs.technion.ac.il/~biham/Reports/Tiger/>.
113
114 config CRYPTO_DES
115         tristate "DES and Triple DES EDE cipher algorithms"
116         select CRYPTO_ALGAPI
117         help
118           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
119
120 config CRYPTO_DES_S390
121         tristate "DES and Triple DES cipher algorithms (s390)"
122         depends on S390
123         select CRYPTO_ALGAPI
124         help
125           DES cipher algorithm (FIPS 46-2), and Triple DES EDE (FIPS 46-3).
126
127 config CRYPTO_BLOWFISH
128         tristate "Blowfish cipher algorithm"
129         select CRYPTO_ALGAPI
130         help
131           Blowfish cipher algorithm, by Bruce Schneier.
132           
133           This is a variable key length cipher which can use keys from 32
134           bits to 448 bits in length.  It's fast, simple and specifically
135           designed for use on "large microprocessors".
136           
137           See also:
138           <http://www.schneier.com/blowfish.html>
139
140 config CRYPTO_TWOFISH
141         tristate "Twofish cipher algorithm"
142         select CRYPTO_ALGAPI
143         select CRYPTO_TWOFISH_COMMON
144         help
145           Twofish cipher algorithm.
146           
147           Twofish was submitted as an AES (Advanced Encryption Standard)
148           candidate cipher by researchers at CounterPane Systems.  It is a
149           16 round block cipher supporting key sizes of 128, 192, and 256
150           bits.
151           
152           See also:
153           <http://www.schneier.com/twofish.html>
154
155 config CRYPTO_TWOFISH_COMMON
156         tristate
157         help
158           Common parts of the Twofish cipher algorithm shared by the
159           generic c and the assembler implementations.
160
161 config CRYPTO_TWOFISH_586
162         tristate "Twofish cipher algorithms (i586)"
163         depends on (X86 || UML_X86) && !64BIT
164         select CRYPTO_ALGAPI
165         select CRYPTO_TWOFISH_COMMON
166         help
167           Twofish cipher algorithm.
168
169           Twofish was submitted as an AES (Advanced Encryption Standard)
170           candidate cipher by researchers at CounterPane Systems.  It is a
171           16 round block cipher supporting key sizes of 128, 192, and 256
172           bits.
173
174           See also:
175           <http://www.schneier.com/twofish.html>
176
177 config CRYPTO_TWOFISH_X86_64
178         tristate "Twofish cipher algorithm (x86_64)"
179         depends on (X86 || UML_X86) && 64BIT
180         select CRYPTO_ALGAPI
181         select CRYPTO_TWOFISH_COMMON
182         help
183           Twofish cipher algorithm (x86_64).
184
185           Twofish was submitted as an AES (Advanced Encryption Standard)
186           candidate cipher by researchers at CounterPane Systems.  It is a
187           16 round block cipher supporting key sizes of 128, 192, and 256
188           bits.
189
190           See also:
191           <http://www.schneier.com/twofish.html>
192
193 config CRYPTO_SERPENT
194         tristate "Serpent cipher algorithm"
195         select CRYPTO_ALGAPI
196         help
197           Serpent cipher algorithm, by Anderson, Biham & Knudsen.
198
199           Keys are allowed to be from 0 to 256 bits in length, in steps
200           of 8 bits.  Also includes the 'Tnepres' algorithm, a reversed
201           variant of Serpent for compatibility with old kerneli code.
202
203           See also:
204           <http://www.cl.cam.ac.uk/~rja14/serpent.html>
205
206 config CRYPTO_AES
207         tristate "AES cipher algorithms"
208         select CRYPTO_ALGAPI
209         help
210           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
211           algorithm.
212
213           Rijndael appears to be consistently a very good performer in
214           both hardware and software across a wide range of computing 
215           environments regardless of its use in feedback or non-feedback 
216           modes. Its key setup time is excellent, and its key agility is 
217           good. Rijndael's very low memory requirements make it very well 
218           suited for restricted-space environments, in which it also 
219           demonstrates excellent performance. Rijndael's operations are 
220           among the easiest to defend against power and timing attacks. 
221
222           The AES specifies three key sizes: 128, 192 and 256 bits        
223
224           See <http://csrc.nist.gov/CryptoToolkit/aes/> for more information.
225
226 config CRYPTO_AES_586
227         tristate "AES cipher algorithms (i586)"
228         depends on (X86 || UML_X86) && !64BIT
229         select CRYPTO_ALGAPI
230         help
231           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
232           algorithm.
233
234           Rijndael appears to be consistently a very good performer in
235           both hardware and software across a wide range of computing 
236           environments regardless of its use in feedback or non-feedback 
237           modes. Its key setup time is excellent, and its key agility is 
238           good. Rijndael's very low memory requirements make it very well 
239           suited for restricted-space environments, in which it also 
240           demonstrates excellent performance. Rijndael's operations are 
241           among the easiest to defend against power and timing attacks. 
242
243           The AES specifies three key sizes: 128, 192 and 256 bits        
244
245           See <http://csrc.nist.gov/encryption/aes/> for more information.
246
247 config CRYPTO_AES_X86_64
248         tristate "AES cipher algorithms (x86_64)"
249         depends on (X86 || UML_X86) && 64BIT
250         select CRYPTO_ALGAPI
251         help
252           AES cipher algorithms (FIPS-197). AES uses the Rijndael 
253           algorithm.
254
255           Rijndael appears to be consistently a very good performer in
256           both hardware and software across a wide range of computing 
257           environments regardless of its use in feedback or non-feedback 
258           modes. Its key setup time is excellent, and its key agility is 
259           good. Rijndael's very low memory requirements make it very well 
260           suited for restricted-space environments, in which it also 
261           demonstrates excellent performance. Rijndael's operations are 
262           among the easiest to defend against power and timing attacks. 
263
264           The AES specifies three key sizes: 128, 192 and 256 bits        
265
266           See <http://csrc.nist.gov/encryption/aes/> for more information.
267
268 config CRYPTO_AES_S390
269         tristate "AES cipher algorithms (s390)"
270         depends on S390
271         select CRYPTO_ALGAPI
272         help
273           This is the s390 hardware accelerated implementation of the
274           AES cipher algorithms (FIPS-197). AES uses the Rijndael
275           algorithm.
276
277           Rijndael appears to be consistently a very good performer in
278           both hardware and software across a wide range of computing
279           environments regardless of its use in feedback or non-feedback
280           modes. Its key setup time is excellent, and its key agility is
281           good. Rijndael's very low memory requirements make it very well
282           suited for restricted-space environments, in which it also
283           demonstrates excellent performance. Rijndael's operations are
284           among the easiest to defend against power and timing attacks.
285
286           On s390 the System z9-109 currently only supports the key size
287           of 128 bit.
288
289 config CRYPTO_CAST5
290         tristate "CAST5 (CAST-128) cipher algorithm"
291         select CRYPTO_ALGAPI
292         help
293           The CAST5 encryption algorithm (synonymous with CAST-128) is
294           described in RFC2144.
295
296 config CRYPTO_CAST6
297         tristate "CAST6 (CAST-256) cipher algorithm"
298         select CRYPTO_ALGAPI
299         help
300           The CAST6 encryption algorithm (synonymous with CAST-256) is
301           described in RFC2612.
302
303 config CRYPTO_TEA
304         tristate "TEA, XTEA and XETA cipher algorithms"
305         select CRYPTO_ALGAPI
306         help
307           TEA cipher algorithm.
308
309           Tiny Encryption Algorithm is a simple cipher that uses
310           many rounds for security.  It is very fast and uses
311           little memory.
312
313           Xtendend Tiny Encryption Algorithm is a modification to
314           the TEA algorithm to address a potential key weakness
315           in the TEA algorithm.
316
317           Xtendend Encryption Tiny Algorithm is a mis-implementation 
318           of the XTEA algorithm for compatibility purposes.
319
320 config CRYPTO_ARC4
321         tristate "ARC4 cipher algorithm"
322         select CRYPTO_ALGAPI
323         help
324           ARC4 cipher algorithm.
325
326           ARC4 is a stream cipher using keys ranging from 8 bits to 2048
327           bits in length.  This algorithm is required for driver-based 
328           WEP, but it should not be for other purposes because of the
329           weakness of the algorithm.
330
331 config CRYPTO_KHAZAD
332         tristate "Khazad cipher algorithm"
333         select CRYPTO_ALGAPI
334         help
335           Khazad cipher algorithm.
336
337           Khazad was a finalist in the initial NESSIE competition.  It is
338           an algorithm optimized for 64-bit processors with good performance
339           on 32-bit processors.  Khazad uses an 128 bit key size.
340
341           See also:
342           <http://planeta.terra.com.br/informatica/paulobarreto/KhazadPage.html>
343
344 config CRYPTO_ANUBIS
345         tristate "Anubis cipher algorithm"
346         select CRYPTO_ALGAPI
347         help
348           Anubis cipher algorithm.
349
350           Anubis is a variable key length cipher which can use keys from 
351           128 bits to 320 bits in length.  It was evaluated as a entrant
352           in the NESSIE competition.
353           
354           See also:
355           <https://www.cosic.esat.kuleuven.ac.be/nessie/reports/>
356           <http://planeta.terra.com.br/informatica/paulobarreto/AnubisPage.html>
357
358
359 config CRYPTO_DEFLATE
360         tristate "Deflate compression algorithm"
361         select CRYPTO_ALGAPI
362         select ZLIB_INFLATE
363         select ZLIB_DEFLATE
364         help
365           This is the Deflate algorithm (RFC1951), specified for use in
366           IPSec with the IPCOMP protocol (RFC3173, RFC2394).
367           
368           You will most probably want this if using IPSec.
369
370 config CRYPTO_MICHAEL_MIC
371         tristate "Michael MIC keyed digest algorithm"
372         select CRYPTO_ALGAPI
373         help
374           Michael MIC is used for message integrity protection in TKIP
375           (IEEE 802.11i). This algorithm is required for TKIP, but it
376           should not be used for other purposes because of the weakness
377           of the algorithm.
378
379 config CRYPTO_CRC32C
380         tristate "CRC32c CRC algorithm"
381         select CRYPTO_ALGAPI
382         select LIBCRC32C
383         help
384           Castagnoli, et al Cyclic Redundancy-Check Algorithm.  Used
385           by iSCSI for header and data digests and by others.
386           See Castagnoli93.  This implementation uses lib/libcrc32c.
387           Module will be crc32c.
388
389 config CRYPTO_TEST
390         tristate "Testing module"
391         depends on m
392         select CRYPTO_ALGAPI
393         help
394           Quick & dirty crypto test module.
395
396 source "drivers/crypto/Kconfig"
397
398 endif   # if CRYPTO
399
400 endmenu