Go to the documentation of this file.
32 #define TRACE_LEVEL CRYPTO_TRACE_LEVEL
43 #if (X509_SUPPORT == ENABLED || PEM_SUPPORT == ENABLED)
163 const uint8_t
X509_AD_OCSP[8] = {0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02};
189 const uint8_t *name2,
size_t nameLen2)
192 if(nameLen1 != nameLen2)
196 if(
osMemcmp(name1, name2, nameLen1))
219 #if (X509_RSA_SUPPORT == ENABLED && RSA_SUPPORT == ENABLED)
226 #if (X509_RSA_PSS_SUPPORT == ENABLED && RSA_SUPPORT == ENABLED)
233 #if (X509_DSA_SUPPORT == ENABLED && DSA_SUPPORT == ENABLED)
240 #if (X509_ECDSA_SUPPORT == ENABLED && ECDSA_SUPPORT == ENABLED)
247 #if (X509_SM2_SUPPORT == ENABLED && SM2_SUPPORT == ENABLED)
254 #if (X509_ED25519_SUPPORT == ENABLED && ED25519_SUPPORT == ENABLED)
261 #if (X509_ED448_SUPPORT == ENABLED && ED448_SUPPORT == ENABLED)
268 #if (X509_MLDSA44_SUPPORT == ENABLED && MLDSA44_SUPPORT == ENABLED)
275 #if (X509_MLDSA65_SUPPORT == ENABLED && MLDSA65_SUPPORT == ENABLED)
282 #if (X509_MLDSA87_SUPPORT == ENABLED && MLDSA87_SUPPORT == ENABLED)
315 #if (X509_MD5_SUPPORT == ENABLED && MD5_SUPPORT == ENABLED)
322 #if (X509_SHA1_SUPPORT == ENABLED && SHA1_SUPPORT == ENABLED)
329 #if (X509_SHA224_SUPPORT == ENABLED && SHA224_SUPPORT == ENABLED)
336 #if (X509_SHA256_SUPPORT == ENABLED && SHA256_SUPPORT == ENABLED)
343 #if (X509_SHA384_SUPPORT == ENABLED && SHA384_SUPPORT == ENABLED)
350 #if (X509_SHA512_SUPPORT == ENABLED && SHA512_SUPPORT == ENABLED)
357 #if (X509_SHA3_224_SUPPORT == ENABLED && SHA3_224_SUPPORT == ENABLED)
364 #if (X509_SHA3_256_SUPPORT == ENABLED && SHA3_256_SUPPORT == ENABLED)
371 #if (X509_SHA3_384_SUPPORT == ENABLED && SHA3_384_SUPPORT == ENABLED)
378 #if (X509_SHA3_512_SUPPORT == ENABLED && SHA3_512_SUPPORT == ENABLED)
385 #if (X509_SHAKE128_SUPPORT == ENABLED && SHAKE128_256_SUPPORT == ENABLED)
392 #if (X509_SHAKE256_SUPPORT == ENABLED && SHAKE256_512_SUPPORT == ENABLED)
399 #if (X509_SM3_SUPPORT == ENABLED && SM3_SUPPORT == ENABLED)
465 #if (X509_RSA_SUPPORT == ENABLED && RSA_SUPPORT == ENABLED)
466 #if (X509_MD5_SUPPORT == ENABLED && MD5_SUPPORT == ENABLED)
475 #if (X509_SHA1_SUPPORT == ENABLED && SHA1_SUPPORT == ENABLED)
484 #if (X509_SHA224_SUPPORT == ENABLED && SHA224_SUPPORT == ENABLED)
493 #if (X509_SHA256_SUPPORT == ENABLED && SHA256_SUPPORT == ENABLED)
502 #if (X509_SHA384_SUPPORT == ENABLED && SHA384_SUPPORT == ENABLED)
511 #if (X509_SHA512_SUPPORT == ENABLED && SHA512_SUPPORT == ENABLED)
520 #if (X509_SHA512_224_SUPPORT == ENABLED && SHA512_224_SUPPORT == ENABLED)
529 #if (X509_SHA512_256_SUPPORT == ENABLED && SHA512_256_SUPPORT == ENABLED)
538 #if (X509_SHA3_224_SUPPORT == ENABLED && SHA3_224_SUPPORT == ENABLED)
547 #if (X509_SHA3_256_SUPPORT == ENABLED && SHA3_256_SUPPORT == ENABLED)
556 #if (X509_SHA3_384_SUPPORT == ENABLED && SHA3_384_SUPPORT == ENABLED)
565 #if (X509_SHA3_512_SUPPORT == ENABLED && SHA3_512_SUPPORT == ENABLED)
575 #if (X509_RSA_PSS_SUPPORT == ENABLED && RSA_SUPPORT == ENABLED)
587 if(*hashAlgo == NULL)
594 #if (X509_SHAKE128_SUPPORT == ENABLED && SHAKE128_256_SUPPORT == ENABLED)
603 #if (X509_SHAKE256_SUPPORT == ENABLED && SHAKE256_512_SUPPORT == ENABLED)
613 #if (X509_DSA_SUPPORT == ENABLED && DSA_SUPPORT == ENABLED)
614 #if (X509_SHA1_SUPPORT == ENABLED && SHA1_SUPPORT == ENABLED)
623 #if (X509_SHA224_SUPPORT == ENABLED && SHA224_SUPPORT == ENABLED)
632 #if (X509_SHA256_SUPPORT == ENABLED && SHA256_SUPPORT == ENABLED)
641 #if (X509_SHA384_SUPPORT == ENABLED && SHA384_SUPPORT == ENABLED)
650 #if (X509_SHA512_SUPPORT == ENABLED && SHA512_SUPPORT == ENABLED)
659 #if (X509_SHA3_224_SUPPORT == ENABLED && SHA3_224_SUPPORT == ENABLED)
668 #if (X509_SHA3_256_SUPPORT == ENABLED && SHA3_256_SUPPORT == ENABLED)
677 #if (X509_SHA3_384_SUPPORT == ENABLED && SHA3_384_SUPPORT == ENABLED)
686 #if (X509_SHA3_512_SUPPORT == ENABLED && SHA3_512_SUPPORT == ENABLED)
696 #if (X509_ECDSA_SUPPORT == ENABLED && ECDSA_SUPPORT == ENABLED)
697 #if (X509_SHA1_SUPPORT == ENABLED && SHA1_SUPPORT == ENABLED)
706 #if (X509_SHA224_SUPPORT == ENABLED && SHA224_SUPPORT == ENABLED)
715 #if (X509_SHA256_SUPPORT == ENABLED && SHA256_SUPPORT == ENABLED)
724 #if (X509_SHA384_SUPPORT == ENABLED && SHA384_SUPPORT == ENABLED)
733 #if (X509_SHA512_SUPPORT == ENABLED && SHA512_SUPPORT == ENABLED)
742 #if (X509_SHA3_224_SUPPORT == ENABLED && SHA3_224_SUPPORT == ENABLED)
751 #if (X509_SHA3_256_SUPPORT == ENABLED && SHA3_256_SUPPORT == ENABLED)
760 #if (X509_SHA3_384_SUPPORT == ENABLED && SHA3_384_SUPPORT == ENABLED)
769 #if (X509_SHA3_512_SUPPORT == ENABLED && SHA3_512_SUPPORT == ENABLED)
778 #if (X509_SHAKE128_SUPPORT == ENABLED && SHAKE128_256_SUPPORT == ENABLED)
787 #if (X509_SHAKE256_SUPPORT == ENABLED && SHAKE256_512_SUPPORT == ENABLED)
797 #if (X509_SM2_SUPPORT == ENABLED && SM2_SUPPORT == ENABLED && \
798 X509_SM3_SUPPORT == ENABLED && SM3_SUPPORT == ENABLED)
807 #if (X509_ED25519_SUPPORT == ENABLED && ED25519_SUPPORT == ENABLED)
816 #if (X509_ED448_SUPPORT == ENABLED && ED448_SUPPORT == ENABLED)
825 #if (X509_MLDSA44_SUPPORT == ENABLED && MLDSA44_SUPPORT == ENABLED)
834 #if (X509_MLDSA65_SUPPORT == ENABLED && MLDSA65_SUPPORT == ENABLED)
843 #if (X509_MLDSA87_SUPPORT == ENABLED && MLDSA87_SUPPORT == ENABLED)
878 #if (RSA_SUPPORT == ENABLED)
890 #if (DSA_SUPPORT == ENABLED)
897 #if (EC_SUPPORT == ENABLED)
904 #if (X25519_SUPPORT == ENABLED)
911 #if (ED25519_SUPPORT == ENABLED)
918 #if (X448_SUPPORT == ENABLED)
925 #if (ED448_SUPPORT == ENABLED)
932 #if (MLDSA44_SUPPORT == ENABLED)
939 #if (MLDSA65_SUPPORT == ENABLED)
946 #if (MLDSA87_SUPPORT == ENABLED)
975 #if (X509_SHA1_SUPPORT == ENABLED && SHA1_SUPPORT == ENABLED)
983 #if (X509_SHA224_SUPPORT == ENABLED && SHA224_SUPPORT == ENABLED)
991 #if (X509_SHA256_SUPPORT == ENABLED && SHA256_SUPPORT == ENABLED)
999 #if (X509_SHA384_SUPPORT == ENABLED && SHA384_SUPPORT == ENABLED)
1007 #if (X509_SHA512_SUPPORT == ENABLED && SHA512_SUPPORT == ENABLED)
1015 #if (X509_SHA512_224_SUPPORT == ENABLED && SHA512_224_SUPPORT == ENABLED)
1023 #if (X509_SHA512_256_SUPPORT == ENABLED && SHA512_256_SUPPORT == ENABLED)
1031 #if (X509_SHA3_224_SUPPORT == ENABLED && SHA3_224_SUPPORT == ENABLED)
1039 #if (X509_SHA3_256_SUPPORT == ENABLED && SHA3_256_SUPPORT == ENABLED)
1047 #if (X509_SHA3_384_SUPPORT == ENABLED && SHA3_384_SUPPORT == ENABLED)
1055 #if (X509_SHA3_512_SUPPORT == ENABLED && SHA3_512_SUPPORT == ENABLED)
1087 #if (X509_ECDSA_SUPPORT == ENABLED && ECDSA_SUPPORT == ENABLED)
1093 #if (X509_SECP112R1_SUPPORT == ENABLED)
1100 #if (X509_SECP112R2_SUPPORT == ENABLED)
1107 #if (X509_SECP128R1_SUPPORT == ENABLED)
1114 #if (X509_SECP128R2_SUPPORT == ENABLED)
1121 #if (X509_SECP160K1_SUPPORT == ENABLED)
1128 #if (X509_SECP160R1_SUPPORT == ENABLED)
1135 #if (X509_SECP160R2_SUPPORT == ENABLED)
1142 #if (X509_SECP192K1_SUPPORT == ENABLED)
1149 #if (X509_SECP192R1_SUPPORT == ENABLED)
1156 #if (X509_SECP224K1_SUPPORT == ENABLED)
1163 #if (X509_SECP224R1_SUPPORT == ENABLED)
1170 #if (X509_SECP256K1_SUPPORT == ENABLED)
1177 #if (X509_SECP256R1_SUPPORT == ENABLED)
1184 #if (X509_SECP384R1_SUPPORT == ENABLED)
1191 #if (X509_SECP521R1_SUPPORT == ENABLED)
1198 #if (X509_BRAINPOOLP160R1_SUPPORT == ENABLED)
1205 #if (X509_BRAINPOOLP160T1_SUPPORT == ENABLED)
1212 #if (X509_BRAINPOOLP192R1_SUPPORT == ENABLED)
1219 #if (X509_BRAINPOOLP192T1_SUPPORT == ENABLED)
1226 #if (X509_BRAINPOOLP224R1_SUPPORT == ENABLED)
1233 #if (X509_BRAINPOOLP224T1_SUPPORT == ENABLED)
1240 #if (X509_BRAINPOOLP256R1_SUPPORT == ENABLED)
1247 #if (X509_BRAINPOOLP256T1_SUPPORT == ENABLED)
1254 #if (X509_BRAINPOOLP320R1_SUPPORT == ENABLED)
1261 #if (X509_BRAINPOOLP320T1_SUPPORT == ENABLED)
1268 #if (X509_BRAINPOOLP384R1_SUPPORT == ENABLED)
1275 #if (X509_BRAINPOOLP384T1_SUPPORT == ENABLED)
1282 #if (X509_BRAINPOOLP512R1_SUPPORT == ENABLED)
1289 #if (X509_BRAINPOOLP512T1_SUPPORT == ENABLED)
1296 #if (X509_FRP256V1_SUPPORT == ENABLED)
1303 #if (X509_SM2_SUPPORT == ENABLED)
1310 #if (X509_ED25519_SUPPORT == ENABLED)
1317 #if (X509_ED448_SUPPORT == ENABLED)
const uint8_t X509_POLICY_MAPPINGS_OID[3]
const uint8_t MLDSA44_OID[9]
bool_t x509IsCurveSupported(const uint8_t *oid, size_t length)
Check whether a given elliptic curve is supported.
#define SHA512_224_HASH_ALGO
#define SHA3_512_HASH_ALGO
X.509 common definitions.
const uint8_t X509_DOMAIN_COMPONENT_OID[10]
const uint8_t X509_CERTIFICATE_POLICIES_OID[3]
const uint8_t RSASSA_PKCS1_V1_5_WITH_SHA3_512_OID[9]
const uint8_t X509_KP_DOC_SIGNING_OID[8]
const uint8_t X509_KP_SERVER_AUTH_OID[8]
const uint8_t SHA3_384_OID[9]
const uint8_t DSA_WITH_SHA224_OID[9]
bool_t x509IsSignAlgoSupported(X509SignatureAlgo signAlgo)
Check whether a given signature algorithm is supported.
bool_t x509IsHashAlgoSupported(X509HashAlgo hashAlgo)
Check whether a given hash algorithm is supported.
const uint8_t X509_ISSUER_ALT_NAME_OID[3]
const uint8_t X25519_OID[3]
const uint8_t MD5_WITH_RSA_ENCRYPTION_OID[9]
const uint8_t X509_SUBJECT_ALT_NAME_OID[3]
const uint8_t SHA512_WITH_RSA_ENCRYPTION_OID[9]
const uint8_t MLDSA65_OID[9]
const uint8_t RSASSA_PSS_SHAKE256_OID[8]
const uint8_t X509_ORGANIZATION_NAME_OID[3]
const uint8_t RSASSA_PKCS1_V1_5_WITH_SHA3_384_OID[9]
const uint8_t X509_KP_CODE_SIGNING_OID[8]
const uint8_t RSASSA_PKCS1_V1_5_WITH_SHA3_224_OID[9]
const uint8_t BRAINPOOLP512T1_OID[9]
const uint8_t ECDSA_WITH_SHA3_512_OID[9]
const uint8_t EC_PUBLIC_KEY_OID[7]
const uint8_t X509_EXTENDED_KEY_USAGE_OID[3]
const uint8_t X509_ANY_EXT_KEY_USAGE_OID[4]
const uint8_t SECP224R1_OID[5]
const uint8_t BRAINPOOLP512R1_OID[9]
const uint8_t X509_INVALIDITY_DATE_OID[3]
const uint8_t BRAINPOOLP224T1_OID[9]
const uint8_t SECP160K1_OID[5]
const uint8_t X509_POLICY_CONSTRAINTS_OID[3]
const uint8_t SECP256K1_OID[5]
const uint8_t ECDSA_WITH_SHA3_256_OID[9]
#define osMemcmp(p1, p2, length)
const uint8_t X509_KEY_USAGE_OID[3]
const uint8_t X509_KP_TIME_STAMPING_OID[8]
const uint8_t BRAINPOOLP384R1_OID[9]
const uint8_t PKCS9_CHALLENGE_PASSWORD_OID[9]
const uint8_t X509_ISSUING_DISTR_POINT_OID[3]
const uint8_t X509_NAME_CONSTRAINTS_OID[3]
const uint8_t RSASSA_PSS_OID[9]
const uint8_t X509_KP_OCSP_SIGNING_OID[8]
const uint8_t X509_COUNTRY_NAME_OID[3]
const uint8_t ECDSA_WITH_SHA256_OID[8]
const uint8_t BRAINPOOLP320R1_OID[9]
const uint8_t SECP256R1_OID[8]
const uint8_t X509_INHIBIT_ANY_POLICY_OID[3]
const HashAlgo * x509GetHashAlgo(const uint8_t *oid, size_t length)
Get the hash algorithms that match the specified identifier.
const uint8_t DSA_WITH_SHA3_512_OID[9]
const uint8_t X509_PSEUDONYM_OID[3]
const uint8_t SECP224K1_OID[5]
const uint8_t BRAINPOOLP256T1_OID[9]
Certificate parsing options.
const uint8_t X509_DELTA_CRL_INDICATOR_OID[3]
const uint8_t ECDSA_WITH_SHAKE256_OID[8]
const uint8_t X509_BASIC_CONSTRAINTS_OID[3]
const uint8_t RSASSA_PKCS1_V1_5_WITH_SHA3_256_OID[9]
#define SHA3_224_HASH_ALGO
const uint8_t X509_TITLE_OID[3]
const uint8_t SHA384_WITH_RSA_ENCRYPTION_OID[9]
const uint8_t SECP112R1_OID[5]
const uint8_t SECP521R1_OID[5]
const uint8_t SHA512_224_WITH_RSA_ENCRYPTION_OID[9]
X509SignatureAlgo
Signature algorithms.
const uint8_t X509_AUTH_INFO_ACCESS_OID[8]
const uint8_t BRAINPOOLP160R1_OID[9]
const X509Options X509_DEFAULT_OPTIONS
const EcCurve * x509GetCurve(const uint8_t *oid, size_t length)
Get the elliptic curve that matches the specified OID.
const uint8_t DSA_WITH_SHA3_256_OID[9]
const uint8_t X509_INITIALS_OID[3]
const uint8_t DSA_WITH_SHA384_OID[9]
const uint8_t X509_DN_QUALIFIER_OID[3]
const uint8_t X509_SUBJECT_DIR_ATTR_OID[3]
const uint8_t SHA256_OID[9]
const uint8_t X509_LOCALITY_NAME_OID[3]
const uint8_t BRAINPOOLP192T1_OID[9]
const uint8_t X509_REASON_CODE_OID[3]
const uint8_t ECDSA_WITH_SHAKE128_OID[8]
const uint8_t X509_KP_EMAIL_PROTECTION_OID[8]
const uint8_t X509_SERIAL_NUMBER_OID[3]
const uint8_t ECDSA_WITH_SHA384_OID[8]
const uint8_t X509_AUTHORITY_KEY_ID_OID[3]
#define SHAKE256_512_HASH_ALGO
const uint8_t SHA3_512_OID[9]
const uint8_t DSA_WITH_SHA512_OID[9]
const uint8_t X509_COMMON_NAME_OID[3]
General definitions for cryptographic algorithms.
error_t x509GetSignHashAlgo(const X509SignAlgoId *signAlgoId, X509SignatureAlgo *signAlgo, const HashAlgo **hashAlgo)
Get the signature and hash algorithms that match the specified identifier.
const uint8_t X509_KP_IPSEC_USER_OID[8]
const uint8_t SHA3_224_OID[9]
@ X509_HASH_ALGO_SHA3_224
const uint8_t SECP128R2_OID[5]
const uint8_t SECP160R1_OID[5]
const uint8_t X509_PKIX_OCSP_NO_CHECK_OID[9]
const uint8_t X509_AD_OCSP[8]
const uint8_t X509_KP_IPSEC_IKE_OID[8]
const uint8_t X509_CRL_NUMBER_OID[3]
const uint8_t SM2_WITH_SM3_OID[8]
const uint8_t X509_CERTIFICATE_ISSUER_OID[3]
const uint8_t ECDSA_WITH_SHA3_224_OID[9]
X509HashAlgo
Hash algorithms.
const uint8_t X509_KP_CLIENT_AUTH_OID[8]
const uint8_t ECDSA_WITH_SHA1_OID[7]
const uint8_t ECDSA_WITH_SHA224_OID[8]
const uint8_t X509_CRL_DISTR_POINTS_OID[3]
const uint8_t SHA256_WITH_RSA_ENCRYPTION_OID[9]
const uint8_t PKCS9_EMAIL_ADDR_OID[9]
const uint8_t SECP192R1_OID[8]
const uint8_t ED448_OID[3]
const uint8_t ECDSA_WITH_SHA512_OID[8]
const uint8_t SECP384R1_OID[5]
Collection of hash algorithms.
const uint8_t ED25519_OID[3]
const uint8_t RSA_ENCRYPTION_OID[9]
const uint8_t X448_OID[3]
const uint8_t DSA_WITH_SHA3_384_OID[9]
@ X509_HASH_ALGO_SHA3_512
const uint8_t BRAINPOOLP384T1_OID[9]
const uint8_t SECP192K1_OID[5]
const uint8_t X509_KP_SSH_SERVER_OID[8]
const uint8_t DSA_WITH_SHA3_224_OID[9]
const uint8_t BRAINPOOLP160T1_OID[9]
#define SHA3_256_HASH_ALGO
const uint8_t X509_FRESHEST_CRL_OID[3]
const uint8_t SECP112R2_OID[5]
#define SHAKE128_256_HASH_ALGO
@ X509_HASH_ALGO_SHA3_256
@ X509_HASH_ALGO_SHA3_384
const uint8_t BRAINPOOLP320T1_OID[9]
const uint8_t X509_NAME_OID[3]
const uint8_t SHA3_256_OID[9]
#define OID_COMP(oid1, oidLen1, oid2)
const uint8_t X509_AD_CA_ISSUERS[8]
const uint8_t ECDSA_WITH_SHA3_384_OID[9]
@ X509_HASH_ALGO_SHAKE256_512
const uint8_t X509_NS_CERT_TYPE_OID[9]
const uint8_t BRAINPOOLP224R1_OID[9]
const uint8_t FRP256V1_OID[10]
const uint8_t DSA_WITH_SHA1_OID[7]
const uint8_t DSA_WITH_SHA256_OID[9]
const uint8_t X509_GENERATION_QUALIFIER_OID[3]
const uint8_t BRAINPOOLP192R1_OID[9]
const uint8_t SHA512_OID[9]
const uint8_t X509_KP_IPSEC_TUNNEL_OID[8]
const uint8_t X509_KP_CMC_RA_OID[8]
const uint8_t X509_ORGANIZATIONAL_UNIT_NAME_OID[3]
const EcCurve * ecGetCurve(const uint8_t *oid, size_t length)
Get the elliptic curve that matches the specified OID.
const uint8_t SECP160R2_OID[5]
const uint8_t X509_SURNAME_OID[3]
const uint8_t SHA1_OID[5]
#define SHA512_256_HASH_ALGO
const uint8_t SHA224_WITH_RSA_ENCRYPTION_OID[9]
const uint8_t X509_GIVEN_NAME_OID[3]
const uint8_t X509_SUBJECT_KEY_ID_OID[3]
Common interface for hash algorithms.
const uint8_t SHA224_OID[9]
const uint8_t X509_KP_IPSEC_END_SYSTEM_OID[8]
bool_t x509CompareName(const uint8_t *name1, size_t nameLen1, const uint8_t *name2, size_t nameLen2)
Compare distinguished names.
@ ERROR_UNSUPPORTED_SIGNATURE_ALGO
@ X509_HASH_ALGO_SHAKE128_256
const uint8_t MLDSA87_OID[9]
const uint8_t RSASSA_PSS_SHAKE128_OID[8]
X509KeyType
Public Key types.
X509KeyType x509GetPublicKeyType(const uint8_t *oid, size_t length)
Get the public key type that matches the specified OID.
const uint8_t SHA384_OID[9]
X509RsaPssParameters rsaPssParams
const uint8_t X509_STATE_OR_PROVINCE_NAME_OID[]
const uint8_t X509_KP_CMC_CA_OID[8]
const uint8_t SHA1_WITH_RSA_ENCRYPTION_OID[9]
const uint8_t PKCS9_EXTENSION_REQUEST_OID[9]
#define SHA3_384_HASH_ALGO
Signature algorithm identifier.
const uint8_t SECP128R1_OID[5]
const uint8_t SHA512_256_WITH_RSA_ENCRYPTION_OID[9]
ASN.1 (Abstract Syntax Notation One)
const uint8_t BRAINPOOLP256R1_OID[9]
const uint8_t X509_KP_SSH_CLIENT_OID[8]