user_settings.h
1 /* Example custom user settings for wolfSSL */
2 
3 #ifndef WOLFSSL_USER_SETTINGS_H
4 #define WOLFSSL_USER_SETTINGS_H
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 #include <stddef.h> /* for size_t */
11 
12 
13 /* ------------------------------------------------------------------------- */
14 /* Platform */
15 /* ------------------------------------------------------------------------- */
16 #undef WOLFSSL_GENERAL_ALIGNMENT
17 #define WOLFSSL_GENERAL_ALIGNMENT 4
18 
19 #undef SINGLE_THREADED
20 #define SINGLE_THREADED
21 
22 #undef WOLFSSL_SMALL_STACK
23 #define WOLFSSL_SMALL_STACK
24 
25 #undef MICROCHIP_PIC32
26 #define MICROCHIP_PIC32
27 
28 #undef WOLFSSL_MICROCHIP_PIC32MZ
29 #define WOLFSSL_MICROCHIP_PIC32MZ
30 
31 
32 /* ------------------------------------------------------------------------- */
33 /* Math Configuration */
34 /* ------------------------------------------------------------------------- */
35 #undef USE_FAST_MATH
36 #define USE_FAST_MATH
37 
38 #ifdef USE_FAST_MATH
39  #undef TFM_TIMING_RESISTANT
40  #define TFM_TIMING_RESISTANT
41 
42  /* Optimizations */
43  //#define TFM_MIPS
44 #endif
45 
46 
47 /* ------------------------------------------------------------------------- */
48 /* Crypto */
49 /* ------------------------------------------------------------------------- */
50 /* ECC */
51 #if 1
52  #undef HAVE_ECC
53  #define HAVE_ECC
54 
55  /* Manually define enabled curves */
56  #undef ECC_USER_CURVES
57  #define ECC_USER_CURVES
58 
59  //#define HAVE_ECC192
60  //#define HAVE_ECC224
61  #undef NO_ECC256
62  //#define HAVE_ECC384
63  //#define HAVE_ECC521
64 
65  /* Fixed point cache (speeds repeated operations against same private key) */
66  #undef FP_ECC
67  //#define FP_ECC
68  #ifdef FP_ECC
69  /* Bits / Entries */
70  #undef FP_ENTRIES
71  #define FP_ENTRIES 2
72  #undef FP_LUT
73  #define FP_LUT 4
74  #endif
75 
76  /* Optional ECC calculation method */
77  /* Note: doubles heap usage, but slightly faster */
78  #undef ECC_SHAMIR
79  #define ECC_SHAMIR
80 
81  /* Reduces heap usage, but slower */
82  #undef ECC_TIMING_RESISTANT
83  #define ECC_TIMING_RESISTANT
84 
85  #ifdef USE_FAST_MATH
86  /* use reduced size math buffers for ecc points */
87  #undef ALT_ECC_SIZE
88  #define ALT_ECC_SIZE
89 
90  /* Enable TFM optimizations for ECC */
91  #if defined(HAVE_ECC192) || defined(HAVE_ALL_CURVES)
92  #define TFM_ECC192
93  #endif
94  #if defined(HAVE_ECC224) || defined(HAVE_ALL_CURVES)
95  #define TFM_ECC224
96  #endif
97  #if !defined(NO_ECC256) || defined(HAVE_ALL_CURVES)
98  #define TFM_ECC256
99  #endif
100  #if defined(HAVE_ECC384) || defined(HAVE_ALL_CURVES)
101  #define TFM_ECC384
102  #endif
103  #if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES)
104  #define TFM_ECC521
105  #endif
106  #endif
107 #endif
108 
109 /* RSA */
110 #undef NO_RSA
111 #if 1
112  #ifdef USE_FAST_MATH
113  /* Maximum math bits (Max RSA key bits * 2) */
114  #undef FP_MAX_BITS
115  #define FP_MAX_BITS 4096
116  #endif
117 
118  /* half as much memory but twice as slow */
119  #undef RSA_LOW_MEM
120  //#define RSA_LOW_MEM
121 
122  /* timing resistance */
123  #undef WC_RSA_BLINDING
124  #define WC_RSA_BLINDING
125 #else
126  #define NO_RSA
127 #endif
128 
129 /* AES */
130 #undef NO_AES
131 #if 1
132  #undef HAVE_AES_DECRYPT
133  #define HAVE_AES_DECRYPT
134 
135  #undef HAVE_AESGCM
136  #define HAVE_AESGCM
137 
138  /* GCM Method: GCM_SMALL, GCM_WORD32 or GCM_TABLE */
139  #undef GCM_SMALL
140  #define GCM_SMALL
141 
142  #undef HAVE_AESCCM
143  #define HAVE_AESCCM
144 
145  #undef WOLFSSL_AES_COUNTER
146  #define WOLFSSL_AES_COUNTER
147 
148  #undef WOLFSSL_AES_DIRECT
149  #define WOLFSSL_AES_DIRECT
150 #else
151  #define NO_AES
152 #endif
153 
154 /* DES3 */
155 #undef NO_DES3
156 #if 1
157  #undef WOLFSSL_DES_ECB
158  #define WOLFSSL_DES_ECB
159 #else
160  #define NO_DES3
161 #endif
162 
163 
164 /* ChaCha20 / Poly1305 */
165 #undef HAVE_CHACHA
166 #undef HAVE_POLY1305
167 #if 0
168  #define HAVE_CHACHA
169  #define HAVE_POLY1305
170 
171  /* Needed for Poly1305 */
172  #undef HAVE_ONE_TIME_AUTH
173  #define HAVE_ONE_TIME_AUTH
174 #endif
175 
176 /* Ed25519 / Curve25519 */
177 #undef HAVE_CURVE25519
178 #undef HAVE_ED25519
179 #if 0
180  #define HAVE_CURVE25519
181  #define HAVE_ED25519
182 
183  /* Optionally use small math (less flash usage, but much slower) */
184  #if 0
185  #define CURVED25519_SMALL
186  #endif
187 #endif
188 
189 
190 /* ------------------------------------------------------------------------- */
191 /* Hashing */
192 /* ------------------------------------------------------------------------- */
193 /* Sha */
194 #undef NO_SHA
195 #if 1
196  /* 1k smaller, but 25% slower */
197  //#define USE_SLOW_SHA
198 #else
199  #define NO_SHA
200 #endif
201 
202 /* Sha256 */
203 #undef NO_SHA256
204 #if 1
205 #else
206  #define NO_SHA256
207 #endif
208 
209 /* Sha512 */
210 #undef WOLFSSL_SHA512
211 #if 1
212  #define WOLFSSL_SHA512
213 
214  /* Sha384 */
215  #undef WOLFSSL_SHA384
216  #if 1
217  #define WOLFSSL_SHA384
218  #endif
219 
220  /* over twice as small, but 50% slower */
221  //#define USE_SLOW_SHA2
222 #endif
223 
224 /* MD5 */
225 #undef NO_MD5
226 #if 1
227 #else
228  #define NO_MD5
229 #endif
230 
231 
232 /* ------------------------------------------------------------------------- */
233 /* Benchmark / Test */
234 /* ------------------------------------------------------------------------- */
235 /* Use reduced benchmark / test sizes */
236 #undef BENCH_EMBEDDED
237 #define BENCH_EMBEDDED
238 
239 #undef USE_CERT_BUFFERS_2048
240 #define USE_CERT_BUFFERS_2048
241 
242 #undef USE_CERT_BUFFERS_1024
243 //#define USE_CERT_BUFFERS_1024
244 
245 #undef USE_CERT_BUFFERS_256
246 #define USE_CERT_BUFFERS_256
247 
248 
249 /* ------------------------------------------------------------------------- */
250 /* Time */
251 /* ------------------------------------------------------------------------- */
252 #if 0
253  /* Override Current Time */
254  /* Allows custom "custom_time()" function to be used for benchmark */
255  #define WOLFSSL_USER_CURRTIME
256  #define USER_TICKS
257  extern unsigned long custom_time(unsigned long* timer);
258  #define XTIME custom_time
259 #else
260  #warning Time/RTC disabled
261  #undef NO_ASN_TIME
262  #define NO_ASN_TIME
263 #endif
264 
265 /* ------------------------------------------------------------------------- */
266 /* Debugging */
267 /* ------------------------------------------------------------------------- */
268 #undef DEBUG_WOLFSSL
269 #define DEBUG_WOLFSSL
270 
271 #ifdef DEBUG_WOLFSSL
272  /* Use this to measure / print heap usage */
273  #if 0
274  #undef USE_WOLFSSL_MEMORY
275  #define USE_WOLFSSL_MEMORY
276  #undef WOLFSSL_TRACK_MEMORY
277  #define WOLFSSL_TRACK_MEMORY
278  #endif
279 #else
280  #undef NO_WOLFSSL_MEMORY
281  #define NO_WOLFSSL_MEMORY
282 
283  #undef NO_ERROR_STRINGS
284  //#define NO_ERROR_STRINGS
285 #endif
286 
287 
288 /* ------------------------------------------------------------------------- */
289 /* Enable Features */
290 /* ------------------------------------------------------------------------- */
291 #undef KEEP_PEER_CERT
292 //#define KEEP_PEER_CERT
293 
294 #undef HAVE_COMP_KEY
295 //#define HAVE_COMP_KEY
296 
297 #undef HAVE_TLS_EXTENSIONS
298 //#define HAVE_TLS_EXTENSIONS
299 
300 #undef HAVE_SUPPORTED_CURVES
301 //#define HAVE_SUPPORTED_CURVES
302 
303 #undef WOLFSSL_BASE64_ENCODE
304 //#define WOLFSSL_BASE64_ENCODE
305 
306 /* TLS Session Cache */
307 #if 0
308  #define SMALL_SESSION_CACHE
309 #else
310  #define NO_SESSION_CACHE
311 #endif
312 
313 
314 /* ------------------------------------------------------------------------- */
315 /* Disable Features */
316 /* ------------------------------------------------------------------------- */
317 #undef NO_WOLFSSL_SERVER
318 //#define NO_WOLFSSL_SERVER
319 
320 #undef NO_WOLFSSL_CLIENT
321 //#define NO_WOLFSSL_CLIENT
322 
323 #undef NO_CRYPT_TEST
324 //#define NO_CRYPT_TEST
325 
326 #undef NO_CRYPT_BENCHMARK
327 //#define NO_CRYPT_BENCHMARK
328 
329 /* In-lining of misc.c functions */
330 /* If defined, must include wolfcrypt/src/misc.c in build */
331 /* Slower, but about 1k smaller */
332 #undef NO_INLINE
333 //#define NO_INLINE
334 
335 #undef NO_FILESYSTEM
336 #define NO_FILESYSTEM
337 
338 #undef NO_WRITEV
339 #define NO_WRITEV
340 
341 #undef NO_MAIN_DRIVER
342 #define NO_MAIN_DRIVER
343 
344 #undef NO_DEV_RANDOM
345 #define NO_DEV_RANDOM
346 
347 #undef NO_DSA
348 #define NO_DSA
349 
350 #undef NO_DH
351 #define NO_DH
352 
353 #undef NO_RC4
354 #define NO_RC4
355 
356 #undef NO_OLD_TLS
357 #define NO_OLD_TLS
358 
359 #undef NO_HC128
360 #define NO_HC128
361 
362 #undef NO_RABBIT
363 #define NO_RABBIT
364 
365 #undef NO_PSK
366 #define NO_PSK
367 
368 #undef NO_MD4
369 #define NO_MD4
370 
371 #undef NO_PWDBASED
372 #define NO_PWDBASED
373 
374 #undef NO_CODING
375 //#define NO_CODING
376 
377 
378 /* Suppress array-bounds */
379 #pragma GCC diagnostic ignored "-Warray-bounds"
380 
381 
382 #ifdef __cplusplus
383 }
384 #endif
385 
386 #endif /* WOLFSSL_USER_SETTINGS_H */