X.509 module#
The X.509 module provides X.509 support for reading, writing and verification of certificates.
In summary:
X.509 certificate (CRT) reading (see
mbedtls_x509_crt_parse()
,mbedtls_x509_crt_parse_der()
,mbedtls_x509_crt_parse_file()
).X.509 certificate revocation list (CRL) reading (see
mbedtls_x509_crl_parse()
,mbedtls_x509_crl_parse_der()
, andmbedtls_x509_crl_parse_file()
).X.509 certificate signature verification (see
mbedtls_x509_crt_verify()
andmbedtls_x509_crt_verify_with_profile()
.X.509 certificate writing and certificate request writing (see
mbedtls_x509write_crt_der()
andmbedtls_x509write_csr_der()
).
This module can be used to build a certificate authority (CA) chain and verify its signature. It is also used to generate Certificate Signing Requests and X.509 certificates just as a CA would do.
Modules#
mbedtls_x509_crt_verify_chain_item
mbedtls_x509_subject_alternative_name
Structures and functions for parsing and writing X.509 certificates#
The type of certificate extension callbacks.
The type of trusted certificate callbacks.
Default security profile.
Expected next default profile.
NSA Suite B profile.
Empty profile that allows nothing.
Set Subject Alternative Name.
Parse a single DER formatted certificate and add it to the end of the provided chained list.
Parse a single DER formatted certificate and add it to the end of the provided chained list.
Parse a single DER formatted certificate and add it to the end of the provided chained list.
Parse one DER-encoded or one or more concatenated PEM-encoded certificates and add them to the chained list.
Returns an informational string about the certificate.
Returns an informational string about the verification status of a certificate.
Verify a chain of certificates.
Verify a chain of certificates with respect to a configurable security profile.
Restartable version of mbedtls_crt_verify_with_profile()
Check usage of certificate against keyUsage extension.
Check usage of certificate against extendedKeyUsage.
Verify the certificate revocation status.
Initialize a certificate (chain)
Unallocate all certificate data.
Query certificate for given extension type.
Build flag from an algorithm/curve identifier (pk, md, ecp) Since 0 is always XXX_NONE, ignore it.
Max size of verification chain: end-entity + intermediates + trusted root.
Structures for parsing X.509 certificates, CRLs and CSRs#
Type-length-value structure that allows for ASN1 using DER.
Container for ASN1 bit strings.
Container for ASN1 named information objects.
Container for a sequence of ASN.1 items.
Structures and functions for X.509 Certificate Signing Requests (CSR)#
Load a Certificate Signing Request (CSR) in DER format.
Load a Certificate Signing Request (CSR), DER or PEM format.
Returns an informational string about the CSR.
Initialize a CSR.
Unallocate all CSR data.
Structures and functions for parsing CRLs#
Parse a DER-encoded CRL and append it to the chained list.
Parse one or more CRLs and append them to the chained list.
Returns an informational string about the CRL.
Initialize a CRL (chain)
Unallocate all CRL data.
X509 Error codes#
Unavailable feature, e.g.
Requested OID is unknown.
The CRT/CRL/CSR format is invalid, e.g.
The CRT/CRL/CSR version element is invalid.
The serial tag or value is invalid.
The algorithm tag or value is invalid.
The name tag or value is invalid.
The date tag or value is invalid.
The signature tag or value invalid.
The extension tag or value is invalid.
CRT/CRL/CSR has an unsupported version number.
Signature algorithm (oid) is unsupported.
Signature algorithms do not match.
Certificate verification failed, e.g.
Format not recognized as DER or PEM.
Input invalid.
Allocation of memory failed.
Read/write of file failed.
Destination buffer is too small.
A fatal error occurred, eg the chain is too long or the vrfy callback failed.
X509 Verify codes#
The certificate validity has expired.
The certificate has been revoked (is on a CRL).
The certificate Common Name (CN) does not match with the expected CN.
The certificate is not correctly signed by the trusted CA.
The CRL is not correctly signed by the trusted CA.
The CRL is expired.
Certificate was missing.
Certificate verification was skipped.
Other reason (can be used by verify callback)
The certificate validity starts in the future.
The CRL is from the future.
Usage does not match the keyUsage extension.
Usage does not match the extendedKeyUsage extension.
Usage does not match the nsCertType extension.
The certificate is signed with an unacceptable hash.
The certificate is signed with an unacceptable PK alg (eg RSA vs ECDSA).
The certificate is signed with an unacceptable key (eg bad curve, RSA too short).
The CRL is signed with an unacceptable hash.
The CRL is signed with an unacceptable PK alg (eg RSA vs ECDSA).
The CRL is signed with an unacceptable key (eg bad curve, RSA too short).
Functions#
Initialize a CRT writing context.
Set the version for a Certificate Default: MBEDTLS_X509_CRT_VERSION_3.
Set the serial number for a Certificate.
Set the serial number for a Certificate.
Set the validity period for a Certificate Timestamps should be in string format for UTC timezone i.e.
Set the issuer name for a Certificate Issuer names should contain a comma-separated list of OID types and values: e.g.
Set the subject name for a Certificate Subject names should contain a comma-separated list of OID types and values: e.g.
Set the subject public key for the certificate.
Set the issuer key used for signing the certificate.
Set the MD algorithm to use for the signature (e.g.
Generic function to add to or replace an extension in the CRT.
Set the basicConstraints extension for a CRT.
Set the Key Usage Extension flags (e.g.
Set the Extended Key Usage Extension (e.g.
Set the Netscape Cert Type flags (e.g.
Free the contents of a CRT write context.
Write a built up certificate to a X509 DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.
Write a built up certificate to a X509 PEM string.
Store the certificate DN in printable form into buf; no more than size characters will be written.
Return the next relative DN in an X509 name.
Store the certificate serial in printable form into buf; no more than size characters will be written.
Compare pair of mbedtls_x509_time.
Check a given mbedtls_x509_time against the system time and tell if it's in the past.
Check a given mbedtls_x509_time against the system time and tell if it's in the future.
This function parses an item in the SubjectAlternativeNames extension.
Unallocate all data related to subject alternative name.
Initialize a CSR context.
Set the subject name for a CSR Subject names should contain a comma-separated list of OID types and values: e.g.
Set the key for a CSR (public key will be included, private key used to sign the CSR when writing it)
Set the MD algorithm to use for the signature (e.g.
Set the Key Usage Extension flags (e.g.
Set Subject Alternative Name.
Set the Netscape Cert Type flags (e.g.
Generic function to add to or replace an extension in the CSR.
Free the contents of a CSR context.
Write a CSR (Certificate Signing Request) to a DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.
Write a CSR (Certificate Signing Request) to a PEM string.
Macros#
Maximum number of intermediate CAs in a verification chain.
Structures and functions for parsing and writing X.509 certificates Documentation#
mbedtls_x509_crt_restart_ctx#
typedef void mbedtls_x509_crt_restart_ctx
318
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_ext_cb_t#
typedef int(* mbedtls_x509_crt_ext_cb_t) (void *p_ctx, mbedtls_x509_crt const *crt, mbedtls_x509_buf const *oid, int critical, const unsigned char *p, const unsigned char *end) )(void *p_ctx, mbedtls_x509_crt const *crt, mbedtls_x509_buf const *oid, int critical, const unsigned char *p, const unsigned char *end)
The type of certificate extension callbacks.
N/A | p_ctx | An opaque context passed to the callback. |
N/A | crt | The certificate being parsed. |
N/A | oid | The OID of the extension. |
N/A | critical | Whether the extension is critical. |
N/A | p | Pointer to the start of the extension value (the content of the OCTET STRING). |
N/A | end | End of extension value. |
Callbacks of this type are passed to and used by the
mbedtls_x509_crt_parse_der_with_ext_cb() routine when
it encounters either an unsupported extension or a
"certificate policies" extension containing any
unsupported certificate policies.
Future versions of the library may invoke the callback
in other cases, if and when the need arises.
Note
The callback must fail and return a negative error code if it can not parse or does not support the extension. When the callback fails to parse a critical extension mbedtls_x509_crt_parse_der_with_ext_cb() also fails. When the callback fails to parse a non critical extension mbedtls_x509_crt_parse_der_with_ext_cb() simply skips the extension and continues parsing.
Returns
0
on success.A negative error code on failure.
414
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_ca_cb_t#
typedef int(* mbedtls_x509_crt_ca_cb_t) (void *p_ctx, mbedtls_x509_crt const *child, mbedtls_x509_crt **candidate_cas) )(void *p_ctx, mbedtls_x509_crt const *child, mbedtls_x509_crt **candidate_cas)
The type of trusted certificate callbacks.
N/A | p_ctx | An opaque context passed to the callback. |
N/A | child | The certificate for which to search a potential signer. This will point to a readable certificate. |
N/A | candidate_cas | The address at which to store the address of the first entry in the generated linked list of candidate signers. This will not be |
Callbacks of this type are passed to and used by the CRT
verification routine mbedtls_x509_crt_verify_with_ca_cb()
when looking for trusted signers of a given certificate.
On success, the callback returns a list of trusted
certificates to be considered as potential signers
for the input certificate.
Note
The callback must only return a non-zero value on a fatal error. If, in contrast, the search for a potential signer completes without a single candidate, the callback must return
0
and set*candidate_cas
toNULL
.
Returns
0
on success. In this case,*candidate_cas
points to a heap-allocated linked list of instances of mbedtls_x509_crt, and ownership of this list is passed to the caller.A negative error code on failure.
796
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_profile_default#
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_default
Default security profile.
Should provide a good balance between security and compatibility with current deployments.
This profile permits:
SHA2 hashes with at least 256 bits: SHA-256, SHA-384, SHA-512.
Elliptic curves with 255 bits and above except secp256k1.
RSA with 2048 bits and above.
New minor versions of Mbed TLS may extend this profile, for example if new algorithms are added to the library. New minor versions of Mbed TLS will not reduce this profile unless serious security concerns require it.
336
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_profile_next#
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_next
Expected next default profile.
Recommended for new deployments. Currently targets a 128-bit security level, except for allowing RSA-2048. This profile may change at any time.
343
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_profile_suiteb#
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_suiteb
NSA Suite B profile.
348
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_profile_none#
const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_none
Empty profile that allows nothing.
Useful as a basis for constructing custom profiles.
354
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_subject_alternative_name#
int mbedtls_x509write_crt_set_subject_alternative_name (mbedtls_x509write_cert * ctx, const mbedtls_x509_san_list * san_list)
Set Subject Alternative Name.
N/A | ctx | Certificate context to use |
N/A | san_list | List of SAN values |
Returns
0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED
Note
"dnsName", "uniformResourceIdentifier", "IP address", "otherName", and "DirectoryName", as defined in RFC 5280, are supported.
256
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_parse_der#
int mbedtls_x509_crt_parse_der (mbedtls_x509_crt * chain, const unsigned char * buf, size_t buflen)
Parse a single DER formatted certificate and add it to the end of the provided chained list.
N/A | chain | The pointer to the start of the CRT chain to attach to. When parsing the first CRT in a chain, this should point to an instance of mbedtls_x509_crt initialized through mbedtls_x509_crt_init(). |
N/A | buf | The buffer holding the DER encoded certificate. |
N/A | buflen | The size in Bytes of |
Note
If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto subsystem must have been initialized by calling psa_crypto_init() before calling this function.
Note
This function makes an internal copy of the CRT buffer
buf
. In particular,buf
may be destroyed or reused after this call returns. To avoid duplicating the CRT buffer (at the cost of stricter lifetime constraints), use mbedtls_x509_crt_parse_der_nocopy() instead.
Returns
0
if successful.A negative error code on failure.
380
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_parse_der_with_ext_cb#
int mbedtls_x509_crt_parse_der_with_ext_cb (mbedtls_x509_crt * chain, const unsigned char * buf, size_t buflen, int make_copy, mbedtls_x509_crt_ext_cb_t cb, void * p_ctx)
Parse a single DER formatted certificate and add it to the end of the provided chained list.
N/A | chain | The pointer to the start of the CRT chain to attach to. When parsing the first CRT in a chain, this should point to an instance of mbedtls_x509_crt initialized through mbedtls_x509_crt_init(). |
N/A | buf | The buffer holding the DER encoded certificate. |
N/A | buflen | The size in Bytes of |
N/A | make_copy | When not zero this function makes an internal copy of the CRT buffer |
N/A | cb | A callback invoked for every unsupported certificate extension. |
N/A | p_ctx | An opaque context passed to the callback. |
Note
If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto subsystem must have been initialized by calling psa_crypto_init() before calling this function.
Note
This call is functionally equivalent to mbedtls_x509_crt_parse_der(), and/or mbedtls_x509_crt_parse_der_nocopy() but it calls the callback with every unsupported certificate extension and additionally the "certificate policies" extension if it contains any unsupported certificate policies. The callback must return a negative error code if it does not know how to handle such an extension. When the callback fails to parse a critical extension mbedtls_x509_crt_parse_der_with_ext_cb() also fails. When the callback fails to parse a non critical extension mbedtls_x509_crt_parse_der_with_ext_cb() simply skips the extension and continues parsing. Future versions of the library may invoke the callback in other cases, if and when the need arises.
Returns
0
if successful.A negative error code on failure.
465
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_parse_der_nocopy#
int mbedtls_x509_crt_parse_der_nocopy (mbedtls_x509_crt * chain, const unsigned char * buf, size_t buflen)
Parse a single DER formatted certificate and add it to the end of the provided chained list.
N/A | chain | The pointer to the start of the CRT chain to attach to. When parsing the first CRT in a chain, this should point to an instance of mbedtls_x509_crt initialized through mbedtls_x509_crt_init(). |
N/A | buf | The address of the readable buffer holding the DER encoded certificate to use. On success, this buffer must be retained and not be changed for the lifetime of the CRT chain |
N/A | buflen | The size in Bytes of |
This is a variant of mbedtls_x509_crt_parse_der() which takes temporary ownership of the CRT buffer until the CRT is destroyed.
Note
If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto subsystem must have been initialized by calling psa_crypto_init() before calling this function.
Note
This call is functionally equivalent to mbedtls_x509_crt_parse_der(), but it avoids creating a copy of the input buffer at the cost of stronger lifetime constraints. This is useful in constrained environments where duplication of the CRT cannot be tolerated.
Returns
0
if successful.A negative error code on failure.
503
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_parse#
int mbedtls_x509_crt_parse (mbedtls_x509_crt * chain, const unsigned char * buf, size_t buflen)
Parse one DER-encoded or one or more concatenated PEM-encoded certificates and add them to the chained list.
N/A | chain | The chain to which to add the parsed certificates. |
N/A | buf | The buffer holding the certificate data in PEM or DER format. For certificates in PEM encoding, this may be a concatenation of multiple certificates; for DER encoding, the buffer must comprise exactly one certificate. |
N/A | buflen | The size of |
For CRTs in PEM encoding, the function parses permissively: if at least one certificate can be parsed, the function returns the number of certificates for which parsing failed (hence 0
if all certificates were parsed successfully). If no certificate could be parsed, the function returns the first (negative) error encountered during parsing.
PEM encoded certificates may be interleaved by other data such as human readable descriptions of their content, as long as the certificates are enclosed in the PEM specific '--—{BEGIN/END} CERTIFICATE--—' delimiters.
Note
If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto subsystem must have been initialized by calling psa_crypto_init() before calling this function.
Returns
0
if all certificates were parsed successfully.The (positive) number of certificates that couldn't be parsed if parsing was partly successful (see above).
A negative X509 or PEM error code otherwise.
541
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_info#
int mbedtls_x509_crt_info (char * buf, size_t size, const char * prefix, const mbedtls_x509_crt * crt)
Returns an informational string about the certificate.
N/A | buf | Buffer to write to |
N/A | size | Maximum size of buffer |
N/A | prefix | A line prefix |
N/A | crt | The X509 certificate to represent |
Returns
The length of the string written (not including the terminated nul byte), or a negative error code.
593
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_verify_info#
int mbedtls_x509_crt_verify_info (char * buf, size_t size, const char * prefix, uint32_t flags)
Returns an informational string about the verification status of a certificate.
N/A | buf | Buffer to write to |
N/A | size | Maximum size of buffer |
N/A | prefix | A line prefix |
N/A | flags | Verification flags created by mbedtls_x509_crt_verify() |
Returns
The length of the string written (not including the terminated nul byte), or a negative error code.
608
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_verify#
int mbedtls_x509_crt_verify (mbedtls_x509_crt * crt, mbedtls_x509_crt * trust_ca, mbedtls_x509_crl * ca_crl, const char * cn, uint32_t * flags, int(*)(void *, mbedtls_x509_crt *, int, uint32_t *) f_vrfy, void * p_vrfy)
Verify a chain of certificates.
N/A | crt | The certificate chain to be verified. |
N/A | trust_ca | The list of trusted CAs. |
N/A | ca_crl | The list of CRLs for trusted CAs. |
N/A | cn | The expected Common Name. This will be checked to be present in the certificate's subjectAltNames extension or, if this extension is absent, as a CN component in its Subject name. DNS names and IP addresses are fully supported, while the URI subtype is partially supported: only exact matching, without any normalization procedures described in 7.4 of RFC5280, will result in a positive URI verification. This may be |
N/A | flags | The address at which to store the result of the verification. If the verification couldn't be completed, the flag value is set to (uint32_t) -1. |
N/A | f_vrfy | The verification callback to use. See the documentation of mbedtls_x509_crt_verify() for more information. |
N/A | p_vrfy | The context to be passed to |
The verify callback is a user-supplied callback that
can clear / modify / add flags for a certificate. If set,
the verification callback is called for each
certificate in the chain (from the trust-ca down to the
presented crt). The parameters for the callback are:
(void *parameter, mbedtls_x509_crt *crt, int certificate_depth,
int *flags). With the flags representing current flags for
that specific certificate and the certificate depth from
the bottom (Peer cert depth = 0).
All flags left after returning from the callback
are also returned to the application. The function should
return 0 for anything (including invalid certificates)
other than fatal error, as a non-zero return code
immediately aborts the verification process. For fatal
errors, a specific error code should be used (different
from MBEDTLS_ERR_X509_CERT_VERIFY_FAILED which should not
be returned at this point), or MBEDTLS_ERR_X509_FATAL_ERROR
can be used if no better code is available.
Note
In case verification failed, the results can be displayed using
mbedtls_x509_crt_verify_info()
Same as
mbedtls_x509_crt_verify_with_profile()
with the default security profile.It is your responsibility to provide up-to-date CRLs for all trusted CAs. If no CRL is provided for the CA that was used to sign the certificate, CRL verification is skipped silently, that is without setting any flag.
The
trust_ca
list can contain two types of certificates: (1) those of trusted root CAs, so that certificates chaining up to those CAs will be trusted, and (2) self-signed end-entity certificates to be trusted (for specific peers you know) - in that case, the self-signed certificate doesn't need to have the CA bit set.
Returns
0
if the chain is valid with respect to the passed CN, CAs, CRLs and security profile.MBEDTLS_ERR_X509_CERT_VERIFY_FAILED in case the certificate chain verification failed. In this case,
*flags
will have one or moreMBEDTLS_X509_BADCERT_XXX
orMBEDTLS_X509_BADCRL_XXX
flags set.Another negative error code in case of a fatal error encountered during the verification process.
682
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_verify_with_profile#
int mbedtls_x509_crt_verify_with_profile (mbedtls_x509_crt * crt, mbedtls_x509_crt * trust_ca, mbedtls_x509_crl * ca_crl, const mbedtls_x509_crt_profile * profile, const char * cn, uint32_t * flags, int(*)(void *, mbedtls_x509_crt *, int, uint32_t *) f_vrfy, void * p_vrfy)
Verify a chain of certificates with respect to a configurable security profile.
N/A | crt | The certificate chain to be verified. |
N/A | trust_ca | The list of trusted CAs. |
N/A | ca_crl | The list of CRLs for trusted CAs. |
N/A | profile | The security profile to use for the verification. |
N/A | cn | The expected Common Name. This may be |
N/A | flags | The address at which to store the result of the verification. If the verification couldn't be completed, the flag value is set to (uint32_t) -1. |
N/A | f_vrfy | The verification callback to use. See the documentation of mbedtls_x509_crt_verify() for more information. |
N/A | p_vrfy | The context to be passed to |
Note
Same as
mbedtls_x509_crt_verify()
, but with explicit security profile.The restrictions on keys (RSA minimum size, allowed curves for ECDSA) apply to all certificates: trusted root, intermediate CAs if any, and end entity certificate.
Returns
0
if the chain is valid with respect to the passed CN, CAs, CRLs and security profile.MBEDTLS_ERR_X509_CERT_VERIFY_FAILED in case the certificate chain verification failed. In this case,
*flags
will have one or moreMBEDTLS_X509_BADCERT_XXX
orMBEDTLS_X509_BADCRL_XXX
flags set.Another negative error code in case of a fatal error encountered during the verification process.
723
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_verify_restartable#
int mbedtls_x509_crt_verify_restartable (mbedtls_x509_crt * crt, mbedtls_x509_crt * trust_ca, mbedtls_x509_crl * ca_crl, const mbedtls_x509_crt_profile * profile, const char * cn, uint32_t * flags, int(*)(void *, mbedtls_x509_crt *, int, uint32_t *) f_vrfy, void * p_vrfy, mbedtls_x509_crt_restart_ctx * rs_ctx)
Restartable version of mbedtls_crt_verify_with_profile()
N/A | crt | The certificate chain to be verified. |
N/A | trust_ca | The list of trusted CAs. |
N/A | ca_crl | The list of CRLs for trusted CAs. |
N/A | profile | The security profile to use for the verification. |
N/A | cn | The expected Common Name. This may be |
N/A | flags | The address at which to store the result of the verification. If the verification couldn't be completed, the flag value is set to (uint32_t) -1. |
N/A | f_vrfy | The verification callback to use. See the documentation of mbedtls_x509_crt_verify() for more information. |
N/A | p_vrfy | The context to be passed to |
N/A | rs_ctx | The restart context to use. This may be set to |
Note
Performs the same job as
mbedtls_crt_verify_with_profile()
but can return early and restart according to the limit set withmbedtls_ecp_set_max_ops()
to reduce blocking.
Returns
See
mbedtls_crt_verify_with_profile()
, or#MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of operations was reached: see
mbedtls_ecp_set_max_ops()
.
757
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_check_key_usage#
int mbedtls_x509_crt_check_key_usage (const mbedtls_x509_crt * crt, unsigned int usage)
Check usage of certificate against keyUsage extension.
N/A | crt | Leaf certificate used. |
N/A | usage | Intended usage(s) (eg MBEDTLS_X509_KU_KEY_ENCIPHERMENT before using the certificate to perform an RSA key exchange). |
Note
Except for decipherOnly and encipherOnly, a bit set in the usage argument means this bit MUST be set in the certificate. For decipherOnly and encipherOnly, it means that bit MAY be set.
Returns
0 is these uses of the certificate are allowed, MBEDTLS_ERR_X509_BAD_INPUT_DATA if the keyUsage extension is present but does not match the usage argument.
Note
You should only call this function on leaf certificates, on (intermediate) CAs the keyUsage extension is automatically checked by
mbedtls_x509_crt_verify()
.
854
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_check_extended_key_usage#
int mbedtls_x509_crt_check_extended_key_usage (const mbedtls_x509_crt * crt, const char * usage_oid, size_t usage_len)
Check usage of certificate against extendedKeyUsage.
N/A | crt | Leaf certificate used. |
N/A | usage_oid | Intended usage (eg MBEDTLS_OID_SERVER_AUTH or MBEDTLS_OID_CLIENT_AUTH). |
N/A | usage_len | Length of usage_oid (eg given by MBEDTLS_OID_SIZE()). |
Returns
0 if this use of the certificate is allowed, MBEDTLS_ERR_X509_BAD_INPUT_DATA if not.
Note
Usually only makes sense on leaf certificates.
870
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_is_revoked#
int mbedtls_x509_crt_is_revoked (const mbedtls_x509_crt * crt, const mbedtls_x509_crl * crl)
Verify the certificate revocation status.
N/A | crt | a certificate to be verified |
N/A | crl | the CRL to verify against |
Returns
1 if the certificate is revoked, 0 otherwise
884
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_init#
void mbedtls_x509_crt_init (mbedtls_x509_crt * crt)
Initialize a certificate (chain)
N/A | crt | Certificate chain to initialize |
892
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_free#
void mbedtls_x509_crt_free (mbedtls_x509_crt * crt)
Unallocate all certificate data.
N/A | crt | Certificate chain to free |
899
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_crt_has_ext_type#
static int mbedtls_x509_crt_has_ext_type (const mbedtls_x509_crt * ctx, int ext_type)
Query certificate for given extension type.
[in] | ctx | Certificate context to be queried, must not be |
N/A | ext_type | Extension type being queried for, must be a valid extension type. Must be one of the MBEDTLS_X509_EXT_XXX values |
Returns
0 if the given extension type is not present, non-zero otherwise
925
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_ID_FLAG#
#define MBEDTLS_X509_ID_FLAGValue:
(id)
Build flag from an algorithm/curve identifier (pk, md, ecp) Since 0 is always XXX_NONE, ignore it.
110
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_CRT_VERSION_1#
#define MBEDTLS_X509_CRT_VERSION_1Value:
0
147
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_CRT_VERSION_2#
#define MBEDTLS_X509_CRT_VERSION_2Value:
1
148
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_CRT_VERSION_3#
#define MBEDTLS_X509_CRT_VERSION_3Value:
2
149
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_RFC5280_MAX_SERIAL_LEN#
#define MBEDTLS_X509_RFC5280_MAX_SERIAL_LENValue:
20
151
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_RFC5280_UTC_TIME_LEN#
#define MBEDTLS_X509_RFC5280_UTC_TIME_LENValue:
15
152
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_MAX_FILE_PATH_LEN#
#define MBEDTLS_X509_MAX_FILE_PATH_LENValue:
512
155
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_CRT_ERROR_INFO_LIST#
#define MBEDTLS_X509_CRT_ERROR_INFO_LIST
164
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE#
#define MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZEValue:
(MBEDTLS_X509_MAX_INTERMEDIATE_CA + 2)
Max size of verification chain: end-entity + intermediates + trusted root.
270
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
Structures for parsing X.509 certificates, CRLs and CSRs Documentation#
mbedtls_x509_buf#
typedef mbedtls_asn1_buf mbedtls_x509_buf
Type-length-value structure that allows for ASN1 using DER.
228
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_bitstring#
typedef mbedtls_asn1_bitstring mbedtls_x509_bitstring
Container for ASN1 bit strings.
233
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_name#
typedef mbedtls_asn1_named_data mbedtls_x509_name
Container for ASN1 named information objects.
It allows for Relative Distinguished Names (e.g. cn=localhost,ou=code,etc.).
239
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_sequence#
typedef mbedtls_asn1_sequence mbedtls_x509_sequence
Container for a sequence of ASN.1 items.
244
of file util/third_party/mbedtls/include/mbedtls/x509.h
Structures and functions for X.509 Certificate Signing Requests (CSR) Documentation#
mbedtls_x509_csr_parse_der#
int mbedtls_x509_csr_parse_der (mbedtls_x509_csr * csr, const unsigned char * buf, size_t buflen)
Load a Certificate Signing Request (CSR) in DER format.
N/A | csr | CSR context to fill |
N/A | buf | buffer holding the CRL data |
N/A | buflen | size of the buffer |
Note
CSR attributes (if any) are currently silently ignored.
If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto subsystem must have been initialized by calling psa_crypto_init() before calling this function.
Returns
0 if successful, or a specific X509 error code
102
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509_csr_parse#
int mbedtls_x509_csr_parse (mbedtls_x509_csr * csr, const unsigned char * buf, size_t buflen)
Load a Certificate Signing Request (CSR), DER or PEM format.
N/A | csr | CSR context to fill |
N/A | buf | buffer holding the CRL data |
N/A | buflen | size of the buffer (including the terminating null byte for PEM data) |
Note
See notes for
mbedtls_x509_csr_parse_der()
If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto subsystem must have been initialized by calling psa_crypto_init() before calling this function.
Returns
0 if successful, or a specific X509 or PEM error code
121
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509_csr_info#
int mbedtls_x509_csr_info (char * buf, size_t size, const char * prefix, const mbedtls_x509_csr * csr)
Returns an informational string about the CSR.
N/A | buf | Buffer to write to |
N/A | size | Maximum size of buffer |
N/A | prefix | A line prefix |
N/A | csr | The X509 CSR to represent |
Returns
The length of the string written (not including the terminated nul byte), or a negative error code.
150
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509_csr_init#
void mbedtls_x509_csr_init (mbedtls_x509_csr * csr)
Initialize a CSR.
N/A | csr | CSR to initialize |
159
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509_csr_free#
void mbedtls_x509_csr_free (mbedtls_x509_csr * csr)
Unallocate all CSR data.
N/A | csr | CSR to free |
166
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
Structures and functions for parsing CRLs Documentation#
mbedtls_x509_crl_parse_der#
int mbedtls_x509_crl_parse_der (mbedtls_x509_crl * chain, const unsigned char * buf, size_t buflen)
Parse a DER-encoded CRL and append it to the chained list.
N/A | chain | points to the start of the chain |
N/A | buf | buffer holding the CRL data in DER format |
N/A | buflen | size of the buffer (including the terminating null byte for PEM data) |
Note
If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto subsystem must have been initialized by calling psa_crypto_init() before calling this function.
Returns
0 if successful, or a specific X509 or PEM error code
121
of file util/third_party/mbedtls/include/mbedtls/x509_crl.h
mbedtls_x509_crl_parse#
int mbedtls_x509_crl_parse (mbedtls_x509_crl * chain, const unsigned char * buf, size_t buflen)
Parse one or more CRLs and append them to the chained list.
N/A | chain | points to the start of the chain |
N/A | buf | buffer holding the CRL data in PEM or DER format |
N/A | buflen | size of the buffer (including the terminating null byte for PEM data) |
Note
Multiple CRLs are accepted only if using PEM format
If #MBEDTLS_USE_PSA_CRYPTO is enabled, the PSA crypto subsystem must have been initialized by calling psa_crypto_init() before calling this function.
Returns
0 if successful, or a specific X509 or PEM error code
139
of file util/third_party/mbedtls/include/mbedtls/x509_crl.h
mbedtls_x509_crl_info#
int mbedtls_x509_crl_info (char * buf, size_t size, const char * prefix, const mbedtls_x509_crl * crl)
Returns an informational string about the CRL.
N/A | buf | Buffer to write to |
N/A | size | Maximum size of buffer |
N/A | prefix | A line prefix |
N/A | crl | The X509 CRL to represent |
Returns
The length of the string written (not including the terminated nul byte), or a negative error code.
171
of file util/third_party/mbedtls/include/mbedtls/x509_crl.h
mbedtls_x509_crl_init#
void mbedtls_x509_crl_init (mbedtls_x509_crl * crl)
Initialize a CRL (chain)
N/A | crl | CRL chain to initialize |
180
of file util/third_party/mbedtls/include/mbedtls/x509_crl.h
mbedtls_x509_crl_free#
void mbedtls_x509_crl_free (mbedtls_x509_crl * crl)
Unallocate all CRL data.
N/A | crl | CRL chain to free |
187
of file util/third_party/mbedtls/include/mbedtls/x509_crl.h
X509 Error codes Documentation#
MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE
#define MBEDTLS_ERR_X509_FEATURE_UNAVAILABLEValue:
-0x2080
Unavailable feature, e.g.
RSA hashing/encryption combination.
57
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_UNKNOWN_OID#
#define MBEDTLS_ERR_X509_UNKNOWN_OIDValue:
-0x2100
Requested OID is unknown.
59
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_INVALID_FORMAT#
#define MBEDTLS_ERR_X509_INVALID_FORMATValue:
-0x2180
The CRT/CRL/CSR format is invalid, e.g.
different type expected.
61
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_INVALID_VERSION#
#define MBEDTLS_ERR_X509_INVALID_VERSIONValue:
-0x2200
The CRT/CRL/CSR version element is invalid.
63
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_INVALID_SERIAL#
#define MBEDTLS_ERR_X509_INVALID_SERIALValue:
-0x2280
The serial tag or value is invalid.
65
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_INVALID_ALG#
#define MBEDTLS_ERR_X509_INVALID_ALGValue:
-0x2300
The algorithm tag or value is invalid.
67
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_INVALID_NAME#
#define MBEDTLS_ERR_X509_INVALID_NAMEValue:
-0x2380
The name tag or value is invalid.
69
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_INVALID_DATE#
#define MBEDTLS_ERR_X509_INVALID_DATEValue:
-0x2400
The date tag or value is invalid.
71
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_INVALID_SIGNATURE#
#define MBEDTLS_ERR_X509_INVALID_SIGNATUREValue:
-0x2480
The signature tag or value invalid.
73
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_INVALID_EXTENSIONS#
#define MBEDTLS_ERR_X509_INVALID_EXTENSIONSValue:
-0x2500
The extension tag or value is invalid.
75
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_UNKNOWN_VERSION#
#define MBEDTLS_ERR_X509_UNKNOWN_VERSIONValue:
-0x2580
CRT/CRL/CSR has an unsupported version number.
77
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_UNKNOWN_SIG_ALG#
#define MBEDTLS_ERR_X509_UNKNOWN_SIG_ALGValue:
-0x2600
Signature algorithm (oid) is unsupported.
79
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_SIG_MISMATCH#
#define MBEDTLS_ERR_X509_SIG_MISMATCHValue:
-0x2680
Signature algorithms do not match.
(see mbedtls_x509_crt
sig_oid)
81
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_CERT_VERIFY_FAILED#
#define MBEDTLS_ERR_X509_CERT_VERIFY_FAILEDValue:
-0x2700
Certificate verification failed, e.g.
CRL, CA or signature check failed.
83
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_CERT_UNKNOWN_FORMAT#
#define MBEDTLS_ERR_X509_CERT_UNKNOWN_FORMATValue:
-0x2780
Format not recognized as DER or PEM.
85
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_BAD_INPUT_DATA#
#define MBEDTLS_ERR_X509_BAD_INPUT_DATAValue:
-0x2800
Input invalid.
87
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_ALLOC_FAILED#
#define MBEDTLS_ERR_X509_ALLOC_FAILEDValue:
-0x2880
Allocation of memory failed.
89
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_FILE_IO_ERROR#
#define MBEDTLS_ERR_X509_FILE_IO_ERRORValue:
-0x2900
Read/write of file failed.
91
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_BUFFER_TOO_SMALL#
#define MBEDTLS_ERR_X509_BUFFER_TOO_SMALLValue:
-0x2980
Destination buffer is too small.
93
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_ERR_X509_FATAL_ERROR#
#define MBEDTLS_ERR_X509_FATAL_ERRORValue:
-0x3000
A fatal error occurred, eg the chain is too long or the vrfy callback failed.
95
of file util/third_party/mbedtls/include/mbedtls/x509.h
X509 Verify codes Documentation#
MBEDTLS_X509_BADCERT_EXPIRED#
#define MBEDTLS_X509_BADCERT_EXPIREDValue:
0x01
The certificate validity has expired.
103
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_REVOKED#
#define MBEDTLS_X509_BADCERT_REVOKEDValue:
0x02
The certificate has been revoked (is on a CRL).
104
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_CN_MISMATCH#
#define MBEDTLS_X509_BADCERT_CN_MISMATCHValue:
0x04
The certificate Common Name (CN) does not match with the expected CN.
105
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_NOT_TRUSTED#
#define MBEDTLS_X509_BADCERT_NOT_TRUSTEDValue:
0x08
The certificate is not correctly signed by the trusted CA.
106
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCRL_NOT_TRUSTED#
#define MBEDTLS_X509_BADCRL_NOT_TRUSTEDValue:
0x10
The CRL is not correctly signed by the trusted CA.
107
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCRL_EXPIRED#
#define MBEDTLS_X509_BADCRL_EXPIREDValue:
0x20
The CRL is expired.
108
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_MISSING#
#define MBEDTLS_X509_BADCERT_MISSINGValue:
0x40
Certificate was missing.
109
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_SKIP_VERIFY#
#define MBEDTLS_X509_BADCERT_SKIP_VERIFYValue:
0x80
Certificate verification was skipped.
110
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_OTHER#
#define MBEDTLS_X509_BADCERT_OTHERValue:
0x0100
Other reason (can be used by verify callback)
111
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_FUTURE#
#define MBEDTLS_X509_BADCERT_FUTUREValue:
0x0200
The certificate validity starts in the future.
112
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCRL_FUTURE#
#define MBEDTLS_X509_BADCRL_FUTUREValue:
0x0400
The CRL is from the future.
113
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_KEY_USAGE#
#define MBEDTLS_X509_BADCERT_KEY_USAGEValue:
0x0800
Usage does not match the keyUsage extension.
114
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_EXT_KEY_USAGE#
#define MBEDTLS_X509_BADCERT_EXT_KEY_USAGEValue:
0x1000
Usage does not match the extendedKeyUsage extension.
115
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_NS_CERT_TYPE#
#define MBEDTLS_X509_BADCERT_NS_CERT_TYPEValue:
0x2000
Usage does not match the nsCertType extension.
116
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_BAD_MD#
#define MBEDTLS_X509_BADCERT_BAD_MDValue:
0x4000
The certificate is signed with an unacceptable hash.
117
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_BAD_PK#
#define MBEDTLS_X509_BADCERT_BAD_PKValue:
0x8000
The certificate is signed with an unacceptable PK alg (eg RSA vs ECDSA).
118
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCERT_BAD_KEY#
#define MBEDTLS_X509_BADCERT_BAD_KEYValue:
0x010000
The certificate is signed with an unacceptable key (eg bad curve, RSA too short).
119
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCRL_BAD_MD#
#define MBEDTLS_X509_BADCRL_BAD_MDValue:
0x020000
The CRL is signed with an unacceptable hash.
120
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCRL_BAD_PK#
#define MBEDTLS_X509_BADCRL_BAD_PKValue:
0x040000
The CRL is signed with an unacceptable PK alg (eg RSA vs ECDSA).
121
of file util/third_party/mbedtls/include/mbedtls/x509.h
MBEDTLS_X509_BADCRL_BAD_KEY#
#define MBEDTLS_X509_BADCRL_BAD_KEYValue:
0x080000
The CRL is signed with an unacceptable key (eg bad curve, RSA too short).
122
of file util/third_party/mbedtls/include/mbedtls/x509.h
Function Documentation#
mbedtls_x509write_crt_init#
void mbedtls_x509write_crt_init (mbedtls_x509write_cert * ctx)
Initialize a CRT writing context.
N/A | ctx | CRT context to initialize |
939
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_version#
void mbedtls_x509write_crt_set_version (mbedtls_x509write_cert * ctx, int version)
Set the version for a Certificate Default: MBEDTLS_X509_CRT_VERSION_3.
N/A | ctx | CRT context to use |
N/A | version | version to set (MBEDTLS_X509_CRT_VERSION_1, MBEDTLS_X509_CRT_VERSION_2 or MBEDTLS_X509_CRT_VERSION_3) |
949
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_serial#
int MBEDTLS_DEPRECATED mbedtls_x509write_crt_set_serial (mbedtls_x509write_cert * ctx, const mbedtls_mpi * serial)
Set the serial number for a Certificate.
N/A | ctx | CRT context to use |
N/A | serial | serial number to set |
Note
Even though the MBEDTLS_BIGNUM_C guard looks redundant since X509 depends on PK and PK depends on BIGNUM, this emphasizes a direct dependency between X509 and BIGNUM which is going to be deprecated in the future.
Returns
0 if successful
969
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_serial_raw#
int mbedtls_x509write_crt_set_serial_raw (mbedtls_x509write_cert * ctx, unsigned char * serial, size_t serial_len)
Set the serial number for a Certificate.
N/A | ctx | CRT context to use |
N/A | serial | A raw array of bytes containing the serial number in big endian format |
N/A | serial_len | Length of valid bytes (expressed in bytes) in |
Returns
0 if successful, or MBEDTLS_ERR_X509_BAD_INPUT_DATA if the provided input buffer is too big (longer than MBEDTLS_X509_RFC5280_MAX_SERIAL_LEN)
986
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_validity#
int mbedtls_x509write_crt_set_validity (mbedtls_x509write_cert * ctx, const char * not_before, const char * not_after)
Set the validity period for a Certificate Timestamps should be in string format for UTC timezone i.e.
N/A | ctx | CRT context to use |
N/A | not_before | not_before timestamp |
N/A | not_after | not_after timestamp |
"YYYYMMDDhhmmss" e.g. "20131231235959" for December 31st 2013 at 23:59:59
Returns
0 if timestamp was parsed successfully, or a specific error code
1003
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_issuer_name#
int mbedtls_x509write_crt_set_issuer_name (mbedtls_x509write_cert * ctx, const char * issuer_name)
Set the issuer name for a Certificate Issuer names should contain a comma-separated list of OID types and values: e.g.
N/A | ctx | CRT context to use |
N/A | issuer_name | issuer name to set |
"C=UK,O=ARM,CN=Mbed TLS CA"
Returns
0 if issuer name was parsed successfully, or a specific error code
1018
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_subject_name#
int mbedtls_x509write_crt_set_subject_name (mbedtls_x509write_cert * ctx, const char * subject_name)
Set the subject name for a Certificate Subject names should contain a comma-separated list of OID types and values: e.g.
N/A | ctx | CRT context to use |
N/A | subject_name | subject name to set |
"C=UK,O=ARM,CN=Mbed TLS Server 1"
Returns
0 if subject name was parsed successfully, or a specific error code
1033
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_subject_key#
void mbedtls_x509write_crt_set_subject_key (mbedtls_x509write_cert * ctx, mbedtls_pk_context * key)
Set the subject public key for the certificate.
N/A | ctx | CRT context to use |
N/A | key | public key to include |
1042
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_issuer_key#
void mbedtls_x509write_crt_set_issuer_key (mbedtls_x509write_cert * ctx, mbedtls_pk_context * key)
Set the issuer key used for signing the certificate.
N/A | ctx | CRT context to use |
N/A | key | private key to sign with |
1050
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_md_alg#
void mbedtls_x509write_crt_set_md_alg (mbedtls_x509write_cert * ctx, mbedtls_md_type_t md_alg)
Set the MD algorithm to use for the signature (e.g.
N/A | ctx | CRT context to use |
N/A | md_alg | MD algorithm to use |
MBEDTLS_MD_SHA1)
1059
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_extension#
int mbedtls_x509write_crt_set_extension (mbedtls_x509write_cert * ctx, const char * oid, size_t oid_len, int critical, const unsigned char * val, size_t val_len)
Generic function to add to or replace an extension in the CRT.
N/A | ctx | CRT context to use |
N/A | oid | OID of the extension |
N/A | oid_len | length of the OID |
N/A | critical | if the extension is critical (per the RFC's definition) |
N/A | val | value of the extension OCTET STRING |
N/A | val_len | length of the value data |
Returns
0 if successful, or a MBEDTLS_ERR_X509_ALLOC_FAILED
1074
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_basic_constraints#
int mbedtls_x509write_crt_set_basic_constraints (mbedtls_x509write_cert * ctx, int is_ca, int max_pathlen)
Set the basicConstraints extension for a CRT.
N/A | ctx | CRT context to use |
N/A | is_ca | is this a CA certificate |
N/A | max_pathlen | maximum length of certificate chains below this certificate (only for CA certificates, -1 is unlimited) |
Returns
0 if successful, or a MBEDTLS_ERR_X509_ALLOC_FAILED
1090
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_key_usage#
int mbedtls_x509write_crt_set_key_usage (mbedtls_x509write_cert * ctx, unsigned int key_usage)
Set the Key Usage Extension flags (e.g.
N/A | ctx | CRT context to use |
N/A | key_usage | key usage flags to set |
MBEDTLS_X509_KU_DIGITAL_SIGNATURE | MBEDTLS_X509_KU_KEY_CERT_SIGN)
Returns
0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED
1126
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_ext_key_usage#
int mbedtls_x509write_crt_set_ext_key_usage (mbedtls_x509write_cert * ctx, const mbedtls_asn1_sequence * exts)
Set the Extended Key Usage Extension (e.g.
N/A | ctx | CRT context to use |
N/A | exts | extended key usage extensions to set, a sequence of MBEDTLS_ASN1_OID objects |
MBEDTLS_OID_SERVER_AUTH)
Returns
0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED
1139
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_set_ns_cert_type#
int mbedtls_x509write_crt_set_ns_cert_type (mbedtls_x509write_cert * ctx, unsigned char ns_cert_type)
Set the Netscape Cert Type flags (e.g.
N/A | ctx | CRT context to use |
N/A | ns_cert_type | Netscape Cert Type flags to set |
MBEDTLS_X509_NS_CERT_TYPE_SSL_CLIENT | MBEDTLS_X509_NS_CERT_TYPE_EMAIL)
Returns
0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED
1151
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_free#
void mbedtls_x509write_crt_free (mbedtls_x509write_cert * ctx)
Free the contents of a CRT write context.
N/A | ctx | CRT context to free |
1159
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_der#
int mbedtls_x509write_crt_der (mbedtls_x509write_cert * ctx, unsigned char * buf, size_t size, int(*)(void *, unsigned char *, size_t) f_rng, void * p_rng)
Write a built up certificate to a X509 DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.
N/A | ctx | certificate to write away |
N/A | buf | buffer to write to |
N/A | size | size of the buffer |
N/A | f_rng | RNG function. This must not be |
N/A | p_rng | RNG parameter |
Returns
length of data written if successful, or a specific error code
Note
f_rng
is used for the signature operation.
1178
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509write_crt_pem#
int mbedtls_x509write_crt_pem (mbedtls_x509write_cert * ctx, unsigned char * buf, size_t size, int(*)(void *, unsigned char *, size_t) f_rng, void * p_rng)
Write a built up certificate to a X509 PEM string.
N/A | ctx | certificate to write away |
N/A | buf | buffer to write to |
N/A | size | size of the buffer |
N/A | f_rng | RNG function. This must not be |
N/A | p_rng | RNG parameter |
Returns
0 if successful, or a specific error code
Note
f_rng
is used for the signature operation.
1196
of file util/third_party/mbedtls/include/mbedtls/x509_crt.h
mbedtls_x509_dn_gets#
int mbedtls_x509_dn_gets (char * buf, size_t size, const mbedtls_x509_name * dn)
Store the certificate DN in printable form into buf; no more than size characters will be written.
N/A | buf | Buffer to write to |
N/A | size | Maximum size of buffer |
N/A | dn | The X509 name to represent |
Returns
The length of the string written (not including the terminated nul byte), or a negative error code.
334
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_dn_get_next#
static mbedtls_x509_name * mbedtls_x509_dn_get_next (mbedtls_x509_name * dn)
Return the next relative DN in an X509 name.
N/A | dn | Current node in the X509 name |
Note
Intended use is to compare function result to dn->next in order to detect boundaries of multi-valued RDNs.
Returns
Pointer to the first attribute-value pair of the next RDN in sequence, or NULL if end is reached.
347
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_serial_gets#
int mbedtls_x509_serial_gets (char * buf, size_t size, const mbedtls_x509_buf * serial)
Store the certificate serial in printable form into buf; no more than size characters will be written.
N/A | buf | Buffer to write to |
N/A | size | Maximum size of buffer |
N/A | serial | The X509 serial to represent |
Returns
The length of the string written (not including the terminated nul byte), or a negative error code.
367
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_time_cmp#
int mbedtls_x509_time_cmp (const mbedtls_x509_time * t1, const mbedtls_x509_time * t2)
Compare pair of mbedtls_x509_time.
N/A | t1 | mbedtls_x509_time to compare |
N/A | t2 | mbedtls_x509_time to compare |
Returns
< 0 if t1 is before t2 0 if t1 equals t2 > 0 if t1 is after t2
379
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_time_is_past#
int mbedtls_x509_time_is_past (const mbedtls_x509_time * to)
Check a given mbedtls_x509_time against the system time and tell if it's in the past.
N/A | to | mbedtls_x509_time to check |
Note
Intended usage is "if( is_past( valid_to ) ) ERROR". Hence the return value of 1 if on internal errors.
Returns
1 if the given time is in the past or an error occurred, 0 otherwise.
406
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_time_is_future#
int mbedtls_x509_time_is_future (const mbedtls_x509_time * from)
Check a given mbedtls_x509_time against the system time and tell if it's in the future.
N/A | from | mbedtls_x509_time to check |
Note
Intended usage is "if( is_future( valid_from ) ) ERROR". Hence the return value of 1 if on internal errors.
Returns
1 if the given time is in the future or an error occurred, 0 otherwise.
420
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_parse_subject_alt_name#
int mbedtls_x509_parse_subject_alt_name (const mbedtls_x509_buf * san_buf, mbedtls_x509_subject_alternative_name * san)
This function parses an item in the SubjectAlternativeNames extension.
N/A | san_buf | The buffer holding the raw data item of the subject alternative name. |
N/A | san | The target structure to populate with the parsed presentation of the subject alternative name encoded in |
Please note that this function might allocate additional memory for a subject alternative name, thus mbedtls_x509_free_subject_alt_name has to be called to dispose of this additional memory afterwards.
Note
Supported GeneralName types, as defined in RFC 5280: "rfc822Name", "dnsName", "directoryName", "uniformResourceIdentifier" and "hardware_module_name" of type "otherName", as defined in RFC 4108.
This function should be called on a single raw data of subject alternative name. For example, after successful certificate parsing, one must iterate on every item in the
crt->subject_alt_names
sequence, and pass it to this function.
Warnings
The target structure contains pointers to the raw data of the parsed certificate, and its lifetime is restricted by the lifetime of the certificate.
Returns
0
on successMBEDTLS_ERR_X509_FEATURE_UNAVAILABLE for an unsupported SAN type.
Another negative value for any other failure.
454
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509_free_subject_alt_name#
void mbedtls_x509_free_subject_alt_name (mbedtls_x509_subject_alternative_name * san)
Unallocate all data related to subject alternative name.
N/A | san | SAN structure - extra memory owned by this structure will be freed |
461
of file util/third_party/mbedtls/include/mbedtls/x509.h
mbedtls_x509write_csr_init#
void mbedtls_x509write_csr_init (mbedtls_x509write_csr * ctx)
Initialize a CSR context.
N/A | ctx | CSR context to initialize |
177
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_set_subject_name#
int mbedtls_x509write_csr_set_subject_name (mbedtls_x509write_csr * ctx, const char * subject_name)
Set the subject name for a CSR Subject names should contain a comma-separated list of OID types and values: e.g.
N/A | ctx | CSR context to use |
N/A | subject_name | subject name to set |
"C=UK,O=ARM,CN=Mbed TLS Server 1"
Returns
0 if subject name was parsed successfully, or a specific error code
191
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_set_key#
void mbedtls_x509write_csr_set_key (mbedtls_x509write_csr * ctx, mbedtls_pk_context * key)
Set the key for a CSR (public key will be included, private key used to sign the CSR when writing it)
N/A | ctx | CSR context to use |
N/A | key | Asymmetric key to include |
201
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_set_md_alg#
void mbedtls_x509write_csr_set_md_alg (mbedtls_x509write_csr * ctx, mbedtls_md_type_t md_alg)
Set the MD algorithm to use for the signature (e.g.
N/A | ctx | CSR context to use |
N/A | md_alg | MD algorithm to use |
MBEDTLS_MD_SHA1)
210
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_set_key_usage#
int mbedtls_x509write_csr_set_key_usage (mbedtls_x509write_csr * ctx, unsigned char key_usage)
Set the Key Usage Extension flags (e.g.
N/A | ctx | CSR context to use |
N/A | key_usage | key usage flags to set |
MBEDTLS_X509_KU_DIGITAL_SIGNATURE | MBEDTLS_X509_KU_KEY_CERT_SIGN)
Returns
0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED
Note
The
decipherOnly
flag from the Key Usage extension is represented by bit 8 (i.e.0x8000
), which cannot typically be represented in an unsigned char. Therefore, the flagdecipherOnly
(i.e. #MBEDTLS_X509_KU_DECIPHER_ONLY) cannot be set using this function.
229
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_set_subject_alternative_name#
int mbedtls_x509write_csr_set_subject_alternative_name (mbedtls_x509write_csr * ctx, const mbedtls_x509_san_list * san_list)
Set Subject Alternative Name.
N/A | ctx | CSR context to use |
N/A | san_list | List of SAN values |
Returns
0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED
Note
Only "dnsName", "uniformResourceIdentifier" and "otherName", as defined in RFC 5280, are supported.
242
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_set_ns_cert_type#
int mbedtls_x509write_csr_set_ns_cert_type (mbedtls_x509write_csr * ctx, unsigned char ns_cert_type)
Set the Netscape Cert Type flags (e.g.
N/A | ctx | CSR context to use |
N/A | ns_cert_type | Netscape Cert Type flags to set |
MBEDTLS_X509_NS_CERT_TYPE_SSL_CLIENT | MBEDTLS_X509_NS_CERT_TYPE_EMAIL)
Returns
0 if successful, or MBEDTLS_ERR_X509_ALLOC_FAILED
254
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_set_extension#
int mbedtls_x509write_csr_set_extension (mbedtls_x509write_csr * ctx, const char * oid, size_t oid_len, int critical, const unsigned char * val, size_t val_len)
Generic function to add to or replace an extension in the CSR.
N/A | ctx | CSR context to use |
N/A | oid | OID of the extension |
N/A | oid_len | length of the OID |
N/A | critical | Set to 1 to mark the extension as critical, 0 otherwise. |
N/A | val | value of the extension OCTET STRING |
N/A | val_len | length of the value data |
Returns
0 if successful, or a MBEDTLS_ERR_X509_ALLOC_FAILED
270
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_free#
void mbedtls_x509write_csr_free (mbedtls_x509write_csr * ctx)
Free the contents of a CSR context.
N/A | ctx | CSR context to free |
280
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_der#
int mbedtls_x509write_csr_der (mbedtls_x509write_csr * ctx, unsigned char * buf, size_t size, int(*)(void *, unsigned char *, size_t) f_rng, void * p_rng)
Write a CSR (Certificate Signing Request) to a DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.
N/A | ctx | CSR to write away |
N/A | buf | buffer to write to |
N/A | size | size of the buffer |
N/A | f_rng | RNG function. This must not be |
N/A | p_rng | RNG parameter |
Returns
length of data written if successful, or a specific error code
Note
f_rng
is used for the signature operation.
300
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
mbedtls_x509write_csr_pem#
int mbedtls_x509write_csr_pem (mbedtls_x509write_csr * ctx, unsigned char * buf, size_t size, int(*)(void *, unsigned char *, size_t) f_rng, void * p_rng)
Write a CSR (Certificate Signing Request) to a PEM string.
N/A | ctx | CSR to write away |
N/A | buf | buffer to write to |
N/A | size | size of the buffer |
N/A | f_rng | RNG function. This must not be |
N/A | p_rng | RNG parameter |
Returns
0 if successful, or a specific error code
Note
f_rng
is used for the signature operation.
319
of file util/third_party/mbedtls/include/mbedtls/x509_csr.h
Macro Definition Documentation#
MBEDTLS_X509_MAX_INTERMEDIATE_CA#
#define MBEDTLS_X509_MAX_INTERMEDIATE_CAValue:
8
Maximum number of intermediate CAs in a verification chain.
That is, maximum length of the chain, excluding the end-entity certificate and the trusted root certificate.
Set this to a low value to prevent an adversary from making you waste resources verifying an overlong certificate chain.
49
of file util/third_party/mbedtls/include/mbedtls/x509.h