52#ifndef QSC_X509_WRITE_H
53#define QSC_X509_WRITE_H
60QSC_CPLUSPLUS_ENABLED_START
287 uint8_t* output,
size_t* outputlen);
303 const uint8_t* content,
size_t contentlen, uint8_t* output,
size_t* outputlen);
319 uint8_t* output,
size_t* outputlen);
337 qsc_x509_named_curve curve, qsc_x509_pqc_parameter_set pqcparameter, uint8_t* output,
size_t* outputlen);
351 size_t publickeylen, uint8_t* output,
size_t* outputlen);
365 const uint8_t* publickey,
size_t publickeylen, uint8_t* output,
size_t* outputlen);
379 size_t publickeylen, uint8_t* output,
size_t* outputlen);
391 uint8_t* output,
size_t* outputlen);
469 uint8_t* output,
size_t* outputlen);
492 uint8_t* output,
size_t* outputlen);
504 uint8_t* output,
size_t* outputlen);
516 uint8_t* output,
size_t* outputlen);
616QSC_CPLUSPLUS_ENABLED_END
enum qsc_asn1_status_t qsc_asn1_status
ASN.1 helper status codes.
QSC_EXPORT_API struct qsc_asn1_time_t qsc_asn1_time
A normalized ASN.1 time representation.
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 mutable certificate revocation list builder.
X.509 certificate revocation list parsing, encoding, lookup, and verification interface.
X.509 certificate revocation list builder, signing, and PEM encoding interface.
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_subject_key_identifier(const qsc_x509_subject_key_identifier *subjectkeyidentifier, uint8_t *output, size_t *outputlen)
Write a SubjectKeyIdentifier extension payload.
Definition x509write.c:1767
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_null(uint8_t *output, size_t *outputlen)
Write an ASN.1 DER NULL object.
Definition x509write.c:829
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_extended_key_usage(const qsc_x509_extended_key_usage *extendedkeyusage, uint8_t *output, size_t *outputlen)
Write an ExtendedKeyUsage extension payload.
Definition x509write.c:1652
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_octet_string(const uint8_t *value, size_t valuelen, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER OCTET STRING object.
Definition x509write.c:854
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_utctime(const qsc_asn1_time *value, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER UTCTime object.
Definition x509write.c:977
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_sequence(const uint8_t *content, size_t contentlen, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER SEQUENCE object from pre-encoded contents.
Definition x509write.c:993
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_algorithm_identifier(const qsc_x509_algorithm_identifier *algorithm, uint8_t *output, size_t *outputlen)
Write a normalized AlgorithmIdentifier object.
Definition x509write.c:1014
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_raw(uint8_t tagclass, bool constructed, uint32_t tagnumber, const uint8_t *content, size_t contentlen, uint8_t *output, size_t *outputlen)
Write a raw ASN.1 DER object from tag metadata and pre-encoded contents.
Definition x509write.c:686
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_issuer_alt_name(const qsc_x509_issuer_alt_name *issueraltname, uint8_t *output, size_t *outputlen)
Write an IssuerAltName extension payload.
Definition x509write.c:1878
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_length(size_t length, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER length field.
Definition x509write.c:586
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_explicit(uint32_t tagnumber, const uint8_t *content, size_t contentlen, uint8_t *output, size_t *outputlen)
Write an explicitly tagged ASN.1 DER object from pre-encoded contents.
Definition x509write.c:1007
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_utf8_string(const char *value, size_t valuelen, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER UTF8String object.
Definition x509write.c:928
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_spki(const qsc_x509_subject_public_key_info *spki, uint8_t *output, size_t *outputlen)
Write a normalized SubjectPublicKeyInfo object.
Definition x509write.c:1311
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_validity(const qsc_x509_validity *validity, uint8_t *output, size_t *outputlen)
Write a normalized X.509 Validity object.
Definition x509write.c:1229
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_basic_constraints(const qsc_x509_basic_constraints *basicconstraints, uint8_t *output, size_t *outputlen)
Write a BasicConstraints extension payload.
Definition x509write.c:1505
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_integer(const uint8_t *value, size_t valuelen, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER INTEGER object.
Definition x509write.c:736
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_name(const qsc_x509_name *name, uint8_t *output, size_t *outputlen)
Write a normalized X.509 Name object.
Definition x509write.c:1129
QSC_EXPORT_API qsc_asn1_status qsc_x509_compute_authority_key_identifier_from_issuer(const qsc_x509_certificate *issuer, qsc_x509_authority_key_identifier *authoritykeyidentifier)
Computes the Authority Key Identifier (AKI) from an issuer certificate.
Definition x509crlwrite.c:526
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_algorithm_identifier_for_signature(qsc_x509_signature_algorithm signature, uint8_t *output, size_t *outputlen)
Write an AlgorithmIdentifier object for a signature algorithm.
Definition x509write.c:1050
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_bit_string(const uint8_t *value, size_t valuelen, uint8_t unusedbits, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER BIT STRING object.
Definition x509write.c:866
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_spki_ml_kem(qsc_x509_pqc_parameter_set parameterset, const uint8_t *publickey, size_t publickeylen, uint8_t *output, size_t *outputlen)
Write an ML-KEM SubjectPublicKeyInfo object.
Definition x509write.c:1106
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_spki_ml_dsa(qsc_x509_pqc_parameter_set parameterset, const uint8_t *publickey, size_t publickeylen, uint8_t *output, size_t *outputlen)
Write an ML-DSA SubjectPublicKeyInfo object.
Definition x509write.c:1083
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_generalized_time(const qsc_asn1_time *value, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER GeneralizedTime object.
Definition x509write.c:985
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_tag(uint8_t tagclass, bool constructed, uint32_t tagnumber, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER tag field.
Definition x509write.c:629
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_extension(const qsc_x509_extension *extension, uint8_t *output, size_t *outputlen)
Write a normalized X.509 Extension object.
Definition x509write.c:1349
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_algorithm_identifier_for_public_key(qsc_x509_public_key_algorithm publickey, qsc_x509_named_curve curve, qsc_x509_pqc_parameter_set pqcparameter, uint8_t *output, size_t *outputlen)
Write an AlgorithmIdentifier object for a public-key algorithm.
Definition x509write.c:1055
QSC_EXPORT_API qsc_asn1_status qsc_x509_crl_builder_set_crl_number(qsc_x509_crl_builder *builder, const uint8_t *value, size_t valuelen, bool critical)
Sets the CRL Number extension in the CRL builder.
Definition x509crlwrite.c:539
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_printable_string(const char *value, size_t valuelen, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER PrintableString object.
Definition x509write.c:935
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_general_name(const qsc_x509_general_name *name, uint8_t *output, size_t *outputlen)
Write a normalized GeneralName object.
Definition x509write.c:1283
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_subject_alt_name(const qsc_x509_subject_alt_name *subjectaltname, uint8_t *output, size_t *outputlen)
Write a SubjectAltName extension payload.
Definition x509write.c:1868
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_spki_ec(qsc_x509_named_curve curve, const uint8_t *publickey, size_t publickeylen, uint8_t *output, size_t *outputlen)
Write an elliptic-curve SubjectPublicKeyInfo object.
Definition x509write.c:1060
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_key_usage(const qsc_x509_key_usage *keyusage, uint8_t *output, size_t *outputlen)
Write a KeyUsage extension payload.
Definition x509write.c:1568
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_set(const uint8_t *content, size_t contentlen, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER SET object from pre-encoded contents.
Definition x509write.c:1000
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_boolean(bool value, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER BOOLEAN object.
Definition x509write.c:821
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_authority_key_identifier(const qsc_x509_authority_key_identifier *authoritykeyidentifier, uint8_t *output, size_t *outputlen)
Write an AuthorityKeyIdentifier extension payload.
Definition x509write.c:1777
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_ia5_string(const char *value, size_t valuelen, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER IA5String object.
Definition x509write.c:957
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_oid(const qsc_asn1_oid *oid, uint8_t *output, size_t *outputlen)
Write an ASN.1 DER OBJECT IDENTIFIER object.
Definition x509write.c:836
QSC_EXPORT_API qsc_asn1_status qsc_x509_crl_builder_set_authority_key_identifier(qsc_x509_crl_builder *builder, const qsc_x509_authority_key_identifier *authoritykeyidentifier)
Sets the Authority Key Identifier (AKI) extension in the CRL builder.
Definition x509crlwrite.c:481
QSC_EXPORT_API qsc_asn1_status qsc_x509_write_extensions(const qsc_x509_extensions *extensions, uint8_t *output, size_t *outputlen)
Write a normalized Extensions collection.
Definition x509write.c:1473