52#ifndef QSC_X509_SPKI_H
53#define QSC_X509_SPKI_H
58QSC_CPLUSPLUS_ENABLED_START
340QSC_CPLUSPLUS_ENABLED_END
enum qsc_asn1_status_t qsc_asn1_status
ASN.1 helper status codes.
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
In-memory representation of a single BER/DER ASN.1 TLV element.
Definition encoding.h:311
QSC_EXPORT_API void qsc_x509_algorithm_identifier_initialize(qsc_x509_algorithm_identifier *algorithm)
Initialize an AlgorithmIdentifier object.
Definition x509spki.c:352
QSC_EXPORT_API bool qsc_x509_algorithm_identifier_is_mldsa(const qsc_x509_algorithm_identifier *algorithm)
Test whether an AlgorithmIdentifier denotes ML-DSA.
Definition x509spki.c:423
QSC_EXPORT_API qsc_asn1_status qsc_x509_spki_initialize_ec(qsc_x509_subject_public_key_info *spki, qsc_x509_named_curve curve, const uint8_t *publickey, size_t publickeylen)
Initialize an SPKI object for an elliptic-curve public key.
Definition x509spki.c:881
QSC_EXPORT_API qsc_asn1_status qsc_x509_algorithm_identifier_initialize_mldsa(qsc_x509_algorithm_identifier *algorithm, qsc_x509_pqc_parameter_set parameterset)
Initialize an AlgorithmIdentifier for ML-DSA.
Definition x509spki.c:458
QSC_EXPORT_API qsc_asn1_status qsc_x509_subject_public_key_info_decode(const qsc_encoding_ber_element *element, qsc_x509_subject_public_key_info *spki)
Decode a SubjectPublicKeyInfo object.
Definition x509spki.c:767
QSC_EXPORT_API void qsc_x509_subject_public_key_info_initialize(qsc_x509_subject_public_key_info *spki)
Initialize a SubjectPublicKeyInfo object.
Definition x509spki.c:362
QSC_EXPORT_API qsc_asn1_status qsc_x509_spki_validate(const qsc_x509_subject_public_key_info *spki)
Validate a normalized SubjectPublicKeyInfo object.
Definition x509spki.c:679
QSC_EXPORT_API qsc_asn1_status qsc_x509_algorithm_identifier_decode(const qsc_encoding_ber_element *element, qsc_x509_algorithm_identifier *algorithm)
Decode an AlgorithmIdentifier object.
Definition x509spki.c:537
QSC_EXPORT_API qsc_asn1_status qsc_x509_algorithm_identifier_initialize_mlkem(qsc_x509_algorithm_identifier *algorithm, qsc_x509_pqc_parameter_set parameterset)
Initialize an AlgorithmIdentifier for ML-KEM.
Definition x509spki.c:498
QSC_EXPORT_API qsc_asn1_status qsc_x509_spki_initialize_ml_dsa(qsc_x509_subject_public_key_info *spki, qsc_x509_pqc_parameter_set parameterset, const uint8_t *publickey, size_t publickeylen)
Initialize an SPKI object for an ML-DSA public key.
Definition x509spki.c:959
QSC_EXPORT_API qsc_asn1_status qsc_x509_spki_initialize_ml_kem(qsc_x509_subject_public_key_info *spki, qsc_x509_pqc_parameter_set parameterset, const uint8_t *publickey, size_t publickeylen)
Initialize an SPKI object for an ML-KEM public key.
Definition x509spki.c:1010
QSC_EXPORT_API size_t qsc_x509_named_curve_public_key_size(qsc_x509_named_curve curve)
Get the encoded public-key size for a named elliptic curve.
Definition x509spki.c:644
QSC_EXPORT_API qsc_asn1_status qsc_x509_algorithm_identifier_validate(const qsc_x509_algorithm_identifier *algorithm)
Definition x509spki.c:261
QSC_EXPORT_API bool qsc_x509_algorithm_identifier_is_mlkem(const qsc_x509_algorithm_identifier *algorithm)
Test whether an AlgorithmIdentifier denotes ML-KEM.
Definition x509spki.c:442
QSC_EXPORT_API bool qsc_x509_spki_is_uncompressed_ec_point(const qsc_x509_subject_public_key_info *spki)
Test whether an SPKI contains an uncompressed EC point.
Definition x509spki.c:660
QSC_EXPORT_API size_t qsc_x509_pqc_public_key_size(qsc_x509_pqc_parameter_set parameterset)
Get the expected public-key size for a PQC parameter set.
Definition x509spki.c:372
QSC_EXPORT_API qsc_asn1_status qsc_x509_spki_get_ec_coordinates(const qsc_x509_subject_public_key_info *spki, uint8_t *x, size_t xlen, uint8_t *y, size_t ylen)
Extract affine EC coordinates from an SPKI object.
Definition x509spki.c:836
QSC_EXPORT_API size_t qsc_x509_named_curve_coordinate_size(qsc_x509_named_curve curve)
Get the coordinate size for a named elliptic curve.
Definition x509spki.c:622