22#ifndef CRYPT_EAL_DEFAULT_PROVIDERIMPL_H
23#define CRYPT_EAL_DEFAULT_PROVIDERIMPL_H
25#ifdef HITLS_CRYPTO_PROVIDER
27#include "crypt_eal_implprovider.h"
34#ifdef HITLS_CRYPTO_MD5
37#ifdef HITLS_CRYPTO_SHA1
40#ifdef HITLS_CRYPTO_SHA224
43#ifdef HITLS_CRYPTO_SHA256
46#ifdef HITLS_CRYPTO_SHA384
49#ifdef HITLS_CRYPTO_SHA512
52#ifdef HITLS_CRYPTO_SHA3
61#ifdef HITLS_CRYPTO_SM3
66#ifdef HITLS_CRYPTO_MAC
67#ifdef HITLS_CRYPTO_HMAC
70#ifdef HITLS_CRYPTO_CMAC
73#ifdef HITLS_CRYPTO_CBC_MAC
76#ifdef HITLS_CRYPTO_GMAC
79#ifdef HITLS_CRYPTO_SIPHASH
84#ifdef HITLS_CRYPTO_KDF
85#ifdef HITLS_CRYPTO_SCRYPT
88#ifdef HITLS_CRYPTO_PBKDF2
91#ifdef HITLS_CRYPTO_KDFTLS12
94#ifdef HITLS_CRYPTO_HKDF
99#ifdef HITLS_CRYPTO_CIPHER
100#ifdef HITLS_CRYPTO_CBC
103#ifdef HITLS_CRYPTO_CCM
106#ifdef HITLS_CRYPTO_CFB
109#if defined(HITLS_CRYPTO_CHACHA20) && defined(HITLS_CRYPTO_CHACHA20POLY1305)
112#ifdef HITLS_CRYPTO_CTR
115#ifdef HITLS_CRYPTO_ECB
118#ifdef HITLS_CRYPTO_GCM
121#ifdef HITLS_CRYPTO_OFB
124#ifdef HITLS_CRYPTO_XTS
127#ifdef HITLS_CRYPTO_WRAP
130#ifdef HITLS_CRYPTO_HCTR
135#ifdef HITLS_CRYPTO_DRBG
139#ifdef HITLS_CRYPTO_PKEY
140#ifdef HITLS_CRYPTO_DSA
143#ifdef HITLS_CRYPTO_ED25519
146#ifdef HITLS_CRYPTO_X25519
149#ifdef HITLS_CRYPTO_RSA
152#ifdef HITLS_CRYPTO_DH
155#ifdef HITLS_CRYPTO_ECDSA
158#ifdef HITLS_CRYPTO_ECDH
161#ifdef HITLS_CRYPTO_SM2
164#ifdef HITLS_CRYPTO_PAILLIER
167#ifdef HITLS_CRYPTO_ELGAMAL
170#ifdef HITLS_CRYPTO_MLDSA
173#ifdef HITLS_CRYPTO_XMSS
176#ifdef HITLS_CRYPTO_SLH_DSA
179#ifdef HITLS_CRYPTO_MLKEM
182#ifdef HITLS_CRYPTO_FRODOKEM
185#ifdef HITLS_CRYPTO_CLASSIC_MCELIECE
188#ifdef HITLS_CRYPTO_HYBRIDKEM
192#ifdef HITLS_CRYPTO_X25519
195#ifdef HITLS_CRYPTO_DH
198#ifdef HITLS_CRYPTO_ECDH
201#ifdef HITLS_CRYPTO_SM2_EXCH
204#define g_defEalExchSm2 NULL
208#if defined(HITLS_CRYPTO_RSA_ENCRYPT) || defined(HITLS_CRYPTO_RSA_DECRYPT)
211#define g_defEalAsymCipherRsa NULL
213#ifdef HITLS_CRYPTO_SM2_CRYPT
216#define g_defEalAsymCipherSm2 NULL
218#ifdef HITLS_CRYPTO_PAILLIER
221#ifdef HITLS_CRYPTO_ELGAMAL
225#ifdef HITLS_CRYPTO_DSA
228#ifdef HITLS_CRYPTO_ED25519
231#if defined(HITLS_CRYPTO_RSA_SIGN) || defined(HITLS_CRYPTO_RSA_VERIFY)
234#define g_defEalSignRsa NULL
236#ifdef HITLS_CRYPTO_ECDSA
239#ifdef HITLS_CRYPTO_SM2_SIGN
242#define g_defEalSignSm2 NULL
244#ifdef HITLS_CRYPTO_MLDSA
247#ifdef HITLS_CRYPTO_SLH_DSA
251#ifdef HITLS_CRYPTO_XMSS
255#ifdef HITLS_CRYPTO_MLKEM
258#ifdef HITLS_CRYPTO_FRODOKEM
261#ifdef HITLS_CRYPTO_CLASSIC_MCELIECE
264#ifdef HITLS_CRYPTO_HYBRIDKEM
269#ifdef HITLS_CRYPTO_KEY_DECODE_CHAIN
270#ifdef HITLS_CRYPTO_KEY_EPKI
276#ifdef HITLS_CRYPTO_RSA
279#ifdef HITLS_CRYPTO_ECDSA
282#ifdef HITLS_CRYPTO_SM2
285#ifdef HITLS_CRYPTO_RSA
288#ifdef HITLS_CRYPTO_ECDSA
291#ifdef HITLS_CRYPTO_SM2
294#ifdef HITLS_CRYPTO_ED25519
297#ifdef HITLS_CRYPTO_X25519
300#ifdef HITLS_CRYPTO_MLDSA
303#ifdef HITLS_CRYPTO_MLKEM
306#ifdef HITLS_CRYPTO_SLH_DSA
309#ifdef HITLS_CRYPTO_RSA
312#ifdef HITLS_CRYPTO_ECDSA
315#ifdef HITLS_CRYPTO_SM2
318#ifdef HITLS_CRYPTO_ED25519
321#ifdef HITLS_CRYPTO_X25519
324#ifdef HITLS_CRYPTO_MLDSA
327#ifdef HITLS_CRYPTO_MLKEM
330#ifdef HITLS_CRYPTO_SLH_DSA
333#ifdef HITLS_CRYPTO_RSA
334extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2RsaKey[];
336#ifdef HITLS_CRYPTO_ECDSA
337extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2EcdsaKey[];
339#ifdef HITLS_CRYPTO_SM2
340extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Sm2Key[];
342#ifdef HITLS_CRYPTO_ED25519
343extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2Ed25519Key[];
345#ifdef HITLS_CRYPTO_X25519
346extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2X25519Key[];
348#ifdef HITLS_CRYPTO_MLDSA
349extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2MldsaKey[];
352#ifdef HITLS_CRYPTO_MLKEM
353extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2MlkemKey[];
355#ifdef HITLS_CRYPTO_SLH_DSA
356extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2SlhDsaKey[];
358#ifdef HITLS_CRYPTO_RSA
361#ifdef HITLS_CRYPTO_XMSS
362extern const CRYPT_EAL_Func g_defEalSubPubKeyWithoutSeqDer2XmssKey[];