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
Go to the documentation of this file.
1/* 2020-2026 Quantum Resistant Cryptographic Solutions Corporation
2 * All Rights Reserved.
3 *
4 * NOTICE:
5 * This software and all accompanying materials are the exclusive property of
6 * Quantum Resistant Cryptographic Solutions Corporation (QRCS). The intellectual
7 * and technical concepts contained herein are proprietary to QRCS and are
8 * protected under applicable Canadian, U.S., and international copyright,
9 * patent, and trade secret laws.
10 *
11 * CRYPTOGRAPHIC ALGORITHMS AND IMPLEMENTATIONS:
12 * - This software includes implementations of cryptographic primitives and
13 * algorithms that are standardized or in the public domain, such as AES
14 * and SHA-3, which are not proprietary to QRCS.
15 * - This software also includes cryptographic primitives, constructions, and
16 * algorithms designed by QRCS, including but not limited to RCS, SCB, CSX, QMAC, and
17 * related components, which are proprietary to QRCS.
18 * - All source code, implementations, protocol compositions, optimizations,
19 * parameter selections, and engineering work contained in this software are
20 * original works of QRCS and are protected under this license.
21 *
22 * LICENSE AND USE RESTRICTIONS:
23 * - This software is licensed under the Quantum Resistant Cryptographic Solutions
24 * Public Research and Evaluation License (QRCS-PREL), 2025-2026.
25 * - Permission is granted solely for non-commercial evaluation, academic research,
26 * cryptographic analysis, interoperability testing, and feasibility assessment.
27 * - Commercial use, production deployment, commercial redistribution, or
28 * integration into products or services is strictly prohibited without a
29 * separate written license agreement executed with QRCS.
30 * - Licensing and authorized distribution are solely at the discretion of QRCS.
31 *
32 * EXPERIMENTAL CRYPTOGRAPHY NOTICE:
33 * Portions of this software may include experimental, novel, or evolving
34 * cryptographic designs. Use of this software is entirely at the user's risk.
35 *
36 * DISCLAIMER:
37 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38 * IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
39 * FOR A PARTICULAR PURPOSE, SECURITY, OR NON-INFRINGEMENT. QRCS DISCLAIMS ALL
40 * LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
41 * ARISING FROM THE USE OR MISUSE OF THIS SOFTWARE.
42 *
43 * FULL LICENSE:
44 * This software is subject to the Quantum Resistant Cryptographic Solutions
45 * Public Research and Evaluation License (QRCS-PREL), 2025-2026. The complete license terms
46 * are provided in the accompanying LICENSE file or at https://www.qrcscorp.ca.
47 *
48 * Written by: John G. Underhill
49 * Contact: contact@qrcscorp.ca
50 */
51
52#ifndef QSC_OID_H
53#define QSC_OID_H
54
55#include "qsccommon.h"
56#include "asn1.h"
57
58QSC_CPLUSPLUS_ENABLED_START
59
77
81typedef enum qsc_oid_id_t
82{
84
91
100
106
125
139
147
150
154
159
164{
166 const uint8_t* data;
167 size_t length;
168 const char* dotted;
169 const char* name;
171
178
187
196
205
215
225QSC_EXPORT_API bool qsc_oid_get_encoded(qsc_oid_id id, const uint8_t** data, size_t* length);
226
236
245
254
263
264QSC_CPLUSPLUS_ENABLED_END
265
266#endif
ASN.1 helper functions and data types built on the QSC BER and DER encoding layer.
QSC_EXPORT_API struct qsc_asn1_oid_t qsc_asn1_oid
A decoded ASN.1 OBJECT 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.
Definition oid.c:327
QSC_EXPORT_API struct qsc_oid_entry_t qsc_oid_entry
A registry entry describing a known object identifier.
qsc_oid_id_t
Known object identifier registry entries.
Definition oid.h:82
@ QSC_OID_ID_SUBJECT_INFO_ACCESS
Definition oid.h:138
@ QSC_OID_ID_LOCALITY_NAME
Definition oid.h:111
@ QSC_OID_ID_NONE
Definition oid.h:83
@ QSC_OID_ID_EMAIL_ADDRESS
Definition oid.h:124
@ QSC_OID_ID_OCSP
Definition oid.h:148
@ QSC_OID_ID_TITLE
Definition oid.h:116
@ QSC_OID_ID_ML_DSA_65
Definition oid.h:152
@ QSC_OID_ID_RSA_ENCRYPTION
Definition oid.h:85
@ QSC_OID_ID_CERTIFICATE_POLICIES
Definition oid.h:133
@ QSC_OID_ID_ML_KEM_1024
Definition oid.h:157
@ QSC_OID_ID_EC_PUBLIC_KEY
Definition oid.h:92
@ QSC_OID_ID_ML_DSA_44
Definition oid.h:151
@ QSC_OID_ID_GENERATION_QUALIFIER
Definition oid.h:120
@ QSC_OID_ID_ISSUER_ALT_NAME
Definition oid.h:129
@ QSC_OID_ID_STREET_ADDRESS
Definition oid.h:113
@ QSC_OID_ID_BASIC_CONSTRAINTS
Definition oid.h:130
@ QSC_OID_ID_SHA384
Definition oid.h:104
@ QSC_OID_ID_EXTENDED_KEY_USAGE
Definition oid.h:136
@ QSC_OID_ID_SHA224
Definition oid.h:102
@ QSC_OID_ID_SECP521R1
Definition oid.h:95
@ QSC_OID_ID_SHA512_WITH_RSA_ENCRYPTION
Definition oid.h:90
@ QSC_OID_ID_ECDSA_WITH_SHA512
Definition oid.h:99
@ QSC_OID_ID_ORGANIZATION_NAME
Definition oid.h:114
@ QSC_OID_ID_NAME_CONSTRAINTS
Definition oid.h:131
@ QSC_OID_ID_PRIME256V1
Definition oid.h:93
@ QSC_OID_ID_CRL_DISTRIBUTION_POINTS
Definition oid.h:132
@ QSC_OID_ID_CA_ISSUERS
Definition oid.h:149
@ QSC_OID_ID_TIME_STAMPING
Definition oid.h:145
@ QSC_OID_ID_CRL_NUMBER
Definition oid.h:134
@ QSC_OID_ID_KEY_USAGE
Definition oid.h:127
@ QSC_OID_ID_COUNTRY_NAME
Definition oid.h:110
@ QSC_OID_ID_ML_KEM_768
Definition oid.h:156
@ QSC_OID_ID_SERIAL_NUMBER
Definition oid.h:109
@ QSC_OID_ID_SHA1
Definition oid.h:101
@ QSC_OID_ID_ECDSA_WITH_SHA384
Definition oid.h:98
@ QSC_OID_ID_SHA512
Definition oid.h:105
@ QSC_OID_ID_MD5_WITH_RSA_ENCRYPTION
Definition oid.h:86
@ QSC_OID_ID_OCSP_SIGNING
Definition oid.h:146
@ QSC_OID_ID_SHA256_WITH_RSA_ENCRYPTION
Definition oid.h:88
@ QSC_OID_ID_SURNAME
Definition oid.h:108
@ QSC_OID_ID_EMAIL_PROTECTION
Definition oid.h:144
@ QSC_OID_ID_SUBJECT_KEY_IDENTIFIER
Definition oid.h:126
@ QSC_OID_ID_STATE_OR_PROVINCE_NAME
Definition oid.h:112
@ QSC_OID_ID_ECDSA_WITH_SHA256
Definition oid.h:97
@ QSC_OID_ID_SHA1_WITH_RSA_ENCRYPTION
Definition oid.h:87
@ QSC_OID_ID_SHA384_WITH_RSA_ENCRYPTION
Definition oid.h:89
@ QSC_OID_ID_SUBJECT_ALT_NAME
Definition oid.h:128
@ QSC_OID_ID_GIVEN_NAME
Definition oid.h:118
@ QSC_OID_ID_DESCRIPTION
Definition oid.h:117
@ QSC_OID_ID_ANY_EXTENDED_KEY_USAGE
Definition oid.h:140
@ QSC_OID_ID_SERVER_AUTH
Definition oid.h:141
@ QSC_OID_ID_SECP384R1
Definition oid.h:94
@ QSC_OID_ID_AUTHORITY_INFO_ACCESS
Definition oid.h:137
@ QSC_OID_ID_CODE_SIGNING
Definition oid.h:143
@ QSC_OID_ID_PSEUDONYM
Definition oid.h:122
@ QSC_OID_ID_ECDSA_WITH_SHA1
Definition oid.h:96
@ QSC_OID_ID_SHA256
Definition oid.h:103
@ QSC_OID_ID_DOMAIN_COMPONENT
Definition oid.h:123
@ QSC_OID_ID_AUTHORITY_KEY_IDENTIFIER
Definition oid.h:135
@ QSC_OID_ID_ORGANIZATIONAL_UNIT_NAME
Definition oid.h:115
@ QSC_OID_ID_DN_QUALIFIER
Definition oid.h:121
@ QSC_OID_ID_ML_DSA_87
Definition oid.h:153
@ QSC_OID_ID_CLIENT_AUTH
Definition oid.h:142
@ QSC_OID_ID_COMMON_NAME
Definition oid.h:107
@ QSC_OID_ID_INITIALS
Definition oid.h:119
@ QSC_OID_ID_ML_KEM_512
Definition oid.h:155
QSC_EXPORT_API qsc_oid_id qsc_oid_identify(const qsc_asn1_oid *oid)
Identifies a decoded object identifier against the static registry.
Definition oid.c:286
enum qsc_oid_id_t qsc_oid_id
Known object identifier registry entries.
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.
Definition oid.c:352
QSC_EXPORT_API const qsc_oid_entry * qsc_oid_get_entry(qsc_oid_id id)
Gets a registry entry by internal identifier.
Definition oid.c:267
QSC_EXPORT_API const char * qsc_oid_get_name(qsc_oid_id id)
Gets the descriptive registry name of a registry identifier.
Definition oid.c:390
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.
Definition oid.c:311
QSC_EXPORT_API const qsc_oid_entry * qsc_oid_registry_at(size_t index)
Gets a registry entry by zero-based table index.
Definition oid.c:253
QSC_EXPORT_API size_t qsc_oid_registry_count(void)
Gets the number of entries in the static object identifier registry.
Definition oid.c:248
QSC_EXPORT_API const char * qsc_oid_get_dotted(qsc_oid_id id)
Gets the dotted-decimal text form of a registry identifier.
Definition oid.c:374
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.
Definition oid.c:406
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 registry entry describing a known object identifier.
Definition oid.h:164
const char * dotted
Definition oid.h:168
const uint8_t * data
Definition oid.h:166
const char * name
Definition oid.h:169
qsc_oid_id id
Definition oid.h:165
size_t length
Definition oid.h:167