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