63QSC_CPLUSPLUS_ENABLED_START
111#define QSC_TLS_CERTIFICATE_FINGERPRINT_SIZE 32U
142 uint8_t* signature,
size_t* signaturelen,
void* state);
165 char subject[QSC_X509_NAME_ATTRIBUTE_STRING_MAX];
166 char issuer[QSC_X509_NAME_ATTRIBUTE_STRING_MAX];
168 char dnsname[QSC_X509_NAME_ATTRIBUTE_STRING_MAX];
261 size_t chainlength, uint8_t* output,
size_t outlen,
size_t* offset);
294 const qsc_x509_certificate* intermediates,
size_t intermediatecount,
const qsc_x509_time* validationtime,
295 uint8_t* verifybuffer,
size_t verifybufferlen);
339 const uint8_t** extensionsblock,
size_t* extensionsblocklen);
359 size_t extensionsblocklen, uint8_t* output,
size_t outlen,
size_t* offset);
406 size_t inputlen,
const uint8_t* signature,
size_t signaturelen,
const qsc_tls_certificate_view* signer,
void* state);
408QSC_CPLUSPLUS_ENABLED_END
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:645
Certificate validation and signature verification callback set.
Definition tlscert.h:148
qsc_tls_certificate_chain_validate_callback validatechain
Definition tlscert.h:149
void * state
Definition tlscert.h:151
qsc_tls_certificate_verify_callback verifycertificateverify
Definition tlscert.h:150
Certificate validation context supplied to chain validators.
Definition tlscert.h:89
bool clientauth
Definition tlscert.h:91
const char * hostname
Definition tlscert.h:90
bool requirepeercertificate
Definition tlscert.h:92
A non-owning view over a single encoded certificate.
Definition tlscert.h:80
size_t datalen
Definition tlscert.h:82
const uint8_t * data
Definition tlscert.h:81
Bounded client-certificate identity information supplied to an mTLS authorization callback.
Definition tlscert.h:187
qsc_tls_peer_certificate_summary summary
Definition tlscert.h:188
size_t certificatefingerprintlen
Definition tlscert.h:190
qsc_x509_verify_status verifystatus
Definition tlscert.h:191
uint8_t certificatefingerprint[QSC_TLS_CERTIFICATE_FINGERPRINT_SIZE]
Definition tlscert.h:189
bool chainvalid
Definition tlscert.h:192
Fixed peer-certificate identity summary retained by the built-in QSC X.509 TLS bridge.
Definition tlscert.h:164
bool populated
Definition tlscert.h:170
bool hostnamevalid
Definition tlscert.h:173
char dnsname[QSC_X509_NAME_ATTRIBUTE_STRING_MAX]
Definition tlscert.h:168
char commonname[QSC_X509_NAME_ATTRIBUTE_STRING_MAX]
Definition tlscert.h:167
bool hostnamechecked
Definition tlscert.h:172
qsc_x509_verify_status verifystatus
Definition tlscert.h:169
char subject[QSC_X509_NAME_ATTRIBUTE_STRING_MAX]
Definition tlscert.h:165
char issuer[QSC_X509_NAME_ATTRIBUTE_STRING_MAX]
Definition tlscert.h:166
bool chainvalid
Definition tlscert.h:171
Context for the built-in bridge between TLS and the QSC X.509 layer.
Definition tlscert.h:209
const qsc_x509_time * validationtime
Definition tlscert.h:213
const qsc_x509_certificate * intermediates
Definition tlscert.h:211
size_t verifybufferlen
Definition tlscert.h:215
qsc_x509_verify_status lastverifystatus
Definition tlscert.h:218
bool rejectunsupportedcriticalextensions
Definition tlscert.h:217
size_t intermediatecount
Definition tlscert.h:212
const qsc_x509_store * truststore
Definition tlscert.h:210
qsc_tls_alert_description lastalert
Definition tlscert.h:219
uint8_t * verifybuffer
Definition tlscert.h:214
qsc_tls_peer_certificate_summary peersummary
Definition tlscert.h:216
QSC_EXPORT_API void qsc_tls_certificate_interface_initialize(qsc_tls_certificate_interface *iface, qsc_tls_certificate_chain_validate_callback validatechain, qsc_tls_certificate_verify_callback verifycertificateverify, void *state)
Initialize a certificate callback interface.
Definition tlscert.c:370
QSC_EXPORT_API bool qsc_tls_x509_verify_certificate_verify(qsc_tls_signature_scheme scheme, const uint8_t *input, size_t inputlen, const uint8_t *signature, size_t signaturelen, const qsc_tls_certificate_view *signer, void *state)
Verify a TLS CertificateVerify signature using the QSC X.509 bridge.
Definition tlscert.c:637
QSC_EXPORT_API qsc_tls_alert_description qsc_tls_x509_alert_from_verify_status(qsc_x509_verify_status status)
Map a QSC X.509 verification result to a TLS alert description.
Definition tlscert.c:398
bool(* qsc_tls_client_authorization_callback)(const qsc_tls_client_authorization_info *info, void *state)
Authorize a cryptographically valid mTLS client certificate.
Definition tlscert.h:203
bool(* qsc_tls_certificate_verify_callback)(qsc_tls_signature_scheme scheme, const uint8_t *input, size_t inputlen, const uint8_t *signature, size_t signaturelen, const qsc_tls_certificate_view *signer, void *state)
Verify the TLS CertificateVerify signature.
Definition tlscert.h:126
#define QSC_TLS_CERTIFICATE_FINGERPRINT_SIZE
Size in bytes of the retained peer certificate fingerprint.
Definition tlscert.h:111
QSC_EXPORT_API bool qsc_tls_x509_validate_chain(const qsc_tls_certificate_view *chain, size_t chainlength, const qsc_tls_certificate_validation_context *context, void *state)
Validate a peer certificate chain using the QSC X.509 bridge.
Definition tlscert.c:687
QSC_EXPORT_API qsc_tls_status qsc_tls_x509_context_initialize(qsc_tls_qsc_x509_context *context, const qsc_x509_store *truststore, const qsc_x509_certificate *intermediates, size_t intermediatecount, const qsc_x509_time *validationtime, uint8_t *verifybuffer, size_t verifybufferlen)
Initialize a QSC X.509 bridge context.
Definition tlscert.c:604
QSC_EXPORT_API qsc_x509_signature_algorithm qsc_tls_x509_signature_algorithm_from_tls(qsc_tls_signature_scheme scheme)
Map a TLS signature scheme to a QSC X.509 signature algorithm identifier.
Definition tlscert.c:632
QSC_EXPORT_API bool qsc_tls_certificate_interface_is_valid(const qsc_tls_certificate_interface *iface)
Determine whether a certificate callback interface is complete.
Definition tlscert.c:382
QSC_EXPORT_API qsc_tls_alert_description qsc_tls_certificate_interface_get_last_alert(const qsc_tls_certificate_interface *iface, bool verifyphase)
Query the most recent alert reason from a certificate interface.
Definition tlscert.c:477
QSC_EXPORT_API qsc_tls_status qsc_tls_certificate_request_encode(const uint8_t *requestcontext, size_t requestcontextlen, const uint8_t *extensionsblock, size_t extensionsblocklen, uint8_t *output, size_t outlen, size_t *offset)
Encode a TLS CertificateRequest message.
Definition tlscert.c:566
bool(* qsc_tls_certificate_chain_validate_callback)(const qsc_tls_certificate_view *chain, size_t chainlength, const qsc_tls_certificate_validation_context *context, void *state)
Validate a peer certificate chain.
Definition tlscert.h:105
QSC_EXPORT_API qsc_tls_status qsc_tls_certificate_interface_initialize_qsc_x509(qsc_tls_certificate_interface *iface, qsc_tls_qsc_x509_context *context)
Initialize a certificate callback interface using the QSC X.509 bridge.
Definition tlscert.c:505
QSC_EXPORT_API qsc_tls_status qsc_tls_certificate_request_decode(const uint8_t *input, size_t inlen, const uint8_t **requestcontext, size_t *requestcontextlen, const uint8_t **extensionsblock, size_t *extensionsblocklen)
Decode a TLS CertificateRequest message.
Definition tlscert.c:523
QSC_EXPORT_API qsc_tls_status qsc_tls_certificate_decode_message(const uint8_t *input, size_t inlen, const uint8_t **requestcontext, size_t *requestcontextlen, qsc_tls_certificate_view *chain, size_t chaincapacity, size_t *chainlength)
Decode a TLS Certificate message.
Definition tlscert.c:272
QSC_EXPORT_API qsc_tls_status qsc_tls_certificate_encode_message(const uint8_t *requestcontext, size_t requestcontextlen, const qsc_tls_certificate_view *chain, size_t chainlength, uint8_t *output, size_t outlen, size_t *offset)
Encode a TLS Certificate message.
Definition tlscert.c:191
bool(* qsc_tls_certificate_sign_callback)(qsc_tls_signature_scheme scheme, const uint8_t *input, size_t inputlen, uint8_t *signature, size_t *signaturelen, void *state)
Produce a TLS 1.3 CertificateVerify signature.
Definition tlscert.h:141
TLS status code definitions and diagnostic string conversion.
qsc_tls_status
Definition tlserrors.h:65
Public TLS type definitions.
qsc_tls_alert_description
TLS alert description codes carried in Alert protocol messages.
Definition tlstypes.h:94
qsc_tls_signature_scheme
TLS signature-scheme identifiers.
Definition tlstypes.h:179
X.509 trust-anchor store and certificate chain construction interface.
X.509 time decoding, parsing, comparison, and validity helpers.
qsc_asn1_time qsc_x509_time
Alias for the normalized ASN.1 time representation used by X.509 helpers.
Definition x509time.h:85
X.509 certificate and certification-path verification interface.