1 // oids.h - written and placed in the public domain by Wei Dai
2 
3 //! \file oids.h
4 //! \brief ASN.1 object identifiers for algorthms and schemes
5 
6 #ifndef CRYPTOPP_OIDS_H
7 #define CRYPTOPP_OIDS_H
8 
9 #include "asn.h"
10 
11 NAMESPACE_BEGIN(CryptoPP)
12 
13 NAMESPACE_BEGIN(ASN1)
14 
15 #define DEFINE_OID(value, name)	inline OID name() {return value;}
16 
17 DEFINE_OID(1, iso)
18 	DEFINE_OID(iso()+2, member_body)
19 		DEFINE_OID(member_body()+840, iso_us)
20 			DEFINE_OID(iso_us()+10040, ansi_x9_57)
21 				DEFINE_OID(ansi_x9_57()+4+1, id_dsa)
22 			DEFINE_OID(iso_us()+10045, ansi_x9_62)
23 				DEFINE_OID(ansi_x9_62()+1, id_fieldType)
24 					DEFINE_OID(id_fieldType()+1, prime_field)
25 					DEFINE_OID(id_fieldType()+2, characteristic_two_field)
26 						DEFINE_OID(characteristic_two_field()+3, id_characteristic_two_basis)
27 							DEFINE_OID(id_characteristic_two_basis()+1, gnBasis)
28 							DEFINE_OID(id_characteristic_two_basis()+2, tpBasis)
29 							DEFINE_OID(id_characteristic_two_basis()+3, ppBasis)
30 				DEFINE_OID(ansi_x9_62()+2, id_publicKeyType)
31 					DEFINE_OID(id_publicKeyType()+1, id_ecPublicKey)
32 				DEFINE_OID(ansi_x9_62()+3, ansi_x9_62_curves)
33 					DEFINE_OID(ansi_x9_62_curves()+1, ansi_x9_62_curves_prime)
34 						DEFINE_OID(ansi_x9_62_curves_prime()+1, secp192r1)
35 						DEFINE_OID(ansi_x9_62_curves_prime()+7, secp256r1)
36 			DEFINE_OID(iso_us()+113549, rsadsi)
37 				DEFINE_OID(rsadsi()+1, pkcs)
38 					DEFINE_OID(pkcs()+1, pkcs_1)
39 						DEFINE_OID(pkcs_1()+1, rsaEncryption);
40 				DEFINE_OID(rsadsi()+2, rsadsi_digestAlgorithm)
41 					DEFINE_OID(rsadsi_digestAlgorithm()+2, id_md2)
42 					DEFINE_OID(rsadsi_digestAlgorithm()+5, id_md5)
43 	DEFINE_OID(iso()+3, identified_organization)
44 		// Arc from http://tools.ietf.org/html/draft-josefsson-pkix-newcurves
45 		DEFINE_OID(identified_organization()+6, dod)
46 			DEFINE_OID(dod()+1, internet)
47 				DEFINE_OID(internet()+4, internet_private)
48 					DEFINE_OID(internet_private()+1, enterprise)
49 						DEFINE_OID(enterprise()+11591,gnu)
50 							DEFINE_OID(gnu()+15,ellipticCurve)
51 								DEFINE_OID(ellipticCurve()+1,curve25519)
52 								DEFINE_OID(ellipticCurve()+2,curve448)
53 								DEFINE_OID(ellipticCurve()+3,curve25519ph)
54 								DEFINE_OID(ellipticCurve()+4,curve448ph)
55 		DEFINE_OID(identified_organization()+14, oiw);
56 			DEFINE_OID(oiw()+3, oiw_secsig);
57 				DEFINE_OID(oiw_secsig()+2, oiw_secsig_algorithms);
58 					DEFINE_OID(oiw_secsig_algorithms()+26, id_sha1);
59 		DEFINE_OID(identified_organization()+36, teletrust);
60 			DEFINE_OID(teletrust()+3, teletrust_algorithm)
61 				DEFINE_OID(teletrust_algorithm()+2+1, id_ripemd160)
62 				DEFINE_OID(teletrust_algorithm()+3+2+8+1, teletrust_ellipticCurve)
63 					DEFINE_OID(teletrust_ellipticCurve()+1+1, brainpoolP160r1)
64 					DEFINE_OID(teletrust_ellipticCurve()+1+3, brainpoolP192r1)
65 					DEFINE_OID(teletrust_ellipticCurve()+1+5, brainpoolP224r1)
66 					DEFINE_OID(teletrust_ellipticCurve()+1+7, brainpoolP256r1)
67 					DEFINE_OID(teletrust_ellipticCurve()+1+9, brainpoolP320r1)
68 					DEFINE_OID(teletrust_ellipticCurve()+1+11, brainpoolP384r1)
69 					DEFINE_OID(teletrust_ellipticCurve()+1+13, brainpoolP512r1)
70 		DEFINE_OID(identified_organization()+132, certicom);
71 			DEFINE_OID(certicom()+0, certicom_ellipticCurve);
72 				// these are sorted by curve type and then by OID
73 				// first curves based on GF(p)
74 				DEFINE_OID(certicom_ellipticCurve()+6, secp112r1);
75 				DEFINE_OID(certicom_ellipticCurve()+7, secp112r2);
76 				DEFINE_OID(certicom_ellipticCurve()+8, secp160r1);
77 				DEFINE_OID(certicom_ellipticCurve()+9, secp160k1);
78 				DEFINE_OID(certicom_ellipticCurve()+10, secp256k1);
79 				DEFINE_OID(certicom_ellipticCurve()+28, secp128r1);
80 				DEFINE_OID(certicom_ellipticCurve()+29, secp128r2);
81 				DEFINE_OID(certicom_ellipticCurve()+30, secp160r2);
82 				DEFINE_OID(certicom_ellipticCurve()+31, secp192k1);
83 				DEFINE_OID(certicom_ellipticCurve()+32, secp224k1);
84 				DEFINE_OID(certicom_ellipticCurve()+33, secp224r1);
85 				DEFINE_OID(certicom_ellipticCurve()+34, secp384r1);
86 				DEFINE_OID(certicom_ellipticCurve()+35, secp521r1);
87 				// then curves based on GF(2^n)
88 				DEFINE_OID(certicom_ellipticCurve()+1, sect163k1);
89 				DEFINE_OID(certicom_ellipticCurve()+2, sect163r1);
90 				DEFINE_OID(certicom_ellipticCurve()+3, sect239k1);
91 				DEFINE_OID(certicom_ellipticCurve()+4, sect113r1);
92 				DEFINE_OID(certicom_ellipticCurve()+5, sect113r2);
93 				DEFINE_OID(certicom_ellipticCurve()+15, sect163r2);
94 				DEFINE_OID(certicom_ellipticCurve()+16, sect283k1);
95 				DEFINE_OID(certicom_ellipticCurve()+17, sect283r1);
96 				DEFINE_OID(certicom_ellipticCurve()+22, sect131r1);
97 				DEFINE_OID(certicom_ellipticCurve()+23, sect131r2);
98 				DEFINE_OID(certicom_ellipticCurve()+24, sect193r1);
99 				DEFINE_OID(certicom_ellipticCurve()+25, sect193r2);
100 				DEFINE_OID(certicom_ellipticCurve()+26, sect233k1);
101 				DEFINE_OID(certicom_ellipticCurve()+27, sect233r1);
102 				DEFINE_OID(certicom_ellipticCurve()+36, sect409k1);
103 				DEFINE_OID(certicom_ellipticCurve()+37, sect409r1);
104 				DEFINE_OID(certicom_ellipticCurve()+38, sect571k1);
105 				DEFINE_OID(certicom_ellipticCurve()+39, sect571r1);
106 DEFINE_OID(2, joint_iso_ccitt)
107 	DEFINE_OID(joint_iso_ccitt()+16, country)
108 		DEFINE_OID(country()+840, joint_iso_ccitt_us)
109 			DEFINE_OID(joint_iso_ccitt_us()+1, us_organization)
110 				DEFINE_OID(us_organization()+101, us_gov)
111 					DEFINE_OID(us_gov()+3, csor)
112 						DEFINE_OID(csor()+4, nistalgorithms)
113 							DEFINE_OID(nistalgorithms()+1, aes)
114 								DEFINE_OID(aes()+1, id_aes128_ECB)
115 								DEFINE_OID(aes()+2, id_aes128_cbc)
116 								DEFINE_OID(aes()+3, id_aes128_ofb)
117 								DEFINE_OID(aes()+4, id_aes128_cfb)
118 								DEFINE_OID(aes()+21, id_aes192_ECB)
119 								DEFINE_OID(aes()+22, id_aes192_cbc)
120 								DEFINE_OID(aes()+23, id_aes192_ofb)
121 								DEFINE_OID(aes()+24, id_aes192_cfb)
122 								DEFINE_OID(aes()+41, id_aes256_ECB)
123 								DEFINE_OID(aes()+42, id_aes256_cbc)
124 								DEFINE_OID(aes()+43, id_aes256_ofb)
125 								DEFINE_OID(aes()+44, id_aes256_cfb)
126 							DEFINE_OID(nistalgorithms()+2, nist_hashalgs)
127 								DEFINE_OID(nist_hashalgs()+1, id_sha256)
128 								DEFINE_OID(nist_hashalgs()+2, id_sha384)
129 								DEFINE_OID(nist_hashalgs()+3, id_sha512)
130 
131 NAMESPACE_END
132 
133 NAMESPACE_END
134 
135 #endif
136