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