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
inc
SharkSSL_cfg.h
SharkSSL
documentation generated on Sun Sep 20 2026 07:33:24. Copyright Real Time Logic LLC.