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 6407 2026-10-12 21:41:24Z 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 Do not directly edit the options in this file. Instead, add your
37 custom options in SharkSSL_opts.h
38
39 */
40#ifndef _SharkSsl_cfg_h
41#define _SharkSsl_cfg_h
42
43#include "SharkSSL_opts.h"
44
45
55#ifndef SHARKSSL_TLS_1_3
56#define SHARKSSL_TLS_1_3 1
57#endif
58
63#ifndef SHARKSSL_TLS_1_2
64#define SHARKSSL_TLS_1_2 1
65#endif
66
75#ifndef SHARKSSL_PSA_CONSUMER
76#define SHARKSSL_PSA_CONSUMER 0
77#endif
78
86#ifndef SHARKSSL_PSA_CONSUMER_SECRET_HANDLES
87#define SHARKSSL_PSA_CONSUMER_SECRET_HANDLES 0
88#endif
89 /* end group SharkSslCfgPsa */
91
97#ifndef SHARKSSL_RFC_9846_CONFORMANCE_PROFILE
98#define SHARKSSL_RFC_9846_CONFORMANCE_PROFILE 0
99#endif
100
104#ifndef SHARKSSL_USE_AES_256
105#define SHARKSSL_USE_AES_256 1
106#endif
107
111#ifndef SHARKSSL_USE_AES_128
112#define SHARKSSL_USE_AES_128 1
113#endif
114
119#ifndef SHARKSSL_USE_AES_192
120#define SHARKSSL_USE_AES_192 0
121#endif
122
127#ifndef SHARKSSL_ENABLE_AES_GCM
128#define SHARKSSL_ENABLE_AES_GCM 1
129#endif
130
135#ifndef SHARKSSL_ENABLE_AES_CCM
136#define SHARKSSL_ENABLE_AES_CCM 0
137#endif
138
144#ifndef SHARKSSL_ENABLE_AES_CBC
145#define SHARKSSL_ENABLE_AES_CBC 0
146#endif
147
153#ifndef SHARKSSL_USE_CHACHA20
154#define SHARKSSL_USE_CHACHA20 1
155#endif
156
157
169#ifndef SHARKSSL_USE_SHA_256
170#define SHARKSSL_USE_SHA_256 1
171#endif
172
177#ifndef SHARKSSL_USE_SHA_384
178#define SHARKSSL_USE_SHA_384 1
179#endif
180
185#ifndef SHARKSSL_USE_SHA_512
186#define SHARKSSL_USE_SHA_512 0
187#endif
188
194#ifndef SHARKSSL_USE_SHA1
195#define SHARKSSL_USE_SHA1 0
196#endif
197
201#ifndef SHARKSSL_USE_MD5
202#define SHARKSSL_USE_MD5 0
203#endif
204
210#ifndef SHARKSSL_USE_POLY1305
211#define SHARKSSL_USE_POLY1305 1
212#endif
213
214 /* end group SharkSslCfgHash */
216
217
221#ifndef SHARKSSL_SSL_SERVER_CODE
222#define SHARKSSL_SSL_SERVER_CODE 1
223#endif
224
228#ifndef SHARKSSL_ENABLE_CLIENT_AUTH
229#define SHARKSSL_ENABLE_CLIENT_AUTH 1
230#endif
231
240#ifndef SHARKSSL_ENABLE_POST_HANDSHAKE_AUTH
241#define SHARKSSL_ENABLE_POST_HANDSHAKE_AUTH 0
242#endif
243
252#ifndef SHARKSSL_MAX_HANDSHAKE_LENGTH
253#define SHARKSSL_MAX_HANDSHAKE_LENGTH 0x00004000UL
254#endif
255
261#ifndef SHARKSSL_ENABLE_HELLO_RETRY_REQUEST
262#define SHARKSSL_ENABLE_HELLO_RETRY_REQUEST SHARKSSL_TLS_1_3
263#endif
264
270#ifndef SHARKSSL_TLS_1_3_INITIAL_KEY_SHARE_X25519_ONLY
271#define SHARKSSL_TLS_1_3_INITIAL_KEY_SHARE_X25519_ONLY 0
272#endif
273
283#ifndef SHARKSSL_ENABLE_KEY_UPDATE
284#define SHARKSSL_ENABLE_KEY_UPDATE SHARKSSL_TLS_1_3
285#endif
286
296#ifndef SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD
297#define SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD 0x00800000UL
298#endif
299
303#ifndef SHARKSSL_SSL_CLIENT_CODE
304#define SHARKSSL_SSL_CLIENT_CODE 1
305#endif
306
310#ifndef SHARKSSL_RANDOMIZE_EXTENSIONS
311#define SHARKSSL_RANDOMIZE_EXTENSIONS 1
312#endif
313
317#ifndef SHARKSSL_ENABLE_SNI
318#define SHARKSSL_ENABLE_SNI 1
319#endif
320
326#ifndef SHARKSSL_ENABLE_CA_EXTENSION
327#define SHARKSSL_ENABLE_CA_EXTENSION 1
328#endif
329
333#ifndef SHARKSSL_ENABLE_RSA
334#define SHARKSSL_ENABLE_RSA 1
335#endif
336
340#ifndef SHARKSSL_ENABLE_SESSION_CACHE
341#define SHARKSSL_ENABLE_SESSION_CACHE 1
342#endif
343
351#ifndef SHARKSSL_ENABLE_SECURE_RENEGOTIATION
352#define SHARKSSL_ENABLE_SECURE_RENEGOTIATION SHARKSSL_TLS_1_2
353#endif
354
360#ifndef SHARKSSL_ENABLE_DHE_RSA
361#define SHARKSSL_ENABLE_DHE_RSA 0
362#endif
363
368#undef SHARKSSL_USE_SHA_256
369#define SHARKSSL_USE_SHA_256 1
370
374#ifndef SHARKSSL_ENABLE_SELECT_CIPHERSUITE
375#define SHARKSSL_ENABLE_SELECT_CIPHERSUITE 1
376#endif
377
383#ifndef SHARKSSL_SELECT_CIPHERSUITE_LIST_DEPTH
384#define SHARKSSL_SELECT_CIPHERSUITE_LIST_DEPTH 8
385#endif
386
390#ifndef SHARKSSL_ENABLE_ALPN_EXTENSION
391#define SHARKSSL_ENABLE_ALPN_EXTENSION 1
392#endif
393
399#ifndef SHARKSSL_ENABLE_RSA_API
400#define SHARKSSL_ENABLE_RSA_API 1
401#endif
402
406#ifndef SHARKSSL_ENABLE_RSAKEY_CREATE
407#define SHARKSSL_ENABLE_RSAKEY_CREATE 0
408#endif
409
415#ifndef SHARKSSL_ENABLE_RSA_PKCS1
416#define SHARKSSL_ENABLE_RSA_PKCS1 1
417#endif
418
427#ifndef SHARKSSL_ENABLE_RSASSA_PSS
428#define SHARKSSL_ENABLE_RSASSA_PSS 1
429#endif
430
435#ifndef SHARKSSL_ENABLE_RSA_OAEP
436#define SHARKSSL_ENABLE_RSA_OAEP 0
437#endif
438
443#ifndef SHARKSSL_ENABLE_ECDSA_API
444#define SHARKSSL_ENABLE_ECDSA_API 1
445#endif
446
454#ifndef SHARKSSL_ECDSA_ONLY_VERIFY
455#define SHARKSSL_ECDSA_ONLY_VERIFY 0
456#endif
457
465#ifndef SHARKSSL_ENABLE_PEM_API
466#define SHARKSSL_ENABLE_PEM_API 1
467#endif
468
474#ifndef SHARKSSL_ENABLE_ENCRYPTED_PKCS8_SUPPORT
475#define SHARKSSL_ENABLE_ENCRYPTED_PKCS8_SUPPORT 0
476#endif
477
481#ifndef SHARKSSL_ENABLE_INFO_API
482#define SHARKSSL_ENABLE_INFO_API 1
483#endif
484
488#ifndef SHARKSSL_ENABLE_CERT_CHAIN
489#define SHARKSSL_ENABLE_CERT_CHAIN 1
490#endif
491
496#ifndef SHARKSSL_ENABLE_CA_LIST
497#define SHARKSSL_ENABLE_CA_LIST 1
498#endif
499
503#ifndef SHARKSSL_ENABLE_CERTSTORE_API
504#define SHARKSSL_ENABLE_CERTSTORE_API 1
505#endif
506
511#ifndef SHARKSSL_ENABLE_CERTINFO_PARSE_API
512#define SHARKSSL_ENABLE_CERTINFO_PARSE_API 0
513#endif
514
518#ifdef SHARKSSL_ENABLE_CLONE_CERTINFO
519#if (!SHARKSSL_ENABLE_CLONE_CERTINFO)
520#error SHARKSSL_ENABLE_CLONE_CERTINFO is now enabled by default - please remove its #define
521#endif
522#endif
523
528#ifndef SHARKSSL_ENABLE_CERT_KEYUSAGE
529#define SHARKSSL_ENABLE_CERT_KEYUSAGE 0
530#endif
531
539#ifndef SHARKSSL_MD5_SMALL_FOOTPRINT
540#define SHARKSSL_MD5_SMALL_FOOTPRINT 0
541#endif
542
543#ifndef SHARKSSL_SHA1_SMALL_FOOTPRINT
544#define SHARKSSL_SHA1_SMALL_FOOTPRINT 0
545#endif
546
550#ifndef SHARKSSL_SHA256_SMALL_FOOTPRINT
551#define SHARKSSL_SHA256_SMALL_FOOTPRINT 0
552#endif
553
557#ifndef SHARKSSL_BIGINT_EXP_SLIDING_WINDOW_K
558#define SHARKSSL_BIGINT_EXP_SLIDING_WINDOW_K 4
559#endif
560
564#ifndef SHARKSSL_BIGINT_MULT_LOOP_UNROLL
565#define SHARKSSL_BIGINT_MULT_LOOP_UNROLL 1
566#endif
567
571#ifndef SHARKSSL_ENABLE_AES_CTR_MODE
572#define SHARKSSL_ENABLE_AES_CTR_MODE 1
573#endif
574
578#ifndef SHARKSSL_AES_CIPHER_LOOP_UNROLL
579#define SHARKSSL_AES_CIPHER_LOOP_UNROLL 1
580#endif
581
586#ifndef SHARKSSL_UNALIGNED_ACCESS
587#ifdef UNALIGNED_ACCESS
588#define SHARKSSL_UNALIGNED_ACCESS 1
589#else
590#define SHARKSSL_UNALIGNED_ACCESS 0
591#endif
592#endif
593
597#ifndef SHARKSSL_BIGINT_WORDSIZE
598#define SHARKSSL_BIGINT_WORDSIZE 32
599#endif
600
604#ifndef SHARKSSL_USE_ECC
605#define SHARKSSL_USE_ECC 1
606#endif
607
612#ifndef SHARKSSL_ENABLE_ECDSA
613#define SHARKSSL_ENABLE_ECDSA 1
614#endif
615
622#ifndef SHARKSSL_ECC_VERIFY_POINT
623#define SHARKSSL_ECC_VERIFY_POINT 1
624#endif
625
630#ifndef SHARKSSL_ENABLE_EDDSA
631#define SHARKSSL_ENABLE_EDDSA 0
632#endif
633
638#ifndef SHARKSSL_ECC_TIMING_RESISTANT
639#define SHARKSSL_ECC_TIMING_RESISTANT 1
640#endif
641
647#ifndef SHARKSSL_BIGINT_TIMING_RESISTANT
648#define SHARKSSL_BIGINT_TIMING_RESISTANT 1
649#endif
650
654#ifndef SHARKSSL_ECC_USE_SECP256R1
655#define SHARKSSL_ECC_USE_SECP256R1 1
656#endif
657
661#ifndef SHARKSSL_ECC_USE_SECP384R1
662#define SHARKSSL_ECC_USE_SECP384R1 1
663#endif
664
668#ifndef SHARKSSL_ECC_USE_SECP521R1
669#define SHARKSSL_ECC_USE_SECP521R1 1
670#endif
671
675#ifndef SHARKSSL_ECC_USE_BRAINPOOLP256R1
676#define SHARKSSL_ECC_USE_BRAINPOOLP256R1 1
677#endif
678
682#ifndef SHARKSSL_ECC_USE_BRAINPOOLP384R1
683#define SHARKSSL_ECC_USE_BRAINPOOLP384R1 1
684#endif
685
689#ifndef SHARKSSL_ECC_USE_BRAINPOOLP512R1
690#define SHARKSSL_ECC_USE_BRAINPOOLP512R1 1
691#endif
692
696#ifndef SHARKSSL_ECC_USE_CURVE25519
697#define SHARKSSL_ECC_USE_CURVE25519 1
698#endif
699
704#ifndef SHARKSSL_ENABLE_X25519_API
705#define SHARKSSL_ENABLE_X25519_API 1
706#endif
707
718#ifndef SHARKSSL_X25519_DEDICATED
719#define SHARKSSL_X25519_DEDICATED 1
720#endif
721
725#ifndef SHARKSSL_ECC_USE_CURVE448
726#define SHARKSSL_ECC_USE_CURVE448 0
727#endif
728
734#ifndef SHARKSSL_ENABLE_ECDHE_RSA
735#define SHARKSSL_ENABLE_ECDHE_RSA 1
736#endif
737
743#ifndef SHARKSSL_ENABLE_ECDHE_ECDSA
744#define SHARKSSL_ENABLE_ECDHE_ECDSA 1
745#endif
746
750#ifndef SHARKSSL_OPTIMIZED_BIGINT_ASM
751#define SHARKSSL_OPTIMIZED_BIGINT_ASM 0
752#endif
753
757#ifndef SHARKSSL_OPTIMIZED_CHACHA_ASM
758#define SHARKSSL_OPTIMIZED_CHACHA_ASM 0
759#endif
760
764#ifndef SHARKSSL_OPTIMIZED_POLY1305_ASM
765#define SHARKSSL_OPTIMIZED_POLY1305_ASM 0
766#endif
767
771#ifndef SHARKSSL_OPTIMIZED_GHASH_ASM
772#define SHARKSSL_OPTIMIZED_GHASH_ASM 0
773#endif
774
779#ifndef SHARKSSL_OPTIMIZED_GCM_ASM
780#define SHARKSSL_OPTIMIZED_GCM_ASM 0
781#endif
782
788#ifndef SHARKSSL_OPTIMIZED_GCM_VAES_ASM
789#define SHARKSSL_OPTIMIZED_GCM_VAES_ASM 0
790#endif
791
800#ifndef SHARKSSL_USE_RNG_TINYMT
801#define SHARKSSL_USE_RNG_TINYMT 0
802#endif
803
812#ifndef SHARKSSL_USE_RNG_FORTUNA
813#define SHARKSSL_USE_RNG_FORTUNA 0
814#endif
815
822#ifndef SHARKSSL_RNG_MULTITHREADED
823#define SHARKSSL_RNG_MULTITHREADED 1
824#endif
825
829#ifndef SHARKSSL_NOPACK
830#define SHARKSSL_NOPACK 0
831#endif
832
839#ifdef __DOXYGEN__
840#define SHARKSSL_CHECK_DATE 0
841#endif
842#ifndef SHARKSSL_CHECK_DATE
843#ifdef SHARKSSL_BA /* if SharkSSL embedded in BAS */
844#define SHARKSSL_CHECK_DATE 1
845#else
846#define SHARKSSL_CHECK_DATE 0
847#endif
848#endif
849
850 /* end group SharkSslCfg */
852
853
857#if ((SHARKSSL_MAX_HANDSHAKE_LENGTH == 0) || (SHARKSSL_MAX_HANDSHAKE_LENGTH > 0x00FFFFFFUL))
858#error SHARKSSL_MAX_HANDSHAKE_LENGTH must be in the range 1..0x00FFFFFF
859#endif
860
861#if SHARKSSL_ECC_TIMING_RESISTANT
862#undef SHARKSSL_BIGINT_TIMING_RESISTANT
863#define SHARKSSL_BIGINT_TIMING_RESISTANT 1
864#endif
865
869#if SHARKSSL_ENABLE_KEY_UPDATE
870#if (!SHARKSSL_TLS_1_3)
871#undef SHARKSSL_ENABLE_KEY_UPDATE
872#define SHARKSSL_ENABLE_KEY_UPDATE 0
873#elif SHARKSSL_ENABLE_AES_GCM
874#if ((SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD == 0) || (SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD > 0x00800000UL))
875#error SHARKSSL_TLS_1_3_AES_GCM_KEY_UPDATE_THRESHOLD must be in the range 1..2^23
876#endif
877#endif
878#endif /* SHARKSSL_ENABLE_KEY_UPDATE */
879
880#if SHARKSSL_TLS_1_3
881#if SHARKSSL_ENABLE_RSA
882#undef SHARKSSL_ENABLE_RSASSA_PSS
883#define SHARKSSL_ENABLE_RSASSA_PSS 1
884#endif
885#if (!SHARKSSL_TLS_1_2)
886#if SHARKSSL_ENABLE_SECURE_RENEGOTIATION
887#undef SHARKSSL_ENABLE_SECURE_RENEGOTIATION
888#define SHARKSSL_ENABLE_SECURE_RENEGOTIATION 0
889#endif
890#if SHARKSSL_ENABLE_DHE_RSA
891#undef SHARKSSL_ENABLE_DHE_RSA
892#define SHARKSSL_ENABLE_DHE_RSA 0
893#endif
894#endif
895#if (0 == SHARKSSL_ECC_USE_SECP256R1)
896#error TLS 1.3 requires NIST curve secp256r1
897#endif
898#if (0 == SHARKSSL_USE_AES_128)
899#error TLS 1.3 requires AES 128
900#endif
901#if (0 == SHARKSSL_USE_SHA_256)
902#error TLS 1.3 requires SHA 256
903#endif
904#endif /* SHARKSSL_TLS_1_3 */
905
906#if SHARKSSL_RFC_9846_CONFORMANCE_PROFILE
907#if (!SHARKSSL_TLS_1_3)
908#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires SHARKSSL_TLS_1_3
909#endif
910#if ((!SHARKSSL_SSL_CLIENT_CODE) && (!SHARKSSL_SSL_SERVER_CODE))
911#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires a TLS client or server role
912#endif
913#if ((!SHARKSSL_USE_AES_128) || (!SHARKSSL_ENABLE_AES_GCM) || (!SHARKSSL_USE_SHA_256))
914#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires TLS_AES_128_GCM_SHA256
915#endif
916#if ((!SHARKSSL_ENABLE_RSA) || (!SHARKSSL_ENABLE_RSA_PKCS1) || (!SHARKSSL_ENABLE_RSASSA_PSS))
917#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires RSA PKCS1 and RSASSA-PSS SHA-256 signatures
918#endif
919#if ((!SHARKSSL_USE_ECC) || (!SHARKSSL_ENABLE_ECDSA) || (!SHARKSSL_ECC_USE_SECP256R1))
920#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires ECDSA and ECDHE with secp256r1
921#endif
922#if (!SHARKSSL_ENABLE_SNI)
923#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires Server Name Indication
924#endif
925#if (!SHARKSSL_ENABLE_HELLO_RETRY_REQUEST)
926#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires HelloRetryRequest
927#endif
928#if (!SHARKSSL_ENABLE_KEY_UPDATE)
929#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires TLS 1.3 KeyUpdate
930#endif
931#if SHARKSSL_USE_RNG_TINYMT
932#error SHARKSSL_RFC_9846_CONFORMANCE_PROFILE requires a cryptographically secure RNG
933#endif
934#endif /* SHARKSSL_RFC_9846_CONFORMANCE_PROFILE */
935
936/* Check the selected PSA consumer profile after all TLS options are resolved. */
937#if (SHARKSSL_PSA_CONSUMER_SECRET_HANDLES && ((!SHARKSSL_PSA_CONSUMER) || (!SHARKSSL_TLS_1_3)))
938#error SHARKSSL_PSA_CONSUMER_SECRET_HANDLES requires the TLS 1.3 PSA consumer
939#endif
940
941#if SHARKSSL_PSA_CONSUMER
942#if ((!SHARKSSL_TLS_1_2) && (!SHARKSSL_TLS_1_3))
943#error SHARKSSL_PSA_CONSUMER requires TLS 1.2 or TLS 1.3
944#endif
945#if ((!SHARKSSL_SSL_CLIENT_CODE) && (!SHARKSSL_SSL_SERVER_CODE))
946#error SHARKSSL_PSA_CONSUMER requires a TLS client or server role
947#endif
948#if ((!SHARKSSL_USE_AES_128) || (!SHARKSSL_ENABLE_AES_GCM) || (!SHARKSSL_USE_SHA_256))
949#error SHARKSSL_PSA_CONSUMER requires AES-128-GCM and SHA-256
950#endif
951#if (SHARKSSL_USE_AES_192 || SHARKSSL_ENABLE_AES_CCM || \
952 SHARKSSL_ENABLE_AES_CBC || SHARKSSL_ENABLE_AES_CTR_MODE)
953#error SHARKSSL_PSA_CONSUMER supports only AES-GCM and ChaCha20-Poly1305 records
954#endif
955#if (SHARKSSL_USE_CHACHA20 != SHARKSSL_USE_POLY1305)
956#error SHARKSSL_PSA_CONSUMER requires ChaCha20 and Poly1305 together
957#endif
958#if (SHARKSSL_USE_SHA1 || SHARKSSL_USE_SHA_512 || SHARKSSL_USE_MD5)
959#error SHARKSSL_PSA_CONSUMER supports only SHA-256/384
960#endif
961#if ((!SHARKSSL_USE_ECC) || (!SHARKSSL_ECC_USE_SECP256R1) || \
962 (!SHARKSSL_ENABLE_ECDSA) || (!SHARKSSL_ENABLE_ECDHE_ECDSA))
963#error SHARKSSL_PSA_CONSUMER requires ECDHE-ECDSA with P-256
964#endif
965#if (SHARKSSL_TLS_1_3 && ((!SHARKSSL_ECC_USE_CURVE25519) || (!SHARKSSL_ENABLE_HELLO_RETRY_REQUEST) || \
966 (!SHARKSSL_TLS_1_3_INITIAL_KEY_SHARE_X25519_ONLY)))
967#error SHARKSSL_PSA_CONSUMER requires X25519 with an initial single key share and HelloRetryRequest
968#endif
969#if (SHARKSSL_ECC_USE_SECP521R1 || \
970 SHARKSSL_ECC_USE_CURVE448 || \
971 SHARKSSL_ECC_USE_BRAINPOOLP256R1 || SHARKSSL_ECC_USE_BRAINPOOLP384R1 || \
972 SHARKSSL_ECC_USE_BRAINPOOLP512R1)
973#error SHARKSSL_PSA_CONSUMER supports only P-256, P-384 and X25519
974#endif
975#if (SHARKSSL_ENABLE_RSA_API || SHARKSSL_ENABLE_RSA_OAEP || \
976 SHARKSSL_ENABLE_ECDHE_RSA || SHARKSSL_ENABLE_DHE_RSA)
977#error SHARKSSL_PSA_CONSUMER excludes RSA encryption and TLS 1.2 RSA suites
978#endif
979#if (SHARKSSL_ENABLE_RSA && ((!SHARKSSL_ENABLE_RSA_PKCS1) || (!SHARKSSL_ENABLE_RSASSA_PSS)))
980#error SHARKSSL_PSA_CONSUMER RSA requires PKCS1 certificate signatures and RSA-PSS
981#endif
982#if (SHARKSSL_ENABLE_PEM_API || SHARKSSL_ENABLE_ECDSA_API)
983#error SHARKSSL_PSA_CONSUMER excludes PEM and standalone ECDSA
984#endif
985#if (SHARKSSL_ENABLE_POST_HANDSHAKE_AUTH && \
986 ((!SHARKSSL_ENABLE_CLIENT_AUTH) || (!SHARKSSL_SSL_SERVER_CODE)))
987#error SHARKSSL_PSA_CONSUMER post-handshake auth requires client auth and server code
988#endif
989#if (SHARKSSL_USE_RNG_TINYMT || SHARKSSL_USE_RNG_FORTUNA)
990#error SHARKSSL_PSA_CONSUMER uses the provider RNG
991#endif
992#endif /* SHARKSSL_PSA_CONSUMER */
993
994#endif