SharkSSL™ Embedded SSL/TLS Stack
SharkSSL_cfg.h
1/*
2 * ____ _________ __ _
3 * / __ \___ ____ _/ /_ __(_)___ ___ ___ / / ____ ____ _(_)____
4 * / /_/ / _ \/ __ `/ / / / / / __ `__ \/ _ \/ / / __ \/ __ `/ / ___/
5 * / _, _/ __/ /_/ / / / / / / / / / / / __/ /___/ /_/ / /_/ / / /__
6 * /_/ |_|\___/\__,_/_/ /_/ /_/_/ /_/ /_/\___/_____/\____/\__, /_/\___/
7 * /____/
8 *
9 * SharkSSL Embedded SSL/TLS Stack
10 ****************************************************************************
11 * PROGRAM MODULE
12 *
13 * $Id: SharkSSL_cfg.h 6044 2026-09-17 21:15:57Z gianluca $
14 *
15 * COPYRIGHT: Real Time Logic LLC, 2010 - 2026
16 *
17 * This software is copyrighted by and is the sole property of Real
18 * Time Logic LLC. All rights, title, ownership, or other interests in
19 * the software remain the property of Real Time Logic LLC. This
20 * software may only be used in accordance with the terms and
21 * conditions stipulated in the corresponding license agreement under
22 * which the software has been supplied. Any unauthorized use,
23 * duplication, transmission, distribution, or disclosure of this
24 * software is expressly forbidden.
25 *
26 * This Copyright notice may not be removed or modified without prior
27 * written consent of Real Time Logic LLC.
28 *
29 * Real Time Logic LLC. reserves the right to modify this software
30 * without notice.
31 *
32 * http://www.realtimelogic.com
33 * http://www.sharkssl.com
34 ****************************************************************************
35
36
37 Do not directly edit the options in this file. Instead, add your
38 custom options in SharkSSL_opts.h
39
40 */
41#ifndef _SharkSsl_cfg_h
42#define _SharkSsl_cfg_h
43
44#include "SharkSSL_opts.h"
45
53#ifndef SHARKSSL_TLS_1_3
54#define SHARKSSL_TLS_1_3 1
55#endif
56
60#ifndef SHARKSSL_TLS_1_2
61#define SHARKSSL_TLS_1_2 1
62#endif
63
66#ifndef SHARKSSL_USE_AES_256
67#define SHARKSSL_USE_AES_256 1
68#endif
69
72#ifndef SHARKSSL_USE_AES_128
73#define SHARKSSL_USE_AES_128 1
74#endif
75
79#ifndef SHARKSSL_USE_AES_192
80#define SHARKSSL_USE_AES_192 0
81#endif
82
86#ifndef SHARKSSL_ENABLE_AES_GCM
87#define SHARKSSL_ENABLE_AES_GCM 1
88#endif
89
93#ifndef SHARKSSL_ENABLE_AES_CCM
94#define SHARKSSL_ENABLE_AES_CCM 0
95#endif
96
101#ifndef SHARKSSL_ENABLE_AES_CBC
102#define SHARKSSL_ENABLE_AES_CBC 0
103#endif
104
109#ifndef SHARKSSL_USE_CHACHA20
110#define SHARKSSL_USE_CHACHA20 1
111#endif
112
113
123#ifndef SHARKSSL_USE_SHA_256
124#define SHARKSSL_USE_SHA_256 1
125#endif
126
130#ifndef SHARKSSL_USE_SHA_384
131#define SHARKSSL_USE_SHA_384 1
132#endif
133
137#ifndef SHARKSSL_USE_SHA_512
138#define SHARKSSL_USE_SHA_512 0
139#endif
140
141
146#ifndef SHARKSSL_USE_SHA1
147#define SHARKSSL_USE_SHA1 0
148#endif
149
152#ifndef SHARKSSL_USE_MD5
153#define SHARKSSL_USE_MD5 0
154#endif
155
160#ifndef SHARKSSL_USE_POLY1305
161#define SHARKSSL_USE_POLY1305 1
162#endif
163 /* end group SharkSslCfgHash */
165
166
169#ifndef SHARKSSL_SSL_SERVER_CODE
170#define SHARKSSL_SSL_SERVER_CODE 1
171#endif
172
173
176#ifndef SHARKSSL_ENABLE_CLIENT_AUTH
177#define SHARKSSL_ENABLE_CLIENT_AUTH 1
178#endif
179
180
188#ifndef SHARKSSL_ENABLE_POST_HANDSHAKE_AUTH
189#define SHARKSSL_ENABLE_POST_HANDSHAKE_AUTH 0
190#endif
191
192
201#ifndef SHARKSSL_MAX_HANDSHAKE_LENGTH
202#define SHARKSSL_MAX_HANDSHAKE_LENGTH 0x00004000UL
203#endif
204
205
214#ifndef SHARKSSL_ENABLE_KEY_UPDATE
215#define SHARKSSL_ENABLE_KEY_UPDATE SHARKSSL_TLS_1_3
216#endif
217
218
228#ifndef SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD
229#define SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD 0x00800000UL
230#endif
231
232
235#ifndef SHARKSSL_SSL_CLIENT_CODE
236#define SHARKSSL_SSL_CLIENT_CODE 1
237#endif
238
239
242#ifndef SHARKSSL_RANDOMIZE_EXTENSIONS
243#define SHARKSSL_RANDOMIZE_EXTENSIONS 1
244#endif
245
246
249#ifndef SHARKSSL_ENABLE_SNI
250#define SHARKSSL_ENABLE_SNI 1
251#endif
252
253
258#ifndef SHARKSSL_ENABLE_CA_EXTENSION
259#define SHARKSSL_ENABLE_CA_EXTENSION 1
260#endif
261
262
265#ifndef SHARKSSL_ENABLE_RSA
266#define SHARKSSL_ENABLE_RSA 1
267#endif
268
269
272#ifndef SHARKSSL_ENABLE_SESSION_CACHE
273#define SHARKSSL_ENABLE_SESSION_CACHE 1
274#endif
275
276
283#ifndef SHARKSSL_ENABLE_SECURE_RENEGOTIATION
284#define SHARKSSL_ENABLE_SECURE_RENEGOTIATION SHARKSSL_TLS_1_2
285#endif
286
287
292#ifndef SHARKSSL_ENABLE_DHE_RSA
293#define SHARKSSL_ENABLE_DHE_RSA 0
294#endif
295
296
300#undef SHARKSSL_USE_SHA_256
301#define SHARKSSL_USE_SHA_256 1
302
303
306#ifndef SHARKSSL_ENABLE_SELECT_CIPHERSUITE
307#define SHARKSSL_ENABLE_SELECT_CIPHERSUITE 1
308#endif
309
310
315#ifndef SHARKSSL_SELECT_CIPHERSUITE_LIST_DEPTH
316#define SHARKSSL_SELECT_CIPHERSUITE_LIST_DEPTH 8
317#endif
318
319
322#ifndef SHARKSSL_ENABLE_ALPN_EXTENSION
323#define SHARKSSL_ENABLE_ALPN_EXTENSION 1
324#endif
325
326
331#ifndef SHARKSSL_ENABLE_RSA_API
332#define SHARKSSL_ENABLE_RSA_API 1
333#endif
334
335
340#ifndef SHARKSSL_ENABLE_RSA_PKCS1
341#define SHARKSSL_ENABLE_RSA_PKCS1 1
342#endif
343
344
352#ifndef SHARKSSL_ENABLE_RSASSA_PSS
353#define SHARKSSL_ENABLE_RSASSA_PSS 1
354#endif
355
356
360#ifndef SHARKSSL_ENABLE_RSA_OAEP
361#define SHARKSSL_ENABLE_RSA_OAEP 0
362#endif
363
364
368#ifndef SHARKSSL_ENABLE_ECDSA_API
369#define SHARKSSL_ENABLE_ECDSA_API 1
370#endif
371
372
379#ifndef SHARKSSL_ECDSA_ONLY_VERIFY
380#define SHARKSSL_ECDSA_ONLY_VERIFY 0
381#endif
382
383
390#ifndef SHARKSSL_ENABLE_PEM_API
391#define SHARKSSL_ENABLE_PEM_API 1
392#endif
393
394
399#ifndef SHARKSSL_ENABLE_ENCRYPTED_PKCS8_SUPPORT
400#define SHARKSSL_ENABLE_ENCRYPTED_PKCS8_SUPPORT 0
401#endif
402
403
406#ifndef SHARKSSL_ENABLE_INFO_API
407#define SHARKSSL_ENABLE_INFO_API 1
408#endif
409
410
413#ifndef SHARKSSL_ENABLE_CERT_CHAIN
414#define SHARKSSL_ENABLE_CERT_CHAIN 1
415#endif
416
417
421#ifndef SHARKSSL_ENABLE_CA_LIST
422#define SHARKSSL_ENABLE_CA_LIST 1
423#endif
424
425
428#ifndef SHARKSSL_ENABLE_CERTSTORE_API
429#define SHARKSSL_ENABLE_CERTSTORE_API 1
430#endif
431
432
435#ifdef SHARKSSL_ENABLE_CLONE_CERTINFO
436#if (!SHARKSSL_ENABLE_CLONE_CERTINFO)
437#error SHARKSSL_ENABLE_CLONE_CERTINFO is now enabled by default - please remove its #define
438#endif
439#endif
440
441
445#ifndef SHARKSSL_ENABLE_CERT_KEYUSAGE
446#define SHARKSSL_ENABLE_CERT_KEYUSAGE 0
447#endif
448
449
456#ifndef SHARKSSL_MD5_SMALL_FOOTPRINT
457#define SHARKSSL_MD5_SMALL_FOOTPRINT 0
458#endif
459
460#ifndef SHARKSSL_SHA1_SMALL_FOOTPRINT
461#define SHARKSSL_SHA1_SMALL_FOOTPRINT 0
462#endif
463
466#ifndef SHARKSSL_SHA256_SMALL_FOOTPRINT
467#define SHARKSSL_SHA256_SMALL_FOOTPRINT 0
468#endif
469
470
473#ifndef SHARKSSL_BIGINT_EXP_SLIDING_WINDOW_K
474#define SHARKSSL_BIGINT_EXP_SLIDING_WINDOW_K 4
475#endif
476
477
480#ifndef SHARKSSL_BIGINT_MULT_LOOP_UNROLL
481#define SHARKSSL_BIGINT_MULT_LOOP_UNROLL 1
482#endif
483
484
487#ifndef SHARKSSL_ENABLE_AES_CTR_MODE
488#define SHARKSSL_ENABLE_AES_CTR_MODE 1
489#endif
490
491
494#ifndef SHARKSSL_AES_CIPHER_LOOP_UNROLL
495#define SHARKSSL_AES_CIPHER_LOOP_UNROLL 1
496#endif
497
498
502#ifndef SHARKSSL_UNALIGNED_ACCESS
503#ifdef UNALIGNED_ACCESS
504#define SHARKSSL_UNALIGNED_ACCESS 1
505#else
506#define SHARKSSL_UNALIGNED_ACCESS 0
507#endif
508#endif
509
510
513#ifndef SHARKSSL_BIGINT_WORDSIZE
514#define SHARKSSL_BIGINT_WORDSIZE 32
515#endif
516
517
520#ifndef SHARKSSL_USE_ECC
521#define SHARKSSL_USE_ECC 1
522#endif
523
524
528#ifndef SHARKSSL_ENABLE_ECDSA
529#define SHARKSSL_ENABLE_ECDSA 1
530#endif
531
532
538#ifndef SHARKSSL_ECC_VERIFY_POINT
539#define SHARKSSL_ECC_VERIFY_POINT 1
540#endif
541
542
547#ifndef SHARKSSL_ENABLE_EDDSA
548#define SHARKSSL_ENABLE_EDDSA 0
549#endif
550
551
555#ifndef SHARKSSL_ECC_TIMING_RESISTANT
556#define SHARKSSL_ECC_TIMING_RESISTANT 1
557#endif
558
559
564#ifndef SHARKSSL_BIGINT_TIMING_RESISTANT
565#define SHARKSSL_BIGINT_TIMING_RESISTANT 1
566#endif
567
568
571#ifndef SHARKSSL_ECC_USE_SECP256R1
572#define SHARKSSL_ECC_USE_SECP256R1 1
573#endif
574
577#ifndef SHARKSSL_ECC_USE_SECP384R1
578#define SHARKSSL_ECC_USE_SECP384R1 1
579#endif
580
583#ifndef SHARKSSL_ECC_USE_SECP521R1
584#define SHARKSSL_ECC_USE_SECP521R1 1
585#endif
586
587
590#ifndef SHARKSSL_ECC_USE_BRAINPOOLP256R1
591#define SHARKSSL_ECC_USE_BRAINPOOLP256R1 1
592#endif
593
596#ifndef SHARKSSL_ECC_USE_BRAINPOOLP384R1
597#define SHARKSSL_ECC_USE_BRAINPOOLP384R1 1
598#endif
599
602#ifndef SHARKSSL_ECC_USE_BRAINPOOLP512R1
603#define SHARKSSL_ECC_USE_BRAINPOOLP512R1 1
604#endif
605
606
609#ifndef SHARKSSL_ECC_USE_CURVE25519
610#define SHARKSSL_ECC_USE_CURVE25519 1
611#endif
612
613
617#ifndef SHARKSSL_ENABLE_X25519_API
618#define SHARKSSL_ENABLE_X25519_API 1
619#endif
620
621
630#ifndef SHARKSSL_X25519_DEDICATED
631#define SHARKSSL_X25519_DEDICATED 1
632#endif
633
634
637#ifndef SHARKSSL_ECC_USE_CURVE448
638#define SHARKSSL_ECC_USE_CURVE448 0
639#endif
640
641
646#ifndef SHARKSSL_ENABLE_ECDHE_RSA
647#define SHARKSSL_ENABLE_ECDHE_RSA 1
648#endif
649
650
655#ifndef SHARKSSL_ENABLE_ECDHE_ECDSA
656#define SHARKSSL_ENABLE_ECDHE_ECDSA 1
657#endif
658
659
662#ifndef SHARKSSL_OPTIMIZED_BIGINT_ASM
663#define SHARKSSL_OPTIMIZED_BIGINT_ASM 0
664#endif
665
668#ifndef SHARKSSL_OPTIMIZED_CHACHA_ASM
669#define SHARKSSL_OPTIMIZED_CHACHA_ASM 0
670#endif
671
674#ifndef SHARKSSL_OPTIMIZED_POLY1305_ASM
675#define SHARKSSL_OPTIMIZED_POLY1305_ASM 0
676#endif
677
680#ifndef SHARKSSL_OPTIMIZED_GHASH_ASM
681#define SHARKSSL_OPTIMIZED_GHASH_ASM 0
682#endif
683
687#ifndef SHARKSSL_OPTIMIZED_GCM_ASM
688#define SHARKSSL_OPTIMIZED_GCM_ASM 0
689#endif
690
695#ifndef SHARKSSL_OPTIMIZED_GCM_VAES_ASM
696#define SHARKSSL_OPTIMIZED_GCM_VAES_ASM 0
697#endif
698
699
705#ifndef SHARKSSL_USE_RNG_TINYMT
706#define SHARKSSL_USE_RNG_TINYMT 0
707#endif
708
716#ifndef SHARKSSL_USE_RNG_FORTUNA
717#define SHARKSSL_USE_RNG_FORTUNA 0
718#endif
719
720
726#ifndef SHARKSSL_RNG_MULTITHREADED
727#define SHARKSSL_RNG_MULTITHREADED 1
728#endif
729
730
733#ifndef SHARKSSL_NOPACK
734#define SHARKSSL_NOPACK 0
735#endif
736
742#ifdef __DOXYGEN__
743#define SHARKSSL_CHECK_DATE 0
744#endif
745#ifndef SHARKSSL_CHECK_DATE
746#ifdef SHARKSSL_BA /* if SharkSSL embedded in BAS */
747#define SHARKSSL_CHECK_DATE 1
748#else
749#define SHARKSSL_CHECK_DATE 0
750#endif
751#endif
752
753 /* end group SharkSslCfg */
755
758#if ((SHARKSSL_MAX_HANDSHAKE_LENGTH == 0) || (SHARKSSL_MAX_HANDSHAKE_LENGTH > 0x00FFFFFFUL))
759#error SHARKSSL_MAX_HANDSHAKE_LENGTH must be in the range 1..0x00FFFFFF
760#endif
761
762#if SHARKSSL_ECC_TIMING_RESISTANT
763#undef SHARKSSL_BIGINT_TIMING_RESISTANT
764#define SHARKSSL_BIGINT_TIMING_RESISTANT 1
765#endif
766
769#if SHARKSSL_ENABLE_KEY_UPDATE
770#if (!SHARKSSL_TLS_1_3)
771#undef SHARKSSL_ENABLE_KEY_UPDATE
772#define SHARKSSL_ENABLE_KEY_UPDATE 0
773#elif SHARKSSL_ENABLE_AES_GCM
774#if ((SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD == 0) || (SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD > 0x00800000UL))
775#error SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD must be in the range 1..2^23
776#endif
777#endif
778#endif /* SHARKSSL_ENABLE_KEY_UPDATE */
779
780#if SHARKSSL_TLS_1_3
781#if SHARKSSL_ENABLE_RSA
782#undef SHARKSSL_ENABLE_RSASSA_PSS
783#define SHARKSSL_ENABLE_RSASSA_PSS 1
784#endif
785#if !SHARKSSL_TLS_1_2
786#if SHARKSSL_ENABLE_SECURE_RENEGOTIATION
787#undef SHARKSSL_ENABLE_SECURE_RENEGOTIATION
788#define SHARKSSL_ENABLE_SECURE_RENEGOTIATION 0
789#endif
790#if SHARKSSL_ENABLE_DHE_RSA
791#undef SHARKSSL_ENABLE_DHE_RSA
792#define SHARKSSL_ENABLE_DHE_RSA 0
793#endif
794#endif
795#if (0 == SHARKSSL_ECC_USE_SECP256R1)
796#error TLS 1.3 requires NIST curve secp256r1
797#endif
798#if (0 == SHARKSSL_USE_AES_128)
799#error TLS 1.3 requires AES 128
800#endif
801#if (0 == SHARKSSL_USE_SHA_256)
802#error TLS 1.3 requires SHA 256
803#endif
804#endif /* SHARKSSL_TLS_1_3 */
805
806#endif