QSC Post Quantum Cryptographic Library 1.1.0.2 (B2)
A post quantum secure library written in Ansi C
Loading...
Searching...
No Matches
oid.h File Reference

Object identifier registry and lookup helpers for the QSC X.509 layer. More...

#include "qsccommon.h"
#include "asn1.h"

Go to the source code of this file.

Data Structures

struct  qsc_oid_entry_t
 A registry entry describing a known object identifier. More...

Typedefs

typedef enum qsc_oid_id_t qsc_oid_id
 Known object identifier registry entries.
typedef QSC_EXPORT_API struct qsc_oid_entry_t qsc_oid_entry
 A registry entry describing a known object identifier.

Enumerations

enum  qsc_oid_id_t {
  QSC_OID_ID_NONE = 0 , QSC_OID_ID_RSA_ENCRYPTION , QSC_OID_ID_MD5_WITH_RSA_ENCRYPTION , QSC_OID_ID_SHA1_WITH_RSA_ENCRYPTION ,
  QSC_OID_ID_SHA256_WITH_RSA_ENCRYPTION , QSC_OID_ID_SHA384_WITH_RSA_ENCRYPTION , QSC_OID_ID_SHA512_WITH_RSA_ENCRYPTION , QSC_OID_ID_EC_PUBLIC_KEY ,
  QSC_OID_ID_PRIME256V1 , QSC_OID_ID_SECP384R1 , QSC_OID_ID_SECP521R1 , QSC_OID_ID_ECDSA_WITH_SHA1 ,
  QSC_OID_ID_ECDSA_WITH_SHA256 , QSC_OID_ID_ECDSA_WITH_SHA384 , QSC_OID_ID_ECDSA_WITH_SHA512 , QSC_OID_ID_SHA1 ,
  QSC_OID_ID_SHA224 , QSC_OID_ID_SHA256 , QSC_OID_ID_SHA384 , QSC_OID_ID_SHA512 ,
  QSC_OID_ID_COMMON_NAME , QSC_OID_ID_SURNAME , QSC_OID_ID_SERIAL_NUMBER , QSC_OID_ID_COUNTRY_NAME ,
  QSC_OID_ID_LOCALITY_NAME , QSC_OID_ID_STATE_OR_PROVINCE_NAME , QSC_OID_ID_STREET_ADDRESS , QSC_OID_ID_ORGANIZATION_NAME ,
  QSC_OID_ID_ORGANIZATIONAL_UNIT_NAME , QSC_OID_ID_TITLE , QSC_OID_ID_DESCRIPTION , QSC_OID_ID_GIVEN_NAME ,
  QSC_OID_ID_INITIALS , QSC_OID_ID_GENERATION_QUALIFIER , QSC_OID_ID_DN_QUALIFIER , QSC_OID_ID_PSEUDONYM ,
  QSC_OID_ID_DOMAIN_COMPONENT , QSC_OID_ID_EMAIL_ADDRESS , QSC_OID_ID_SUBJECT_KEY_IDENTIFIER , QSC_OID_ID_KEY_USAGE ,
  QSC_OID_ID_SUBJECT_ALT_NAME , QSC_OID_ID_ISSUER_ALT_NAME , QSC_OID_ID_BASIC_CONSTRAINTS , QSC_OID_ID_NAME_CONSTRAINTS ,
  QSC_OID_ID_CRL_DISTRIBUTION_POINTS , QSC_OID_ID_CERTIFICATE_POLICIES , QSC_OID_ID_CRL_NUMBER , QSC_OID_ID_AUTHORITY_KEY_IDENTIFIER ,
  QSC_OID_ID_EXTENDED_KEY_USAGE , QSC_OID_ID_AUTHORITY_INFO_ACCESS , QSC_OID_ID_SUBJECT_INFO_ACCESS , QSC_OID_ID_ANY_EXTENDED_KEY_USAGE ,
  QSC_OID_ID_SERVER_AUTH , QSC_OID_ID_CLIENT_AUTH , QSC_OID_ID_CODE_SIGNING , QSC_OID_ID_EMAIL_PROTECTION ,
  QSC_OID_ID_TIME_STAMPING , QSC_OID_ID_OCSP_SIGNING , QSC_OID_ID_OCSP , QSC_OID_ID_CA_ISSUERS ,
  QSC_OID_ID_ML_DSA_44 , QSC_OID_ID_ML_DSA_65 , QSC_OID_ID_ML_DSA_87 , QSC_OID_ID_ML_KEM_512 ,
  QSC_OID_ID_ML_KEM_768 , QSC_OID_ID_ML_KEM_1024
}
 Known object identifier registry entries. More...

Functions

QSC_EXPORT_API size_t qsc_oid_registry_count (void)
 Gets the number of entries in the static object identifier registry.
QSC_EXPORT_API const qsc_oid_entryqsc_oid_registry_at (size_t index)
 Gets a registry entry by zero-based table index.
QSC_EXPORT_API const qsc_oid_entryqsc_oid_get_entry (qsc_oid_id id)
 Gets a registry entry by internal identifier.
QSC_EXPORT_API qsc_oid_id qsc_oid_identify (const qsc_asn1_oid *oid)
 Identifies a decoded object identifier against the static registry.
QSC_EXPORT_API bool qsc_oid_equals_id (const qsc_asn1_oid *oid, qsc_oid_id id)
 Tests whether a decoded object identifier matches a registry identifier.
QSC_EXPORT_API bool qsc_oid_get_encoded (qsc_oid_id id, const uint8_t **data, size_t *length)
 Gets the encoded value octets for a registry identifier.
QSC_EXPORT_API bool qsc_oid_to_asn1 (qsc_oid_id id, qsc_asn1_oid *oid)
 Copies the encoded value octets of a registry identifier to a decoded ASN.1 OID structure.
QSC_EXPORT_API const char * qsc_oid_get_dotted (qsc_oid_id id)
 Gets the dotted-decimal text form of a registry identifier.
QSC_EXPORT_API const char * qsc_oid_get_name (qsc_oid_id id)
 Gets the descriptive registry name of a registry identifier.
QSC_EXPORT_API const char * qsc_oid_get_name_from_oid (const qsc_asn1_oid *oid)
 Gets the descriptive registry name of a decoded object identifier.

Detailed Description

Object identifier registry and lookup helpers for the QSC X.509 layer.

This header defines the internal object identifier registry used by the X.509 support modules. The registry provides stable identifiers, encoded value octets, dotted-decimal names, and descriptive strings for the subset of ASN.1 OBJECT IDENTIFIER values required by certificate parsing, signature verification, public key extraction, distinguished name decoding, and extension handling.

The functions in this module operate on qsc_asn1_oid objects decoded by the ASN.1 helper layer. The registry is intentionally compact and focused on the algorithms and fields that are commonly encountered in DER-encoded X.509 certificates.

Enumeration Type Documentation

◆ qsc_oid_id_t

Known object identifier registry entries.

Enumerator
QSC_OID_ID_NONE 

No matching object identifier was found.

QSC_OID_ID_RSA_ENCRYPTION 

rsaEncryption.

QSC_OID_ID_MD5_WITH_RSA_ENCRYPTION 

md5WithRSAEncryption.

QSC_OID_ID_SHA1_WITH_RSA_ENCRYPTION 

sha1WithRSAEncryption.

QSC_OID_ID_SHA256_WITH_RSA_ENCRYPTION 

sha256WithRSAEncryption.

QSC_OID_ID_SHA384_WITH_RSA_ENCRYPTION 

sha384WithRSAEncryption.

QSC_OID_ID_SHA512_WITH_RSA_ENCRYPTION 

sha512WithRSAEncryption.

QSC_OID_ID_EC_PUBLIC_KEY 

id-ecPublicKey.

QSC_OID_ID_PRIME256V1 

prime256v1.

QSC_OID_ID_SECP384R1 

secp384r1.

QSC_OID_ID_SECP521R1 

secp521r1.

QSC_OID_ID_ECDSA_WITH_SHA1 

ecdsa-with-SHA1.

QSC_OID_ID_ECDSA_WITH_SHA256 

ecdsa-with-SHA256.

QSC_OID_ID_ECDSA_WITH_SHA384 

ecdsa-with-SHA384.

QSC_OID_ID_ECDSA_WITH_SHA512 

ecdsa-with-SHA512.

QSC_OID_ID_SHA1 

id-sha1.

QSC_OID_ID_SHA224 

id-sha224.

QSC_OID_ID_SHA256 

id-sha256.

QSC_OID_ID_SHA384 

id-sha384.

QSC_OID_ID_SHA512 

id-sha512.

QSC_OID_ID_COMMON_NAME 

commonName.

QSC_OID_ID_SURNAME 

surname.

QSC_OID_ID_SERIAL_NUMBER 

serialNumber.

QSC_OID_ID_COUNTRY_NAME 

countryName.

QSC_OID_ID_LOCALITY_NAME 

localityName.

QSC_OID_ID_STATE_OR_PROVINCE_NAME 

stateOrProvinceName.

QSC_OID_ID_STREET_ADDRESS 

streetAddress.

QSC_OID_ID_ORGANIZATION_NAME 

organizationName.

QSC_OID_ID_ORGANIZATIONAL_UNIT_NAME 

organizationalUnitName.

QSC_OID_ID_TITLE 

title.

QSC_OID_ID_DESCRIPTION 

description.

QSC_OID_ID_GIVEN_NAME 

givenName.

QSC_OID_ID_INITIALS 

initials.

QSC_OID_ID_GENERATION_QUALIFIER 

generationQualifier.

QSC_OID_ID_DN_QUALIFIER 

dnQualifier.

QSC_OID_ID_PSEUDONYM 

pseudonym.

QSC_OID_ID_DOMAIN_COMPONENT 

domainComponent.

QSC_OID_ID_EMAIL_ADDRESS 

emailAddress.

QSC_OID_ID_SUBJECT_KEY_IDENTIFIER 

subjectKeyIdentifier.

QSC_OID_ID_KEY_USAGE 

keyUsage.

QSC_OID_ID_SUBJECT_ALT_NAME 

subjectAltName.

QSC_OID_ID_ISSUER_ALT_NAME 

issuerAltName.

QSC_OID_ID_BASIC_CONSTRAINTS 

basicConstraints.

QSC_OID_ID_NAME_CONSTRAINTS 

nameConstraints.

QSC_OID_ID_CRL_DISTRIBUTION_POINTS 

cRLDistributionPoints.

QSC_OID_ID_CERTIFICATE_POLICIES 

certificatePolicies.

QSC_OID_ID_CRL_NUMBER 

cRLNumber.

QSC_OID_ID_AUTHORITY_KEY_IDENTIFIER 

authorityKeyIdentifier.

QSC_OID_ID_EXTENDED_KEY_USAGE 

extKeyUsage.

QSC_OID_ID_AUTHORITY_INFO_ACCESS 

authorityInfoAccess.

QSC_OID_ID_SUBJECT_INFO_ACCESS 

subjectInfoAccess.

QSC_OID_ID_ANY_EXTENDED_KEY_USAGE 

anyExtendedKeyUsage.

QSC_OID_ID_SERVER_AUTH 

id-kp-serverAuth.

QSC_OID_ID_CLIENT_AUTH 

id-kp-clientAuth.

QSC_OID_ID_CODE_SIGNING 

id-kp-codeSigning.

QSC_OID_ID_EMAIL_PROTECTION 

id-kp-emailProtection.

QSC_OID_ID_TIME_STAMPING 

id-kp-timeStamping.

QSC_OID_ID_OCSP_SIGNING 

id-kp-OCSPSigning.

QSC_OID_ID_OCSP 

id-ad-ocsp.

QSC_OID_ID_CA_ISSUERS 

id-ad-caIssuers.

QSC_OID_ID_ML_DSA_44 

id-ml-dsa-44.

QSC_OID_ID_ML_DSA_65 

id-ml-dsa-65.

QSC_OID_ID_ML_DSA_87 

id-ml-dsa-87.

QSC_OID_ID_ML_KEM_512 

id-alg-ml-kem-512.

QSC_OID_ID_ML_KEM_768 

id-alg-ml-kem-768.

QSC_OID_ID_ML_KEM_1024 

id-alg-ml-kem-1024.

Function Documentation

◆ qsc_oid_equals_id()

QSC_EXPORT_API bool qsc_oid_equals_id ( const qsc_asn1_oid * oid,
qsc_oid_id id )

Tests whether a decoded object identifier matches a registry identifier.

Parameters
oid[const qsc_asn1_oid*] The decoded object identifier.
id[qsc_oid_id] The registry identifier.
Returns
[bool] Returns true if the decoded object identifier matches the registry entry.

◆ qsc_oid_get_dotted()

QSC_EXPORT_API const char * qsc_oid_get_dotted ( qsc_oid_id id)

Gets the dotted-decimal text form of a registry identifier.

Parameters
id[qsc_oid_id] The registry identifier.
Returns
[const char*] Returns the dotted-decimal text form, or NULL if the identifier is invalid.

◆ qsc_oid_get_encoded()

QSC_EXPORT_API bool qsc_oid_get_encoded ( qsc_oid_id id,
const uint8_t ** data,
size_t * length )

Gets the encoded value octets for a registry identifier.

Parameters
id[qsc_oid_id] The registry identifier.
data[const uint8_t**] Receives a pointer to the encoded OID value octets.
length[size_t*] Receives the number of encoded OID value octets.
Returns
[bool] Returns true on success.

◆ qsc_oid_get_entry()

QSC_EXPORT_API const qsc_oid_entry * qsc_oid_get_entry ( qsc_oid_id id)

Gets a registry entry by internal identifier.

Parameters
id[qsc_oid_id] The internal registry identifier.
Returns
[const qsc_oid_entry*] Returns a pointer to the matching registry entry, or NULL if not found.

◆ qsc_oid_get_name()

QSC_EXPORT_API const char * qsc_oid_get_name ( qsc_oid_id id)

Gets the descriptive registry name of a registry identifier.

Parameters
id[qsc_oid_id] The registry identifier.
Returns
[const char*] Returns the descriptive name, or NULL if the identifier is invalid.

◆ qsc_oid_get_name_from_oid()

QSC_EXPORT_API const char * qsc_oid_get_name_from_oid ( const qsc_asn1_oid * oid)

Gets the descriptive registry name of a decoded object identifier.

Parameters
oid[const qsc_asn1_oid*] The decoded object identifier.
Returns
[const char*] Returns the descriptive name, or NULL if the OID is not recognized.

◆ qsc_oid_identify()

QSC_EXPORT_API qsc_oid_id qsc_oid_identify ( const qsc_asn1_oid * oid)

Identifies a decoded object identifier against the static registry.

Parameters
oid[const qsc_asn1_oid*] The decoded object identifier.
Returns
[qsc_oid_id] Returns the matching registry identifier, or QSC_OID_ID_NONE if not found.

◆ qsc_oid_registry_at()

QSC_EXPORT_API const qsc_oid_entry * qsc_oid_registry_at ( size_t index)

Gets a registry entry by zero-based table index.

Parameters
index[size_t] The registry entry index.
Returns
[const qsc_oid_entry*] Returns a pointer to the registry entry, or NULL on error.

◆ qsc_oid_registry_count()

QSC_EXPORT_API size_t qsc_oid_registry_count ( void )

Gets the number of entries in the static object identifier registry.

Returns
[size_t] Returns the number of known registry entries.

◆ qsc_oid_to_asn1()

QSC_EXPORT_API bool qsc_oid_to_asn1 ( qsc_oid_id id,
qsc_asn1_oid * oid )

Copies the encoded value octets of a registry identifier to a decoded ASN.1 OID structure.

Parameters
id[qsc_oid_id] The registry identifier.
oid[qsc_asn1_oid*] Receives the decoded OID structure.
Returns
[bool] Returns true on success.