NetBurner 3.5.8
PDF Version
SOMRT1061/user_settings.h
1/* user_settings_template.h
2 *
3 * Copyright (C) 2006-2023 wolfSSL Inc.
4 *
5 * This file is part of wolfSSL.
6 *
7 * wolfSSL is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * wolfSSL is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
20 */
21
22#ifndef WOLFSSL_USER_SETTINGS_H
23#define WOLFSSL_USER_SETTINGS_H
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#include <predef.h>
30
31/* =========================================================================
32 * CRYPTO PROFILE SELECTION
33 * =========================================================================
34 * Uncomment ONE of the following to select a crypto profile.
35 * Default (none selected): Full compatibility - TLS 1.2+1.3, all ciphers
36 *
37 * CRYPTO_PROFILE_AESGCM - TLS 1.3 only, AES-GCM ciphers only
38 * Smallest footprint
39 *
40 * CRYPTO_PROFILE_CHACHA - TLS 1.3 only, ChaCha20-Poly1305
41 * Constant-time, no HW AES dependency
42 *
43 * CRYPTO_PROFILE_MINIMAL - Bare minimum for constrained applications
44 * WARNING: Limited cipher support
45 * ========================================================================= */
46// #define CRYPTO_PROFILE_AESGCM
47// #define CRYPTO_PROFILE_CHACHA
48// #define CRYPTO_PROFILE_MINIMAL
49
50#define TARGET_EMBEDDED
51
52/* ------------------------------------------------------------------------- */
53/* Platform */
54/* ------------------------------------------------------------------------- */
55#define WOLFSSL_GENERAL_ALIGNMENT 4
56#define SIZEOF_LONG_LONG 8
57#define WOLFSSL_W64_WRAPPER
58
59/* Enable SSH KDF / extKeyUsage SSH bits used by the NetBurner SSH library */
60#define WOLFSSL_WOLFSSH
61
62/* Keep PQ off by default until size/perf measured */
63#define NO_MLKEM
64#if 0
65 #define NO_64BIT /* disable use of 64-bit variables */
66#endif
67
68#ifdef TARGET_EMBEDDED
69 /* disable mutex locking */
70 // #define SINGLE_THREADED
71
72 /* reduce stack use. For variables over 100 bytes allocate from heap */
73 #define WOLFSSL_SMALL_STACK
74 #define WOLFSSL_SMALL_STACK_CACHE
75
76 /* disable the built-in socket support and use the IO callbacks.
77 * Set with wolfSSL_CTX_SetIORecv/wolfSSL_CTX_SetIOSend
78 */
79 #define WOLFSSL_USER_IO
80#endif
81
82#define WOLFSSL_32BIT_MILLI_TIME
83
84/* ------------------------------------------------------------------------- */
85/* Math Configuration */
86/* ------------------------------------------------------------------------- */
87#define ULLONG_MAX 18446744073709551615ULL
88#define SP_WORD_SIZE 32
89
90#undef USE_FAST_MATH
91#if 0
92 /* fast math (tfmc.) (stack based and timing resistant) */
93 #define USE_FAST_MATH
94 #define TFM_TIMING_RESISTANT
95#else
96 /* normal heap based integer.c (not timing resistant) */
97#endif
98
99/* Wolf Single Precision Math */
100#undef WOLFSSL_SP
101#if 1
102 #define WOLFSSL_SP
103 #define WOLFSSL_HAVE_SP_RSA
104 #define WOLFSSL_HAVE_SP_DH
105 #define WOLFSSL_HAVE_SP_ECC
106 // #define WOLFSSL_SP_4096 /* Enable RSA/DH 4096-bit support. DISABLED: with WOLFSSL_SP_SMALL off (unrolled SP for speed), the unrolled SP-4096 modexp is very stack-heavy and overflows the default MAIN_TASK_STK_SIZE on deep RSA call chains (e.g. the unit tests). 4096-bit keys still work via the generic SP_MATH_ALL path. If you re-enable this, also raise MAIN_TASK_STK_SIZE (and any task that does RSA-4096) by several KB. */
107 #define WOLFSSL_SP_384 /* Enable ECC 384-bit SECP384R1 support */
108
109 // #define WOLFSSL_SP_CACHE_RESISTANT // Disabled: faster variable-time lookups for embedded network
110 // #define WOLFSSL_SP_MATH /* only SP math - disables integer.c/tfm.c */
111 #define WOLFSSL_SP_MATH_ALL /* use SP math for all key sizes and curves */
112
113 //#define WOLFSSL_SP_NO_MALLOC
114 //#define WOLFSSL_SP_DIV_32 /* do not use 64-bit divides */
115
116 #ifdef TARGET_EMBEDDED
117 /* use smaller version of code */
118 // #define WOLFSSL_SP_SMALL // Disabled: RT1061 has 8MB flash, use unrolled SP for speed
119 #else
120 /* SP Assembly Speedups - specific to chip type */
121 #define WOLFSSL_SP_ASM
122 #endif
123 //#define WOLFSSL_SP_X86_64
124 //#define WOLFSSL_SP_X86
125 //#define WOLFSSL_SP_ARM32_ASM
126 //#define WOLFSSL_SP_ARM64_ASM
127 //#define WOLFSSL_SP_ARM_THUMB_ASM
128 #define WOLFSSL_SP_ARM_CORTEX_M_ASM
129#endif
130
131/* ------------------------------------------------------------------------- */
132/* Crypto */
133/* ------------------------------------------------------------------------- */
134/* RSA */
135#undef NO_RSA
136#if 1
137 #ifdef USE_FAST_MATH
138 /* Maximum math bits (Max RSA key bits * 2) */
139 #define FP_MAX_BITS 4096
140 #endif
141
142 /* half as much memory but twice as slow */
143 //#define RSA_LOW_MEM
144
145 /* Enables blinding mode, to prevent timing attacks */
146 #define WC_RSA_BLINDING
147
148 /* RSA PSS Support */
149 #define WC_RSA_PSS
150#else
151 #define NO_RSA
152#endif
153
154/* DH */
155#undef NO_DH
156#if !defined(CRYPTO_PROFILE_AESGCM) && !defined(CRYPTO_PROFILE_CHACHA) && !defined(CRYPTO_PROFILE_MINIMAL)
157 /* Use table for DH instead of -lm (math) lib dependency */
158 #if 1
159 #define WOLFSSL_DH_CONST
160 #define HAVE_FFDHE_2048
161 //#define HAVE_FFDHE_4096
162 //#define HAVE_FFDHE_6144
163 //#define HAVE_FFDHE_8192
164 #endif
165#else
166 #define NO_DH
167#endif
168
169/* ECC */
170#undef HAVE_ECC
171#if 1
172 #define HAVE_ECC
173
174 /* Manually define enabled curves */
175 #define ECC_USER_CURVES
176
177 #ifdef ECC_USER_CURVES
178 /* Manual Curve Selection */
179 // #define HAVE_ECC192
180 // #define HAVE_ECC224
181 #undef NO_ECC256
182 #ifdef ENABLE_ECC384
183 #define HAVE_ECC384
184 #else
185 /* wolfSSL 5.9.1 preferredGroup[] in tls.c gates SECP384R1 on
186 * !NO_ECC384 (not on HAVE_ECC384), but TLSX_KeyShare_GenEccKey gates
187 * its switch arm on HAVE_ECC384. Without explicit NO_ECC384, TLS 1.3
188 * client advertises SECP384R1 then key gen returns BAD_FUNC_ARG. */
189 #define NO_ECC384
190 #endif
191 #ifdef ENABLE_ECC521
192 // #define HAVE_ECC521
193 #else
194 /* Same preferredGroup vs. TLSX_KeyShare_GenEccKey asymmetry as
195 * NO_ECC384 above, but for SECP521R1. */
196 #define NO_ECC521
197 #endif
198 #endif
199
200 /* Fixed point cache (speeds repeated operations against same private key) */
201 #define FP_ECC
202 #ifdef FP_ECC
203 /* Bits / Entries */
204 #define FP_ENTRIES 15
205 #define FP_LUT 4
206 #endif
207
208 /* Optional ECC calculation method */
209 /* Note: doubles heap usage, but slightly faster */
210 #define ECC_SHAMIR
211
212 /* Reduces heap usage, but slower */
213 // #define ECC_TIMING_RESISTANT
214
215 /* Compressed ECC Key Support */
216 //#define HAVE_COMP_KEY
217
218 /* Use alternate ECC size for ECC math */
219 #ifdef USE_FAST_MATH
220 /* MAX ECC BITS = ROUND8(MAX ECC) * 2 */
221 #if defined(NO_RSA) && defined(NO_DH)
222 /* Custom fastmath size if not using RSA/DH */
223 #define FP_MAX_BITS (256 * 2)
224 #else
225 /* use heap allocation for ECC points */
226 #define ALT_ECC_SIZE
227
228 /* wolfSSL will compute the FP_MAX_BITS_ECC, but it can be overriden */
229 //#define FP_MAX_BITS_ECC (256 * 2)
230 #endif
231
232 /* Speedups specific to curve */
233 #ifndef NO_ECC256
234 #define TFM_ECC256
235 #endif
236 #endif
237#endif
238
239
240/* AES */
241#undef NO_AES
242#if 1
243 #define HAVE_AES_CBC
244
245 #define HAVE_AESGCM
246
247 /* GCM Method: GCM_TABLE_4BIT, GCM_SMALL, GCM_WORD32 or GCM_TABLE */
248 // Listed in order of speed and memory usage
249 #define GCM_TABLE
250 // #define GCM_WORD32
251 // #define GCM_TABLE_4BIT
252 // #define GCM_SMALL
253
254 //#define WOLFSSL_AES_DIRECT
255 //#define HAVE_AES_ECB
256 //#define WOLFSSL_AES_COUNTER
257 #define HAVE_AESCCM
258#else
259 #define NO_AES
260#endif
261
262
263/* DES3 */
264#undef NO_DES3
265#if !defined(CRYPTO_PROFILE_AESGCM) && !defined(CRYPTO_PROFILE_CHACHA) && !defined(CRYPTO_PROFILE_MINIMAL)
266#else
267 #define NO_DES3
268#endif
269
270/* ChaCha20 / Poly1305 */
271#undef HAVE_CHACHA
272#undef HAVE_POLY1305
273#if !defined(CRYPTO_PROFILE_AESGCM) && !defined(CRYPTO_PROFILE_MINIMAL)
274 #define HAVE_CHACHA
275 #define HAVE_POLY1305
276
277 /* Needed for Poly1305 */
278 #define HAVE_ONE_TIME_AUTH
279#endif
280
281/* Ed25519 / Curve25519 */
282#undef HAVE_CURVE25519
283#undef HAVE_ED25519
284#if !defined(CRYPTO_PROFILE_AESGCM) && !defined(CRYPTO_PROFILE_MINIMAL)
285 #define HAVE_CURVE25519
286 #define HAVE_ED25519 /* ED25519 Requires SHA512 */
287
288 /* Optionally use small math (less flash usage, but much slower) */
289 #if 0
290 #define CURVED25519_SMALL
291 #endif
292#endif
293
294
295/* ------------------------------------------------------------------------- */
296/* Hashing */
297/* ------------------------------------------------------------------------- */
298/* Sha */
299#undef NO_SHA
300#if 1
301 /* 1k smaller, but 25% slower */
302 //#define USE_SLOW_SHA
303#else
304 #define NO_SHA
305#endif
306
307/* Sha256 */
308#undef NO_SHA256
309#if 1
310 /* not unrolled - ~2k smaller and ~25% slower */
311 //#define USE_SLOW_SHA256
312
313 /* Sha224 */
314 #if 0
315 #define WOLFSSL_SHA224
316 #endif
317#else
318 #define NO_SHA256
319#endif
320
321/* Sha512 */
322#undef WOLFSSL_SHA512
323#if 1
324 #define WOLFSSL_SHA512
325
326 /* Sha384 */
327 #undef WOLFSSL_SHA384
328 #if 1
329 #define WOLFSSL_SHA384
330 #endif
331
332 /* over twice as small, but 50% slower */
333 //#define USE_SLOW_SHA512
334#endif
335
336/* Sha3 */
337#undef WOLFSSL_SHA3
338#if 0
339 #define WOLFSSL_SHA3
340#endif
341
342/* MD5 */
343#undef NO_MD5
344#if 0
345
346#else
347 #define NO_MD5
348#endif
349
350/* HKDF */
351#undef HAVE_HKDF
352#if 1
353 #define HAVE_HKDF
354#endif
355
356/* CMAC */
357#undef WOLFSSL_CMAC
358#if 0
359 #define WOLFSSL_CMAC
360#endif
361
362
363/* ------------------------------------------------------------------------- */
364/* Benchmark / Test */
365/* ------------------------------------------------------------------------- */
366#ifdef TARGET_EMBEDDED
367 /* Use reduced benchmark / test sizes */
368 #define BENCH_EMBEDDED
369#endif
370
371/* Use test buffers from array (not filesystem) */
372#ifndef NO_FILESYSTEM
373#define USE_CERT_BUFFERS_256
374#define USE_CERT_BUFFERS_2048
375#endif
376
377/* ------------------------------------------------------------------------- */
378/* Debugging */
379/* To enable, call wolfSSL_Debugging_ON(); where debug output is wanted */
380/* ------------------------------------------------------------------------- */
381
382#undef DEBUG_WOLFSSL
383#undef NO_ERROR_STRINGS
384#if 0
385 #define DEBUG_WOLFSSL
386#else
387 #if 0
388 #define NO_ERROR_STRINGS
389 #endif
390#endif
391
392// Prints out the TLS secrets to the console, allowing for decryption of the TLS stream
393// #define SHOW_SECRETS
394// #define HAVE_SECRET_CALLBACK
395
396/* ------------------------------------------------------------------------- */
397/* Memory */
398/* ------------------------------------------------------------------------- */
399
400/* TLS SRAM pool size in KB for NBMalloc allocator */
401#define WOLFSSL_TLS_SRAM_KB 32
402
403/* Override Memory API's */
404#ifdef SSL_CUSTOM_MALLOC
405 #define XMALLOC_OVERRIDE
406
407 /* prototypes for user heap override functions */
408 /* Note: Realloc only required for normal math */
409 #include <stddef.h> /* for size_t */
410
411 extern void* NBMalloc(size_t n);
412 extern void NBFree(void *p);
413 extern void* NBRealloc(void *p, size_t n);
414
415 #define XMALLOC(n, h, t) NBMalloc(n)
416 #define XFREE(p, h, t) NBFree(p)
417 #define XREALLOC(p, n, h, t) NBRealloc(p, n)
418
419 // Platform specific fastest memory location
420 #if SSL_CUSTOM_MALLOC == 1 // Fastest memory on platform
421 #define CREATE_MEMORY_ALLOCATOR(name,size) CREATE_MEMORY_ALLOCATOR_TCM(name,size)
422 #define CREATE_MEMORY_BUFFER(name,size) CREATE_MEMORY_BUFFER_TCM(name,size)
423 #elif SSL_CUSTOM_MALLOC == 2
424 #define CREATE_MEMORY_ALLOCATOR(name,size) CREATE_MEMORY_ALLOCATOR_TCM(name,size)
425 #define CREATE_MEMORY_BUFFER(name,size) CREATE_MEMORY_BUFFER_TCM(name,size)
426 #elif SSL_CUSTOM_MALLOC == 3
427 #define CREATE_MEMORY_ALLOCATOR(name,size) CREATE_MEMORY_ALLOCATOR_SRAM(name,size)
428 #define CREATE_MEMORY_BUFFER(name,size) CREATE_MEMORY_BUFFER_SRAM(name,size)
429 #elif SSL_CUSTOM_MALLOC == 4
430 #define CREATE_MEMORY_ALLOCATOR(name,size) CREATE_MEMORY_ALLOCATOR_SDRAM(name,size)
431 #define CREATE_MEMORY_BUFFER(name,size) CREATE_MEMORY_BUFFER_SDRAM(name,size)
432 #endif
433#endif
434
435#if 0
436 /* Static memory requires fast math */
437 #define WOLFSSL_STATIC_MEMORY
438
439 /* Disable fallback malloc/free */
440 #define WOLFSSL_NO_MALLOC
441 #if 1
442 #define WOLFSSL_MALLOC_CHECK /* trap malloc failure */
443 #endif
444#endif
445
446/* Memory callbacks */
447#if 1
448 #undef USE_WOLFSSL_MEMORY
449 #define USE_WOLFSSL_MEMORY
450
451 /* Use this to measure / print heap usage */
452 #if 0
453 #define WOLFSSL_TRACK_MEMORY
454 #define WOLFSSL_DEBUG_MEMORY
455 #endif
456#else
457 #ifndef WOLFSSL_STATIC_MEMORY
458 #define NO_WOLFSSL_MEMORY
459 /* Otherwise we will use stdlib malloc, free and realloc */
460 #endif
461#endif
462
463
464/* ------------------------------------------------------------------------- */
465/* Port */
466/* ------------------------------------------------------------------------- */
467
468/* Override Current Time */
469#if 1
470 /* Allows custom "custom_time()" function to be used for benchmark */
471 #define WOLFSSL_USER_CURRTIME
472 // #define WOLFSSL_GMTIME
473 #define USER_TICKS
474 #include <time.h>
475 extern unsigned long my_time(time_t *timer);
476 #define XTIME my_time
477#endif
478
479
480/* ------------------------------------------------------------------------- */
481/* RNG */
482/* ------------------------------------------------------------------------- */
483
484/* Choose RNG method */
485#if 1
486 /* Custom Seed Source */
487 #if 1
488 /* Size of returned HW RNG value */
489 #define CUSTOM_RAND_TYPE unsigned int
490 extern unsigned int my_rng_seed_gen(void);
491 #undef CUSTOM_RAND_GENERATE
492 #define CUSTOM_RAND_GENERATE my_rng_seed_gen
493 #endif
494
495 // NetBurner specific define for enabling hardware random number generation for M7
496 #define GATHER_RANDOM_USE_HW
497
498 /* Use built-in P-RNG (SHA256 based) with HW RNG */
499 /* P-RNG + HW RNG (P-RNG is ~8K) */
500 #undef HAVE_HASHDRBG
501 #define HAVE_HASHDRBG
502#else
503 #undef WC_NO_HASHDRBG
504 #define WC_NO_HASHDRBG
505
506 /* Bypass P-RNG and use only HW RNG */
507 extern int my_rng_gen_block(unsigned char* output, unsigned int sz);
508 #undef CUSTOM_RAND_GENERATE_BLOCK
509 #define CUSTOM_RAND_GENERATE_BLOCK my_rng_gen_block
510#endif
511
512
513/* ------------------------------------------------------------------------- */
514/* Custom Standard Lib */
515/* ------------------------------------------------------------------------- */
516/* Allows override of all standard library functions */
517#undef STRING_USER
518#if 0
519 #define STRING_USER
520
521 #include <string.h>
522
523 #define USE_WOLF_STRSEP
524 #define XSTRSEP(s1,d) wc_strsep((s1),(d))
525
526 #define USE_WOLF_STRTOK
527 #define XSTRTOK(s1,d,ptr) wc_strtok((s1),(d),(ptr))
528
529 #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n))
530
531 #define XMEMCPY(d,s,l) memcpy((d),(s),(l))
532 #define XMEMSET(b,c,l) memset((b),(c),(l))
533 #define XMEMCMP(s1,s2,n) memcmp((s1),(s2),(n))
534 #define XMEMMOVE(d,s,l) memmove((d),(s),(l))
535
536 #define XSTRLEN(s1) strlen((s1))
537 #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n))
538 #define XSTRSTR(s1,s2) strstr((s1),(s2))
539
540 #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n))
541 #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n))
542 #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n))
543
544 #define XSNPRINTF snprintf
545#endif
546
547
548
549/* ------------------------------------------------------------------------- */
550/* Enable Features */
551/* ------------------------------------------------------------------------- */
552
553#ifdef SSL_TLS_1_3_SUPPORT // defined in predef.h
554#define WOLFSSL_TLS13
555/* OPTIMIZATION: 0-RTT for faster TLS 1.3 session resumption */
556#define WOLFSSL_EARLY_DATA
557#endif
558/* Non-default profiles disable TLS 1.2 for smaller footprint */
559#if defined(CRYPTO_PROFILE_AESGCM) || defined(CRYPTO_PROFILE_CHACHA) || defined(CRYPTO_PROFILE_MINIMAL)
560#define WOLFSSL_NO_TLS12
561#endif
562#define WOLFSSL_OLD_PRIME_CHECK /* Use faster DH prime checking */
563#define HAVE_TLS_EXTENSIONS
564#define HAVE_SUPPORTED_CURVES
565#define WOLFSSL_BASE64_ENCODE
566
567
568#define WOLFSSL_KEY_GEN /* For RSA Key gen only */
569#define KEEP_PEER_CERT
570//#define HAVE_COMP_KEY
571
572/* TLS Session Cache */
573#if 1
574 #define SMALL_SESSION_CACHE
575 #define NO_SESSION_CACHE_REF
576#else
577 #define NO_SESSION_CACHE
578#endif
579
580#define HAVE_ONE_TIME_AUTH
581#define HAVE_SNI
582#define HAVE_SESSION_TICKET
583/* OPTIMIZATION: Smaller certificate verification code path */
584#define WOLFSSL_SMALL_CERT_VERIFY
585
586// Allows WolfSSL to malloc the tls 1.3 ticket nonce, instead of using a static buffer. This supports large ticket nonces
587#define WOLFSSL_TICKET_NONCE_MALLOC
588
589/* ------------------------------------------------------------------------- */
590/* Disable Features */
591/* ------------------------------------------------------------------------- */
592//#define NO_WOLFSSL_SERVER
593//#define NO_WOLFSSL_CLIENT
594//#define NO_CRYPT_TEST
595//#define NO_CRYPT_BENCHMARK
596//#define WOLFCRYPT_ONLY
597
598/* In-lining of misc.c functions */
599/* If defined, must include wolfcrypt/src/misc.c in build */
600/* Slower, but about 1k smaller */
601// #define NO_INLINE
602
603#define WOLFSSL_NO_SOCK
604#define NO_WOLFSSL_DIR
605
606#ifdef TARGET_EMBEDDED
607 #define NO_FILESYSTEM
608 #define NO_WRITEV
609 #define NO_MAIN_DRIVER
610 #define NO_DEV_RANDOM
611#endif
612
613#define NO_OLD_TLS
614#define NO_PSK
615
616#define NO_DSA
617// #define NO_RC4
618#define NO_MD4
619#define NO_PWDBASED
620//#define NO_CODING
621//#define NO_ASN_TIME
622//#define NO_CERTS
623//#define NO_SIG_WRAPPER
624
625#define NO_HC128
626#define NO_RABBIT
627
628#define WOLFSSL_IGNORE_FILE_WARN
629
630#undef NO_TLS
631
632#if !defined(CRYPTO_PROFILE_AESGCM) && !defined(CRYPTO_PROFILE_CHACHA) && !defined(CRYPTO_PROFILE_MINIMAL)
633// Settings made for TLS 1.2 backward compatibility
634#define WOLFSSL_STATIC_RSA // Needed to support TLS_RSA_WITH_AES_128_CBC_SHA
635#define WOLFSSL_STATIC_DH // Needed to support TLS_ECDH_ECDSA_WITH_RC4_128_SHA
636#endif
637#define WOLFSSL_AES_128 // Needed to support TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256
638#define WOLFSSL_AES_256 // Needed to support TLS_RSA_WITH_AES_256_CBC_SHA256
639
640#define WOLFSSL_CERT_REQ
641#define WOLFSSL_CERT_GEN
642#define WOLFSSL_ALT_NAMES
643#define WOLFSSL_DER_TO_PEM
644#define WOLFSSL_KEY_GEN
645#define WOLFSSL_EITHER_SIDE
646
647#define ENABLE_ECCKEY_CREATE // Custom define, maybe should move to predef?
648#define ENABLE_RSAKEY_CREATE // Custom define, maybe should move to predef?
649
650 // For wolfSSH
651 //#undef WOLFSSH_SFTP
652 //#define WOLFSSH_SFTP
653
654 //#undef WOLFSSH_SCP
655 //#define WOLFSSH_SCP
656
657#undef WOLFSSH_USER_IO
658#define WOLFSSH_USER_IO
659
660#ifdef __cplusplus
661}
662#endif
663
664#endif /* WOLFSSL_USER_SETTINGS_H */