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