12 #include "../GrayLibBase.h"
13 #include "../Hash/cHashCode.h"
14 #include "../Key/cKeyBase.h"
15 #include "../Key/cECPGroupParams.h"
16 #include "../Cipher/cCipherTypeDef.h"
17 #include "../Cert/cX509.h"
25 #define OID_ISO_MEMBER_BODIES "\x2a"
26 #define OID_ISO_IDENTIFIED_ORG "\x2b"
27 #define OID_ISO_CCITT_DS "\x55"
28 #define OID_ISO_ITU_COUNTRY "\x60"
33 #define OID_COUNTRY_US "\x86\x48"
34 #define OID_ORG_RSA_DATA_SECURITY "\x86\xf7\x0d"
35 #define OID_RSA_COMPANY OID_ISO_MEMBER_BODIES OID_COUNTRY_US OID_ORG_RSA_DATA_SECURITY
36 #define OID_ORG_ANSI_X9_62 "\xce\x3d"
37 #define OID_ANSI_X9_62 OID_ISO_MEMBER_BODIES OID_COUNTRY_US OID_ORG_ANSI_X9_62
42 #define OID_ORG_DOD "\x06"
43 #define OID_ORG_OIW "\x0e"
44 #define OID_OIW_SECSIG OID_ORG_OIW "\x03"
45 #define OID_OIW_SECSIG_ALG OID_OIW_SECSIG "\x02"
46 #define OID_OIW_SECSIG_SHA1 OID_OIW_SECSIG_ALG "\x1a"
47 #define OID_ORG_CERTICOM "\x81\x04"
48 #define OID_CERTICOM OID_ISO_IDENTIFIED_ORG OID_ORG_CERTICOM
49 #define OID_ORG_TELETRUST "\x24"
50 #define OID_TELETRUST OID_ISO_IDENTIFIED_ORG OID_ORG_TELETRUST
55 #define OID_ORGANIZATION "\x01"
56 #define OID_ISO_ITU_US_ORG OID_ISO_ITU_COUNTRY OID_COUNTRY_US OID_ORGANIZATION
58 #define OID_ORG_GOV "\x65"
59 #define OID_GOV OID_ISO_ITU_US_ORG OID_ORG_GOV
60 #define OID_ORG_NETSCAPE "\x86\xF8\x42"
61 #define OID_NETSCAPE OID_ISO_ITU_US_ORG OID_ORG_NETSCAPE
63 #define OID_ID_CE OID_ISO_CCITT_DS "\x1D"
69 #define OID_PKIX OID_ISO_IDENTIFIED_ORG OID_ORG_DOD "\x01\x05\x05\x07"
74 #define OID_AT OID_ISO_CCITT_DS "\x04"
75 #define OID_AT_CN OID_AT "\x03"
76 #define OID_AT_SUR_NAME OID_AT "\x04"
77 #define OID_AT_SERIAL_NUMBER OID_AT "\x05"
78 #define OID_AT_COUNTRY OID_AT "\x06"
79 #define OID_AT_LOCALITY OID_AT "\x07"
80 #define OID_AT_STATE OID_AT "\x08"
81 #define OID_AT_ORGANIZATION OID_AT "\x0A"
82 #define OID_AT_ORG_UNIT OID_AT "\x0B"
83 #define OID_AT_TITLE OID_AT "\x0C"
84 #define OID_AT_POSTAL_ADDRESS OID_AT "\x10"
85 #define OID_AT_POSTAL_CODE OID_AT "\x11"
86 #define OID_AT_GIVEN_NAME OID_AT "\x2A"
87 #define OID_AT_INITIALS OID_AT "\x2B"
88 #define OID_AT_GENERATION_QUALIFIER OID_AT "\x2C"
89 #define OID_AT_UNIQUE_IDENTIFIER OID_AT "\x2D"
90 #define OID_AT_DN_QUALIFIER OID_AT "\x2E"
91 #define OID_AT_PSEUDONYM OID_AT "\x41"
93 #define OID_DOMAIN_COMPONENT "\x09\x92\x26\x89\x93\xF2\x2C\x64\x01\x19"
97 #define OID_AUTHORITY_KEY_IDENTIFIER OID_ID_CE "\x23"
98 #define OID_SUBJECT_KEY_IDENTIFIER OID_ID_CE "\x0E"
99 #define OID_KEY_USAGE OID_ID_CE "\x0F"
100 #define OID_CERTIFICATE_POLICIES OID_ID_CE "\x20"
101 #define OID_POLICY_MAPPINGS OID_ID_CE "\x21"
102 #define OID_SUBJECT_ALT_NAME OID_ID_CE "\x11"
103 #define OID_ISSUER_ALT_NAME OID_ID_CE "\x12"
104 #define OID_SUBJECT_DIRECTORY_ATTRS OID_ID_CE "\x09"
105 #define OID_BASIC_CONSTRAINTS OID_ID_CE "\x13"
106 #define OID_NAME_CONSTRAINTS OID_ID_CE "\x1E"
107 #define OID_POLICY_CONSTRAINTS OID_ID_CE "\x24"
108 #define OID_EXTENDED_KEY_USAGE OID_ID_CE "\x25"
109 #define OID_CRL_DISTRIBUTION_POINTS OID_ID_CE "\x1F"
110 #define OID_INIHIBIT_ANYPOLICY OID_ID_CE "\x36"
111 #define OID_FRESHEST_CRL OID_ID_CE "\x2E"
116 #define OID_NS_CERT OID_NETSCAPE "\x01"
117 #define OID_NS_CERT_TYPE OID_NS_CERT "\x01"
118 #define OID_NS_BASE_URL OID_NS_CERT "\x02"
119 #define OID_NS_REVOCATION_URL OID_NS_CERT "\x03"
120 #define OID_NS_CA_REVOCATION_URL OID_NS_CERT "\x04"
121 #define OID_NS_RENEWAL_URL OID_NS_CERT "\x07"
122 #define OID_NS_CA_POLICY_URL OID_NS_CERT "\x08"
123 #define OID_NS_SSL_SERVER_NAME OID_NS_CERT "\x0C"
124 #define OID_NS_COMMENT OID_NS_CERT "\x0D"
125 #define OID_NS_DATA_TYPE OID_NETSCAPE "\x02"
126 #define OID_NS_CERT_SEQUENCE OID_NS_DATA_TYPE "\x05"
131 #define OID_PRIVATE_KEY_USAGE_PERIOD OID_ID_CE "\x10"
132 #define OID_CRL_NUMBER OID_ID_CE "\x14"
137 #define OID_ANY_EXTENDED_KEY_USAGE OID_EXTENDED_KEY_USAGE "\x00"
139 #define OID_KP OID_PKIX "\x03"
140 #define OID_SERVER_AUTH OID_KP "\x01"
141 #define OID_CLIENT_AUTH OID_KP "\x02"
142 #define OID_CODE_SIGNING OID_KP "\x03"
143 #define OID_EMAIL_PROTECTION OID_KP "\x04"
144 #define OID_TIME_STAMPING OID_KP "\x08"
145 #define OID_OCSP_SIGNING OID_KP "\x09"
150 #define OID_PKCS OID_RSA_COMPANY "\x01"
151 #define OID_PKCS1 OID_PKCS "\x01"
152 #define OID_PKCS5 OID_PKCS "\x05"
153 #define OID_PKCS9 OID_PKCS "\x09"
154 #define OID_PKCS12 OID_PKCS "\x0c"
158 #define OID_PKCS1_RSA OID_PKCS1 "\x01"
159 #define OID_PKCS1_MD2 OID_PKCS1 "\x02"
160 #define OID_PKCS1_MD4 OID_PKCS1 "\x03"
161 #define OID_PKCS1_MD5 OID_PKCS1 "\x04"
162 #define OID_PKCS1_SHA1 OID_PKCS1 "\x05"
163 #define OID_PKCS1_SHA224 OID_PKCS1 "\x0e"
164 #define OID_PKCS1_SHA256 OID_PKCS1 "\x0b"
165 #define OID_PKCS1_SHA384 OID_PKCS1 "\x0c"
166 #define OID_PKCS1_SHA512 OID_PKCS1 "\x0d"
168 #define OID_RSA_SHA_OBS "\x2B\x0E\x03\x02\x1D"
170 #define OID_PKCS9_EMAIL OID_PKCS9 "\x01"
172 #define OID_RSASSA_PSS OID_PKCS1 "\x0a"
173 #define OID_MGF1 OID_PKCS1 "\x08"
177 #define OID_DIGEST_ALG_MD2 OID_RSA_COMPANY "\x02\x02"
178 #define OID_DIGEST_ALG_MD4 OID_RSA_COMPANY "\x02\x04"
179 #define OID_DIGEST_ALG_MD5 OID_RSA_COMPANY "\x02\x05"
180 #define OID_DIGEST_ALG_SHA1 OID_ISO_IDENTIFIED_ORG OID_OIW_SECSIG_SHA1
181 #define OID_DIGEST_ALG_SHA224 OID_GOV "\x03\x04\x02\x04"
182 #define OID_DIGEST_ALG_SHA256 OID_GOV "\x03\x04\x02\x01"
184 #define OID_DIGEST_ALG_SHA384 OID_GOV "\x03\x04\x02\x02"
185 #define OID_DIGEST_ALG_SHA512 OID_GOV "\x03\x04\x02\x03"
186 #define OID_HMAC_SHA1 OID_RSA_COMPANY "\x02\x07"
190 #define OID_DES_CBC OID_ISO_IDENTIFIED_ORG OID_OIW_SECSIG_ALG "\x07"
191 #define OID_DES_EDE3_CBC OID_RSA_COMPANY "\x03\x07"
196 #define OID_PKCS5_PBKDF2 OID_PKCS5 "\x0c"
197 #define OID_PKCS5_PBES2 OID_PKCS5 "\x0d"
198 #define OID_PKCS5_PBMAC1 OID_PKCS5 "\x0e"
203 #define OID_PKCS5_PBE_MD2_DES_CBC OID_PKCS5 "\x01"
204 #define OID_PKCS5_PBE_MD2_RC2_CBC OID_PKCS5 "\x04"
205 #define OID_PKCS5_PBE_MD5_DES_CBC OID_PKCS5 "\x03"
206 #define OID_PKCS5_PBE_MD5_RC2_CBC OID_PKCS5 "\x06"
207 #define OID_PKCS5_PBE_SHA1_DES_CBC OID_PKCS5 "\x0a"
208 #define OID_PKCS5_PBE_SHA1_RC2_CBC OID_PKCS5 "\x0b"
213 #define OID_PKCS9_CSR_EXT_REQ OID_PKCS9 "\x0e"
218 #define OID_PKCS12_PBE OID_PKCS12 "\x01"
220 #define OID_PKCS12_PBE_SHA1_RC4_128 OID_PKCS12_PBE "\x01"
221 #define OID_PKCS12_PBE_SHA1_RC4_40 OID_PKCS12_PBE "\x02"
222 #define OID_PKCS12_PBE_SHA1_DES3_EDE_CBC OID_PKCS12_PBE "\x03"
223 #define OID_PKCS12_PBE_SHA1_DES2_EDE_CBC OID_PKCS12_PBE "\x04"
224 #define OID_PKCS12_PBE_SHA1_RC2_128_CBC OID_PKCS12_PBE "\x05"
225 #define OID_PKCS12_PBE_SHA1_RC2_40_CBC OID_PKCS12_PBE "\x06"
232 #define OID_EC_ALG_UNRESTRICTED OID_ANSI_X9_62 "\x02\01"
237 #define OID_EC_ALG_ECDH OID_CERTICOM "\x01\x0c"
245 #define OID_EC_GRP_secp192r1 OID_ANSI_X9_62 "\x03\x01\x01"
249 #define OID_EC_GRP_secp224r1 OID_CERTICOM "\x00\x21"
253 #define OID_EC_GRP_secp256r1 OID_ANSI_X9_62 "\x03\x01\x07"
257 #define OID_EC_GRP_secp384r1 OID_CERTICOM "\x00\x22"
261 #define OID_EC_GRP_secp521r1 OID_CERTICOM "\x00\x23"
265 #define OID_EC_GRP_secp192k1 OID_CERTICOM "\x00\x1f"
269 #define OID_EC_GRP_secp224k1 OID_CERTICOM "\x00\x20"
273 #define OID_EC_GRP_secp256k1 OID_CERTICOM "\x00\x0a"
281 #define OID_EC_BRAINPOOL_V1 OID_TELETRUST "\x03\x03\x02\x08\x01\x01"
284 #define OID_EC_GRP_brainpoolP256r1 OID_EC_BRAINPOOL_V1 "\x07"
287 #define OID_EC_GRP_brainpoolP384r1 OID_EC_BRAINPOOL_V1 "\x0B"
290 #define OID_EC_GRP_brainpoolP512r1 OID_EC_BRAINPOOL_V1 "\x0D"
298 #define OID_ANSI_X9_62_FIELD_TYPE OID_ANSI_X9_62 "\x01"
299 #define OID_ANSI_X9_62_PRIME_FIELD OID_ANSI_X9_62_FIELD_TYPE "\x01"
304 #define OID_ANSI_X9_62_SIG OID_ANSI_X9_62 "\x04"
305 #define OID_ANSI_X9_62_SIG_SHA2 OID_ANSI_X9_62_SIG "\x03"
309 #define OID_ECDSA_SHA1 OID_ANSI_X9_62_SIG "\x01"
314 #define OID_ECDSA_SHA224 OID_ANSI_X9_62_SIG_SHA2 "\x01"
319 #define OID_ECDSA_SHA256 OID_ANSI_X9_62_SIG_SHA2 "\x02"
324 #define OID_ECDSA_SHA384 OID_ANSI_X9_62_SIG_SHA2 "\x03"
329 #define OID_ECDSA_SHA512 OID_ANSI_X9_62_SIG_SHA2 "\x04"
347 return m_oid ==
nullptr;
362 p = (
const cOIDDefBase*)(((
const BYTE*)p) + nSizeElement);
417 template <
class T1,
class T2>
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
Definition: StrBuilder.h:18
BYTE * get_DataBytes() const noexcept
Definition: cMem.h:354
size_t get_DataSize() const noexcept
Definition: cMem.h:344
ECPGroup_TYPE
Definition: cECPGroupParams.h:28
SSL_Cipher_TYPE
Definition: cCipherTypeDef.h:22
X509_EXT_t
Definition: cX509.h:71
SSL_Key_TYPE
Definition: cKeyBase.h:24
SSL_Hash_TYPE
Definition: cHashCode.h:23
int StrLen_t
the length of a string in chars (bytes for UTF8, wchar_t for UNICODE). or offset in characters....
Definition: StrConst.h:32
Definition: cKeyBase.h:40
const char * GetDesc(const cMemBlock &oid, size_t nSizeElement) const
Definition: cOID.h:367
size_t m_oid_len
length of m_oid above
Definition: cOID.h:338
const char * m_description
human friendly description. default for m_key1
Definition: cOID.h:341
const char * m_oid
ASN.1 OID representation (as string sort of)
Definition: cOID.h:337
const char * m_name
official name (e.g. from RFC)
Definition: cOID.h:340
const cOIDDefBase * FindAsn1(const BYTE *pOid, size_t nSizeOid, size_t nSizeElement=sizeof(cOIDDefBase)) const
Definition: cOID.h:350
bool isLast() const
Definition: cOID.h:344
cOIDDefBase SUPER_t
Definition: cOID.h:381
const THIS_t * FindAsn1(const BYTE *pOid, size_t nSizeOid) const
Definition: cOID.h:391
T m_key1
Definition: cOID.h:384
cOIDDefT1(cOIDDefBase b, T k1)
Definition: cOID.h:386
cOIDDefT1< T > THIS_t
Definition: cOID.h:382
const THIS_t * FindKey1(T key1) const
Definition: cOID.h:404
bool GetKey1(const cMemBlock &oid, T *pKey1) const
Definition: cOID.h:396
const THIS_t * FindAsn1(const BYTE *pOid, size_t nSizeOid) const
Definition: cOID.h:432
bool GetKey2(const cMemBlock &oid, T1 *pKey1, T2 *pKey2) const
Definition: cOID.h:436
cOIDDefT1< T1 > SUPER_t
Definition: cOID.h:423
cOIDDefT2< T1, T2 > THIS_t
Definition: cOID.h:424
const THIS_t * FindKey2(T1 key1, T2 key2) const
Definition: cOID.h:445
cOIDDefT2(cOIDDefBase b, T1 k1, T2 k2)
Definition: cOID.h:428
T2 m_key2
Definition: cOID.h:426