NetBurner 3.5.8
PDF Version
MON_RT10xx/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/RH 4096-bit support */
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: RT10xx/RT11xx have large 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/* Override Memory API's */
405#ifdef SSL_CUSTOM_MALLOC
406 #define XMALLOC_OVERRIDE
407
408 /* prototypes for user heap override functions */
409 /* Note: Realloc only required for normal math */
410 #include <stddef.h> /* for size_t */
411
412 extern void* NBMalloc(size_t n);
413 extern void NBFree(void *p);
414 extern void* NBRealloc(void *p, size_t n);
415
416 #define XMALLOC(n, h, t) NBMalloc(n)
417 #define XFREE(p, h, t) NBFree(p)
418 #define XREALLOC(p, n, h, t) NBRealloc(p, n)
419
420 // Platform specific fastest memory location
421 #if SSL_CUSTOM_MALLOC == 1 // Fastest memory on platform
422 #define CREATE_MEMORY_ALLOCATOR(name,size) CREATE_MEMORY_ALLOCATOR_SRAM(name,size)
423 #define CREATE_MEMORY_BUFFER(name,size) CREATE_MEMORY_BUFFER_SRAM(name,size)
424 #elif SSL_CUSTOM_MALLOC == 2
425 #define CREATE_MEMORY_ALLOCATOR(name,size) CREATE_MEMORY_ALLOCATOR_TCM(name,size)
426 #define CREATE_MEMORY_BUFFER(name,size) CREATE_MEMORY_BUFFER_TCM(name,size)
427 #elif SSL_CUSTOM_MALLOC == 3
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 == 4
431 #define CREATE_MEMORY_ALLOCATOR(name,size) CREATE_MEMORY_ALLOCATOR_SDRAM(name,size)
432 #define CREATE_MEMORY_BUFFER(name,size) CREATE_MEMORY_BUFFER_SDRAM(name,size)
433 #endif
434#endif
435
436#if 0
437 /* Static memory requires fast math */
438 #define WOLFSSL_STATIC_MEMORY
439
440 /* Disable fallback malloc/free */
441 #define WOLFSSL_NO_MALLOC
442 #if 1
443 #define WOLFSSL_MALLOC_CHECK /* trap malloc failure */
444 #endif
445#endif
446
447/* Memory callbacks */
448#if 1
449 #undef USE_WOLFSSL_MEMORY
450 #define USE_WOLFSSL_MEMORY
451
452 /* Use this to measure / print heap usage */
453 #if 0
454 #define WOLFSSL_TRACK_MEMORY
455 #define WOLFSSL_DEBUG_MEMORY
456 #endif
457#else
458 #ifndef WOLFSSL_STATIC_MEMORY
459 #define NO_WOLFSSL_MEMORY
460 /* Otherwise we will use stdlib malloc, free and realloc */
461 #endif
462#endif
463
464
465/* ------------------------------------------------------------------------- */
466/* Port */
467/* ------------------------------------------------------------------------- */
468
469/* Override Current Time */
470#if 1
471 /* Allows custom "custom_time()" function to be used for benchmark */
472 #define WOLFSSL_USER_CURRTIME
473 // #define WOLFSSL_GMTIME
474 #define USER_TICKS
475 #include <time.h>
476 extern unsigned long my_time(time_t *timer);
477 #define XTIME my_time
478#endif
479
480
481/* ------------------------------------------------------------------------- */
482/* RNG */
483/* ------------------------------------------------------------------------- */
484
485/* Choose RNG method */
486#if 1
487 /* Custom Seed Source */
488 #if 1
489 /* Size of returned HW RNG value */
490 #define CUSTOM_RAND_TYPE unsigned int
491 extern unsigned int my_rng_seed_gen(void);
492 #undef CUSTOM_RAND_GENERATE
493 #define CUSTOM_RAND_GENERATE my_rng_seed_gen
494 #endif
495
496 // NetBurner specific define for enabling hardware random number generation for M7
497 #define GATHER_RANDOM_USE_HW
498
499 /* Use built-in P-RNG (SHA256 based) with HW RNG */
500 /* P-RNG + HW RNG (P-RNG is ~8K) */
501 #undef HAVE_HASHDRBG
502 #define HAVE_HASHDRBG
503#else
504 #undef WC_NO_HASHDRBG
505 #define WC_NO_HASHDRBG
506
507 /* Bypass P-RNG and use only HW RNG */
508 extern int my_rng_gen_block(unsigned char* output, unsigned int sz);
509 #undef CUSTOM_RAND_GENERATE_BLOCK
510 #define CUSTOM_RAND_GENERATE_BLOCK my_rng_gen_block
511#endif
512
513
514/* ------------------------------------------------------------------------- */
515/* Custom Standard Lib */
516/* ------------------------------------------------------------------------- */
517/* Allows override of all standard library functions */
518#undef STRING_USER
519#if 0
520 #define STRING_USER
521
522 #include <string.h>
523
524 #define USE_WOLF_STRSEP
525 #define XSTRSEP(s1,d) wc_strsep((s1),(d))
526
527 #define USE_WOLF_STRTOK
528 #define XSTRTOK(s1,d,ptr) wc_strtok((s1),(d),(ptr))
529
530 #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n))
531
532 #define XMEMCPY(d,s,l) memcpy((d),(s),(l))
533 #define XMEMSET(b,c,l) memset((b),(c),(l))
534 #define XMEMCMP(s1,s2,n) memcmp((s1),(s2),(n))
535 #define XMEMMOVE(d,s,l) memmove((d),(s),(l))
536
537 #define XSTRLEN(s1) strlen((s1))
538 #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n))
539 #define XSTRSTR(s1,s2) strstr((s1),(s2))
540
541 #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n))
542 #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n))
543 #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n))
544
545 #define XSNPRINTF snprintf
546#endif
547
548
549
550/* ------------------------------------------------------------------------- */
551/* Enable Features */
552/* ------------------------------------------------------------------------- */
553
554#ifdef SSL_TLS_1_3_SUPPORT // defined in predef.h
555#define WOLFSSL_TLS13
556/* OPTIMIZATION: 0-RTT for faster TLS 1.3 session resumption */
557#define WOLFSSL_EARLY_DATA
558#endif
559/* Non-default profiles disable TLS 1.2 for smaller footprint */
560#if defined(CRYPTO_PROFILE_AESGCM) || defined(CRYPTO_PROFILE_CHACHA) || defined(CRYPTO_PROFILE_MINIMAL)
561#define WOLFSSL_NO_TLS12
562#endif
563#define WOLFSSL_OLD_PRIME_CHECK /* Use faster DH prime checking */
564#define HAVE_TLS_EXTENSIONS
565#define HAVE_SUPPORTED_CURVES
566#define WOLFSSL_BASE64_ENCODE
567
568
569#define WOLFSSL_KEY_GEN /* For RSA Key gen only */
570#define KEEP_PEER_CERT
571//#define HAVE_COMP_KEY
572
573/* TLS Session Cache */
574#if 1
575 #define NO_SESSION_CACHE_REF
576 #define SMALL_SESSION_CACHE
577#else
578 #define NO_SESSION_CACHE
579#endif
580
581#define HAVE_ONE_TIME_AUTH
582#define HAVE_SNI
583#define HAVE_SESSION_TICKET
584/* OPTIMIZATION: Smaller certificate verification code path */
585#define WOLFSSL_SMALL_CERT_VERIFY
586
587// Allows WolfSSL to malloc the tls 1.3 ticket nonce, instead of using a static buffer. This supports large ticket nonces
588#define WOLFSSL_TICKET_NONCE_MALLOC
589
590/* ------------------------------------------------------------------------- */
591/* Disable Features */
592/* ------------------------------------------------------------------------- */
593//#define NO_WOLFSSL_SERVER
594//#define NO_WOLFSSL_CLIENT
595//#define NO_CRYPT_TEST
596//#define NO_CRYPT_BENCHMARK
597//#define WOLFCRYPT_ONLY
598
599/* In-lining of misc.c functions */
600/* If defined, must include wolfcrypt/src/misc.c in build */
601/* Slower, but about 1k smaller */
602//#define NO_INLINE
603
604#define WOLFSSL_NO_SOCK
605#define NO_WOLFSSL_DIR
606
607#ifdef TARGET_EMBEDDED
608 #define NO_FILESYSTEM
609 #define NO_WRITEV
610 #define NO_MAIN_DRIVER
611 #define NO_DEV_RANDOM
612#endif
613
614#define NO_OLD_TLS
615#define NO_PSK
616
617#define NO_DSA
618// #define NO_RC4
619#define NO_MD4
620#define NO_PWDBASED
621//#define NO_CODING
622//#define NO_ASN_TIME
623//#define NO_CERTS
624//#define NO_SIG_WRAPPER
625
626#define NO_HC128
627#define NO_RABBIT
628
629#define WOLFSSL_IGNORE_FILE_WARN
630
631#undef NO_TLS
632
633#if !defined(CRYPTO_PROFILE_AESGCM) && !defined(CRYPTO_PROFILE_CHACHA) && !defined(CRYPTO_PROFILE_MINIMAL)
634// Settings made for TLS 1.2 backward compatibility
635#define WOLFSSL_STATIC_RSA // Needed to support TLS_RSA_WITH_AES_128_CBC_SHA
636#define WOLFSSL_STATIC_DH // Needed to support TLS_ECDH_ECDSA_WITH_RC4_128_SHA
637#endif
638#define WOLFSSL_AES_128 // Needed to support TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256
639#define WOLFSSL_AES_256 // Needed to support TLS_RSA_WITH_AES_256_CBC_SHA256
640
641#define WOLFSSL_CERT_REQ
642#define WOLFSSL_CERT_GEN
643#define WOLFSSL_ALT_NAMES
644#define WOLFSSL_DER_TO_PEM
645#define WOLFSSL_KEY_GEN
646#define WOLFSSL_EITHER_SIDE
647
648#define ENABLE_ECCKEY_CREATE // Custom define, maybe should move to predef?
649#define ENABLE_RSAKEY_CREATE // Custom define, maybe should move to predef?
650
651 // For wolfSSH
652 //#undef WOLFSSH_SFTP
653 //#define WOLFSSH_SFTP
654
655 //#undef WOLFSSH_SCP
656 //#define WOLFSSH_SCP
657
658#undef WOLFSSH_USER_IO
659#define WOLFSSH_USER_IO
660
661#ifdef __cplusplus
662}
663#endif
664
665#endif /* WOLFSSL_USER_SETTINGS_H */