1# SPDX-License-Identifier: GPL-2.0
2
3menu "Crypto library routines"
4
5config CRYPTO_LIB_UTILS
6	tristate
7
8config CRYPTO_LIB_AES
9	tristate
10
11config CRYPTO_LIB_AESGCM
12	tristate
13	select CRYPTO_LIB_AES
14	select CRYPTO_LIB_GF128MUL
15	select CRYPTO_LIB_UTILS
16
17config CRYPTO_LIB_ARC4
18	tristate
19
20config CRYPTO_LIB_GF128MUL
21	tristate
22
23config CRYPTO_ARCH_HAVE_LIB_BLAKE2S
24	bool
25	help
26	  Declares whether the architecture provides an arch-specific
27	  accelerated implementation of the Blake2s library interface,
28	  either builtin or as a module.
29
30config CRYPTO_LIB_BLAKE2S_GENERIC
31	def_bool !CRYPTO_ARCH_HAVE_LIB_BLAKE2S
32	help
33	  This symbol can be depended upon by arch implementations of the
34	  Blake2s library interface that require the generic code as a
35	  fallback, e.g., for SIMD implementations. If no arch specific
36	  implementation is enabled, this implementation serves the users
37	  of CRYPTO_LIB_BLAKE2S.
38
39config CRYPTO_ARCH_HAVE_LIB_CHACHA
40	tristate
41	help
42	  Declares whether the architecture provides an arch-specific
43	  accelerated implementation of the ChaCha library interface,
44	  either builtin or as a module.
45
46config CRYPTO_LIB_CHACHA_GENERIC
47	tristate
48	select CRYPTO_LIB_UTILS
49	help
50	  This symbol can be depended upon by arch implementations of the
51	  ChaCha library interface that require the generic code as a
52	  fallback, e.g., for SIMD implementations. If no arch specific
53	  implementation is enabled, this implementation serves the users
54	  of CRYPTO_LIB_CHACHA.
55
56config CRYPTO_LIB_CHACHA
57	tristate "ChaCha library interface"
58	depends on CRYPTO_ARCH_HAVE_LIB_CHACHA || !CRYPTO_ARCH_HAVE_LIB_CHACHA
59	select CRYPTO_LIB_CHACHA_GENERIC if CRYPTO_ARCH_HAVE_LIB_CHACHA=n
60	help
61	  Enable the ChaCha library interface. This interface may be fulfilled
62	  by either the generic implementation or an arch-specific one, if one
63	  is available and enabled.
64
65config CRYPTO_ARCH_HAVE_LIB_CURVE25519
66	tristate
67	help
68	  Declares whether the architecture provides an arch-specific
69	  accelerated implementation of the Curve25519 library interface,
70	  either builtin or as a module.
71
72config CRYPTO_LIB_CURVE25519_GENERIC
73	tristate
74	help
75	  This symbol can be depended upon by arch implementations of the
76	  Curve25519 library interface that require the generic code as a
77	  fallback, e.g., for SIMD implementations. If no arch specific
78	  implementation is enabled, this implementation serves the users
79	  of CRYPTO_LIB_CURVE25519.
80
81config CRYPTO_LIB_CURVE25519
82	tristate "Curve25519 scalar multiplication library"
83	depends on CRYPTO_ARCH_HAVE_LIB_CURVE25519 || !CRYPTO_ARCH_HAVE_LIB_CURVE25519
84	select CRYPTO_LIB_CURVE25519_GENERIC if CRYPTO_ARCH_HAVE_LIB_CURVE25519=n
85	select CRYPTO_LIB_UTILS
86	help
87	  Enable the Curve25519 library interface. This interface may be
88	  fulfilled by either the generic implementation or an arch-specific
89	  one, if one is available and enabled.
90
91config CRYPTO_LIB_DES
92	tristate
93
94config CRYPTO_LIB_POLY1305_RSIZE
95	int
96	default 2 if MIPS
97	default 11 if X86_64
98	default 9 if ARM || ARM64
99	default 1
100
101config CRYPTO_ARCH_HAVE_LIB_POLY1305
102	tristate
103	help
104	  Declares whether the architecture provides an arch-specific
105	  accelerated implementation of the Poly1305 library interface,
106	  either builtin or as a module.
107
108config CRYPTO_LIB_POLY1305_GENERIC
109	tristate
110	help
111	  This symbol can be depended upon by arch implementations of the
112	  Poly1305 library interface that require the generic code as a
113	  fallback, e.g., for SIMD implementations. If no arch specific
114	  implementation is enabled, this implementation serves the users
115	  of CRYPTO_LIB_POLY1305.
116
117config CRYPTO_LIB_POLY1305
118	tristate "Poly1305 library interface"
119	depends on CRYPTO_ARCH_HAVE_LIB_POLY1305 || !CRYPTO_ARCH_HAVE_LIB_POLY1305
120	select CRYPTO_LIB_POLY1305_GENERIC if CRYPTO_ARCH_HAVE_LIB_POLY1305=n
121	help
122	  Enable the Poly1305 library interface. This interface may be fulfilled
123	  by either the generic implementation or an arch-specific one, if one
124	  is available and enabled.
125
126config CRYPTO_LIB_CHACHA20POLY1305
127	tristate "ChaCha20-Poly1305 AEAD support (8-byte nonce library version)"
128	depends on CRYPTO_ARCH_HAVE_LIB_CHACHA || !CRYPTO_ARCH_HAVE_LIB_CHACHA
129	depends on CRYPTO_ARCH_HAVE_LIB_POLY1305 || !CRYPTO_ARCH_HAVE_LIB_POLY1305
130	depends on CRYPTO
131	select CRYPTO_LIB_CHACHA
132	select CRYPTO_LIB_POLY1305
133	select CRYPTO_ALGAPI
134
135config CRYPTO_LIB_SHA1
136	tristate
137
138config CRYPTO_LIB_SHA256
139	tristate
140
141endmenu
142