Loading...
Searching...
No Matches
user_settings.h
1/*
2 * SPDX-FileCopyrightText: 2017 wolfSSL Inc.
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
8/* user_settings.h : custom configuration for wolfcrypt/wolfSSL */
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14/* System */
15#ifndef WOLFSSL_RIOT_OS
16#define WOLFSSL_RIOT_OS 1
17#endif
18#include <random.h>
19#define CUSTOM_RAND_GENERATE random_uint32
20#define CUSTOM_RAND_TYPE uint32_t
21#define NO_WRITEV
22#define NO_DEV_RANDOM
23#define NO_FILESYSTEM
24#define NO_WOLFSSL_MEMORY
25#define NO_MAIN_DRIVER
26#define NO_SIG_WRAPPER
27#define NO_OLD_RNGNAME
28#define HAVE_STRINGS_H
29#define WOLFSSL_IPV6
30
31/* Single precision math */
32#define WOLFSSL_SP_MATH
33#define WOLFSSL_SP_SMALL
34#define SP_WORD_SIZE 32
35#define WOLFSSL_SP
36
37/* GNRC support enabled if not
38 * using sockets
39 */
40#ifndef MODULE_WOLFSSL_SOCKET
41#ifndef WOLFSSL_NO_SOCK
42#define WOLFSSL_NO_SOCK
43#endif
44#define WOLFSSL_GNRC
45#define WOLFSSL_USER_IO
46#else
47#include <sys/socket.h>
48#endif
49
50/* Select wolfcrypt only / +wolfssl
51 * at compile time (via USEMODULE)
52 */
53#ifndef MODULE_WOLFSSL_TLS
54#ifndef MODULE_WOLFSSL_TLS13
55#define WOLFCRYPT_ONLY
56#else
57#define NO_OLD_TLS
58#define HAVE_TLS_EXTENSIONS
59#define HAVE_AES_DECRYPT
60#define HAVE_AESGCM
61#define GCM_SMALL
62#define HAVE_AESCCM
63#define WOLFSSL_AES_COUNTER
64#define WOLFSSL_AES_DIRECT
65#endif
66#else
67#define HAVE_TLS_EXTENSIONS
68#endif
69
70/* Align on 32-bit (exc. native32,
71 * don't modify default alignment.)
72 */
73#ifndef BOARD_NATIVE32
74#define WOLFSSL_GENERAL_ALIGNMENT 4
75#endif
76
77/* ARM-specific optimizations */
78#ifdef CPU_ARM
79#define TFM_ARM
80#endif
81
82/* defined somewhere else */
83int strncasecmp(const char *s1, const char * s2, size_t sz);
84
85#define SINGLE_THREADED
86
87/* Global settings */
88#define SMALL_SESSION_CACHE
89#define WOLFSSL_DH_CONST
90#define WORD64_AVAILABLE
91#define TFM_TIMING_RESISTANT
92#define USE_CERT_BUFFERS_2048
93#define NO_RC4
94
95/* Modules */
96#undef WC_NO_RNG
97#ifndef MODULE_WOLFCRYPT_RANDOM
98#define WC_NO_RNG
99#endif
100
101#undef WOLFSSL_DTLS
102#ifdef MODULE_WOLFSSL_DTLS
103#define WOLFSSL_DTLS
104#endif
105
106#undef WOLFSSL_DTLS13
107#ifdef MODULE_WOLFSSL_DTLS13
108#define WOLFSSL_DTLS13
109#define HAVE_AEAD
110#endif
111
112#undef HAVE_FFDHE_2048
113#ifdef MODULE_WOLFCRYPT_FFDHE_2048
114#define HAVE_FFDHE_2048
115#endif
116
117#undef HAVE_CHACHA
118#ifdef MODULE_WOLFCRYPT_CHACHA
119#define HAVE_CHACHA
120#endif
121
122#undef HAVE_POLY1305
123#ifdef MODULE_WOLFCRYPT_POLY1305
124#define HAVE_POLY1305
125#define HAVE_ONE_TIME_AUTH
126#endif
127
128#undef HAVE_CURVE25519
129#ifdef MODULE_WOLFCRYPT_CURVE25519
130#define HAVE_CURVE25519
131#define CURVE25519_SMALL
132#endif
133
134#undef HAVE_ED25519
135#ifdef MODULE_WOLFCRYPT_ED25519
136#define HAVE_ED25519
137#define ED25519_SMALL
138#endif
139
140#undef NO_AES
141#undef NO_CODING
142#undef NO_CMAC
143#ifndef MODULE_WOLFCRYPT_AES
144#define NO_AES
145#endif
146#ifndef MODULE_WOLFCRYPT_CMAC
147#define NO_CMAC
148#endif
149#ifndef MODULE_WOLFCRYPT_CODING
150#define NO_CODING
151#endif
152
153#ifndef MODULE_WOLFCRYPT_ASN
154#define NO_ASN
155#endif
156
157#ifndef MODULE_WOLFCRYPT_HMAC
158#define NO_HMAC
159#endif
160
161#undef NO_SHA
162#ifndef MODULE_WOLFCRYPT_SHA
163#define NO_SHA
164#else
165#define USE_SLOW_SHA
166#define USE_SLOW_SHA2
167#endif
168
169#undef HAVE_SHA512
170#undef HAVE_SHA384
171#undef WOLFSSL_SHA384
172#undef WOLFSSL_SHA512
173#ifdef MODULE_WOLFCRYPT_SHA512
174#define HAVE_SHA384
175#define HAVE_SHA512
176#define WOLFSSL_SHA384
177#define WOLFSSL_SHA512
178#define USE_SLOW_SHA512
179#endif
180
181#undef WOLFSSL_SHA3
182#ifdef MODULE_WOLFCRYPT_SHA3
183#define WOLFSSL_SHA3
184#endif
185
186#undef HAVE_ECC
187#ifdef MODULE_WOLFCRYPT_ECC
188#define HAVE_ECC
189#define FP_ECC
190#define WOLFSSL_HAVE_SP_ECC
191#define WOLFSSL_HAVE_SP_ECC
192#define ECC_TIMING_RESISTANT
193#define HAVE_SUPPORTED_CURVES
194#endif
195
196#undef HAVE_BLAKE2B
197#ifdef MODULE_WOLFCRYPT_BLAKE2B
198#define HAVE_BLAKE2B
199#endif
200
201#undef HAVE_CAMELLIA
202#ifdef MODULE_WOLFCRYPT_CAMELLIA
203#define HAVE_CAMELLIA
204#endif
205
206#undef HAVE_IDEA
207#ifdef MODULE_WOLFCRYPT_IDEA
208#define HAVE_IDEA
209#endif
210
211#undef HAVE_HC128
212#ifdef MODULE_WOLFCRYPT_HC128
213#define HAVE_HC128
214#endif
215
216#undef HAVE_PKCS7
217#ifdef MODULE_WOLFCRYPT_PKCS7
218#define HAVE_PKCS7
219#endif
220
221#undef NO_PKCS12
222#ifndef MODULE_WOLFCRYPT_PKCS12
223#define NO_PKCS12
224#endif
225
226#undef NO_PWDBASED
227#ifndef MODULE_WOLFCRYPT_PWDBASED
228#define NO_PWDBASED
229#endif
230
231#undef WOLFSSL_STATIC_PSK
232#ifdef MODULE_WOLFSSL_PSK
233#define WOLFSSL_STATIC_PSK
234#endif
235
236#undef HAVE_LIBZ
237#ifdef MODULE_WOLFCRYPT_COMPRESS
238#define HAVE_LIBZ
239#endif
240
241#ifdef MODULE_WOLFCRYPT_RSA
242#define HAVE_RSA
243#define RSA_LOW_MEM
244#define WC_RSA_BLINDING
245#define WOLFSSL_STATIC_RSA
246#define WOLFSSL_HAVE_SP_DH
247#define WOLFSSL_HAVE_SP_RSA
248#else
249#define NO_RSA
250#endif
251
252#undef NO_DES3
253#ifndef MODULE_WOLFCRYPT_DES3
254#define NO_DES3
255#endif
256
257#undef NO_DH
258#ifndef MODULE_WOLFCRYPT_DH
259#define NO_DH
260#endif
261
262#undef NO_DSA
263#ifndef MODULE_WOLFCRYPT_DSA
264#define NO_DSA
265#endif
266
267#undef WOLFSSL_MD2
268#ifdef MODULE_WOLFSSL_MD2
269#define WOLFSSL_MD2
270#endif
271
272#undef NO_MD4
273#ifndef MODULE_WOLFCRYPT_MD4
274#define NO_MD4
275#endif
276
277#undef NO_RABBIT
278#ifndef MODULE_WOLFCRYPT_RABBIT
279#define NO_RABBIT
280#endif
281
282#undef NO_MD5
283#ifndef MODULE_WOLFCRYPT_MD5
284#define NO_MD5
285#endif
286
287#undef WOLFSSL_RIPEMD
288#ifdef MODULE_WOLFCRYPT_RIPEMD
289#define WOLFSSL_RIPEMD
290#endif
291
292#undef NO_SIG_WRAPPER
293#ifndef MODULE_WOLFCRYPT_SIGNATURE
294#define NO_SIG_WRAPPER
295#endif
296
297#undef HAVE_SRP
298#ifdef MODULE_WOLFCRYPT_SRP
299#define HAVE_SRP
300#endif
301
302#undef HAVE_OCSP
303#ifdef MODULE_WOLFSSL_OCSP
304#define HAVE_OCSP
305#endif
306
307#undef HAVE_CRL
308#ifdef MODULE_WOLFSSL_CRL
309#define HAVE_CRL
310#endif
311
312#undef HAVE_TLS13
313#ifdef MODULE_WOLFSSL_TLS13
314#define HAVE_TLS13
315#define WOLFSSL_TLS13
316#define BUILD_TLS_AES_128_GCM_SHA256
317#define NO_OLD_TLS
318#define HAVE_TLS_EXTENSIONS
319#define HAVE_AES_DECRYPT
320#define HAVE_AESGCM
321#define GCM_SMALL
322#define HAVE_AESCCM
323#define WOLFSSL_AES_COUNTER
324#define WOLFSSL_AES_DIRECT
325#define HAVE_FFDHE_4096
326#define HAVE_HKDF
327#define WC_RSA_PSS
328#define WOLFSSL_SEND_HRR_COOKIE
329#endif
330
331#ifdef MODULE_WOLFSSL_DEBUG
332#define DEBUG_WOLFSSL
333#define WOLFSSL_LOG_PRINTF
334#endif
335
336#ifdef __cplusplus
337}
338#endif
339
340/* The following defines should prevent declaration of name-colliding "Aes"
341 * structure on SAML21, SAME54 platform code
342 *
343 * TODO: avoid pulling in all vendor files through cpu_conf.h
344 */
345#define _SAML21_AES_COMPONENT_
346#define _SAMD51_AES_COMPONENT_
347#define _SAME51_AES_COMPONENT_
348#define _SAME54_AES_COMPONENT_
349#define _SAMR34_AES_COMPONENT_
Common interface to the software PRNG.
Main socket header.