58QSC_CPLUSPLUS_ENABLED_START
86#define QSC_X509_CSR_ATTRIBUTES_MAX 8U
92#define QSC_X509_CSR_ATTRIBUTE_VALUE_MAX 1024U
98#define QSC_X509_CSR_WRITE_MAX 16384U
123 qsc_x509_subject_public_key_info
spki;
494QSC_CPLUSPLUS_ENABLED_END
enum qsc_asn1_status_t qsc_asn1_status
ASN.1 helper status codes.
QSC_EXPORT_API struct qsc_asn1_oid_t qsc_asn1_oid
A decoded ASN.1 OBJECT IDENTIFIER.
Contains common definitions for the Quantum Secure Cryptographic (QSC) library.
#define QSC_EXPORT_API
API export macro for Microsoft compilers when importing from a DLL.
Definition qsccommon.h:605
A decoded or mutable PKCS#10 CSR attribute.
Definition x509csr.h:110
size_t valuelen
Definition x509csr.h:113
uint8_t value[QSC_X509_CSR_ATTRIBUTE_VALUE_MAX]
Definition x509csr.h:112
qsc_asn1_oid oid
Definition x509csr.h:111
A decoded or mutable PKCS#10 certificate signing request.
Definition x509csr.h:120
const uint8_t * infodata
Definition x509csr.h:131
uint8_t signature[QSC_X509_SIGNATURE_MAX]
Definition x509csr.h:128
qsc_x509_csr_attribute attributes[QSC_X509_CSR_ATTRIBUTES_MAX]
Definition x509csr.h:126
size_t signaturelen
Definition x509csr.h:129
size_t infodatalen
Definition x509csr.h:132
size_t derlen
Definition x509csr.h:134
qsc_x509_subject_public_key_info spki
Definition x509csr.h:123
qsc_x509_algorithm_identifier signaturealgorithm
Definition x509csr.h:124
qsc_x509_extensions extensions
Definition x509csr.h:125
const uint8_t * der
Definition x509csr.h:133
bool derowned
Definition x509csr.h:135
uint32_t version
Definition x509csr.h:121
uint8_t signatureunusedbits
Definition x509csr.h:130
qsc_x509_name subject
Definition x509csr.h:122
size_t attributecount
Definition x509csr.h:127
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_signature_algorithm(qsc_x509_csr *csr, const qsc_x509_algorithm_identifier *signaturealgorithm)
Set the CSR signature algorithm identifier.
Definition x509csr.c:625
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_sign(const qsc_x509_csr *csr, qsc_x509_certificate_sign_callback signcallback, void *context, uint8_t *output, size_t *outputlen)
Sign and encode a CSR as DER.
Definition x509csr.c:1131
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_extended_key_usage(qsc_x509_csr *csr, const qsc_x509_extended_key_usage *extendedkeyusage)
Set the requested Extended Key Usage extension.
Definition x509csr.c:831
QSC_EXPORT_API void qsc_x509_csr_initialize(qsc_x509_csr *csr)
Initialize a CSR object.
Definition x509csr.c:559
bool(* qsc_x509_csr_signature_verify_callback)(const qsc_x509_csr *csr, void *state)
Caller-supplied CSR signature verification callback type.
Definition x509csr.h:151
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_extension_request(qsc_x509_csr *csr, const qsc_x509_extensions *extensions)
Set the normalized extensionRequest payload.
Definition x509csr.c:646
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_ml_dsa_signature_algorithm(qsc_x509_csr *csr, uint32_t level)
Set the CSR signature algorithm to an ML-DSA variant.
Definition x509csr.c:871
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_decode_pem(qsc_x509_csr *csr, const char *input, size_t inputlen)
Decode a PEM encoded CSR.
Definition x509csr.c:1330
#define QSC_X509_CSR_ATTRIBUTES_MAX
The maximum number of generic non-extension CSR attributes stored in a CSR object.
Definition x509csr.h:86
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_encode_info_der(const qsc_x509_csr *csr, uint8_t *output, size_t *outputlen)
Encode the CertificationRequestInfo structure as DER.
Definition x509csr.c:987
QSC_EXPORT_API bool qsc_x509_csr_verify_with_spki(const qsc_x509_csr *csr, const qsc_x509_subject_public_key_info *signerspki)
Verify a CSR signature against a caller-supplied signer SPKI.
Definition x509csr.c:1446
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_decode_der(qsc_x509_csr *csr, const uint8_t *input, size_t inputlen)
Decode a DER encoded CSR.
Definition x509csr.c:1144
QSC_EXPORT_API bool qsc_x509_csr_verify(const qsc_x509_csr *csr)
Verify a CSR using its contained subject public key information.
Definition x509csr.c:1425
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_ml_kem_spki(qsc_x509_csr *csr, uint32_t level, const uint8_t *publickey, size_t publickeylen)
Set the CSR subject public key information to an ML-KEM key.
Definition x509csr.c:948
QSC_EXPORT_API struct qsc_x509_csr_attribute_t qsc_x509_csr_attribute
A decoded or mutable PKCS#10 CSR attribute.
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_subject(qsc_x509_csr *csr, const qsc_x509_name *subject)
Set the CSR subject distinguished name.
Definition x509csr.c:581
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_encode_pem(const uint8_t *der, size_t derlen, char *output, size_t *outputlen)
Encode a DER CSR as PEM.
Definition x509csr.c:1492
QSC_EXPORT_API const qsc_x509_extension * qsc_x509_csr_find_extension(const qsc_x509_csr *csr, qsc_x509_extension_type type)
Find a requested extension by type.
Definition x509csr.c:1386
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_copy_extension_request(const qsc_x509_csr *csr, qsc_x509_extensions *extensions)
Copy the normalized extensionRequest payload.
Definition x509csr.c:685
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_subject_key_identifier(qsc_x509_csr *csr, const qsc_x509_subject_key_identifier *subjectkeyidentifier)
Set the requested Subject Key Identifier extension.
Definition x509csr.c:851
QSC_EXPORT_API bool qsc_x509_csr_verify_ex(const qsc_x509_csr *csr, qsc_x509_csr_signature_verify_callback verifycallback, void *state)
Verify a CSR using a caller-supplied verification callback.
Definition x509csr.c:1406
#define QSC_X509_CSR_ATTRIBUTE_VALUE_MAX
The maximum number of DER octets stored for a generic CSR attribute value.
Definition x509csr.h:92
QSC_EXPORT_API struct qsc_x509_csr_t qsc_x509_csr
A decoded or mutable PKCS#10 certificate signing request.
QSC_EXPORT_API void qsc_x509_csr_clear(qsc_x509_csr *csr)
Clear a CSR object.
Definition x509csr.c:570
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_add_san_ip(qsc_x509_csr *csr, const uint8_t *address, size_t addresslen)
Add an IP address to the requested Subject Alternative Name extension.
Definition x509csr.c:808
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_add_attribute(qsc_x509_csr *csr, const qsc_asn1_oid *oid, const uint8_t *value, size_t valuelen)
Add a generic non-extension CSR attribute.
Definition x509csr.c:705
QSC_EXPORT_API const qsc_x509_extensions * qsc_x509_csr_get_extension_request(const qsc_x509_csr *csr)
Get the normalized extensionRequest payload.
Definition x509csr.c:667
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_ml_dsa_spki(qsc_x509_csr *csr, uint32_t level, const uint8_t *publickey, size_t publickeylen)
Set the CSR subject public key information to an ML-DSA key.
Definition x509csr.c:909
QSC_EXPORT_API const qsc_x509_csr_attribute * qsc_x509_csr_get_attribute(const qsc_x509_csr *csr, const qsc_asn1_oid *oid)
Get a generic CSR attribute by OID.
Definition x509csr.c:744
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_spki(qsc_x509_csr *csr, const qsc_x509_subject_public_key_info *spki)
Set the CSR subject public key information.
Definition x509csr.c:600
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_set_subject_alt_name(qsc_x509_csr *csr, const qsc_x509_subject_alt_name *subjectaltname)
Set the requested Subject Alternative Name extension.
Definition x509csr.c:765
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_encode_der(const qsc_x509_csr *csr, qsc_x509_certificate_sign_callback signcallback, void *context, uint8_t *output, size_t *outputlen)
Encode and sign a complete CSR as DER.
Definition x509csr.c:1070
QSC_EXPORT_API qsc_asn1_status qsc_x509_csr_add_san_dns(qsc_x509_csr *csr, const char *dnsname, size_t dnsnamelen)
Add a DNS name to the requested Subject Alternative Name extension.
Definition x509csr.c:785