1use core::ops;
2
3pub(crate) const MAX_OID_FIRST_OCTET: u32 = 2;
4pub(crate) const MAX_OID_SECOND_OCTET: u32 = 39;
5
6const fn is_valid_oid(slice: &[u32]) -> bool {
7 !slice.is_empty() && slice[0] <= MAX_OID_FIRST_OCTET
8}
9
10#[derive(Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
13#[repr(transparent)]
14pub struct Oid([u32]);
15
16impl Oid {
17 pub const fn new(slice: &[u32]) -> Option<&Self> {
27 if is_valid_oid(slice) {
28 Some(Self::new_unchecked(slice))
29 } else {
30 None
31 }
32 }
33
34 pub const fn const_new(oid: &'static [u32]) -> &'static Self {
39 match Self::new(oid) {
40 Some(oid) => oid,
41 None => panic!("not a valid OID"),
42 }
43 }
44
45 pub fn new_mut(slice: &mut [u32]) -> Option<&mut Self> {
55 if is_valid_oid(slice) {
56 Some(Self::new_unchecked_mut(slice))
57 } else {
58 None
59 }
60 }
61
62 pub const fn new_unchecked(slice: &[u32]) -> &Self {
68 unsafe { &*(slice as *const [u32] as *const Self) }
69 }
70
71 pub fn new_unchecked_mut(slice: &mut [u32]) -> &mut Self {
77 unsafe { &mut *(slice as *mut [u32] as *mut Self) }
78 }
79}
80
81impl alloc::borrow::ToOwned for Oid {
82 type Owned = ObjectIdentifier;
83
84 fn to_owned(&self) -> Self::Owned {
85 Self::Owned::new_unchecked(self.0.to_owned().into())
86 }
87}
88
89impl AsRef<[u32]> for Oid {
90 fn as_ref(&self) -> &[u32] {
91 self.0.as_ref()
92 }
93}
94
95impl PartialEq<[u32]> for Oid {
96 fn eq(&self, rhs: &[u32]) -> bool {
97 &self.0 == rhs
98 }
99}
100
101impl<const N: usize> PartialEq<[u32; N]> for Oid {
102 fn eq(&self, rhs: &[u32; N]) -> bool {
103 &self.0 == rhs
104 }
105}
106
107impl PartialEq<Oid> for [u32] {
108 fn eq(&self, rhs: &Oid) -> bool {
109 self == &rhs.0
110 }
111}
112
113impl PartialEq<Oid> for ObjectIdentifier {
114 fn eq(&self, rhs: &Oid) -> bool {
115 *self.0 == rhs.0
116 }
117}
118
119impl PartialEq<&Oid> for ObjectIdentifier {
120 fn eq(&self, rhs: &&Oid) -> bool {
121 *self.0 == rhs.0
122 }
123}
124
125impl PartialEq<Oid> for &ObjectIdentifier {
126 fn eq(&self, rhs: &Oid) -> bool {
127 *self.0 == rhs.0
128 }
129}
130
131impl<const N: usize> PartialEq<Oid> for [u32; N] {
132 fn eq(&self, rhs: &Oid) -> bool {
133 self == &rhs.0
134 }
135}
136
137impl ops::Deref for Oid {
138 type Target = [u32];
139
140 fn deref(&self) -> &Self::Target {
141 &self.0
142 }
143}
144
145impl ops::DerefMut for Oid {
146 fn deref_mut(&mut self) -> &mut Self::Target {
147 &mut self.0
148 }
149}
150
151#[derive(Clone, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)]
154pub struct ObjectIdentifier(alloc::borrow::Cow<'static, [u32]>);
155
156impl ObjectIdentifier {
157 pub fn new(arcs: impl Into<alloc::borrow::Cow<'static, [u32]>>) -> Option<Self> {
162 let arcs = arcs.into();
163 is_valid_oid(&arcs).then_some(Self(arcs))
164 }
165
166 pub const fn new_unchecked(vec: alloc::borrow::Cow<'static, [u32]>) -> Self {
172 Self(vec)
173 }
174}
175
176impl AsRef<[u32]> for ObjectIdentifier {
177 fn as_ref(&self) -> &[u32] {
178 self.0.as_ref()
179 }
180}
181
182impl alloc::borrow::Borrow<Oid> for ObjectIdentifier {
183 fn borrow(&self) -> &Oid {
184 self
185 }
186}
187
188impl<'a> From<&'a Oid> for ObjectIdentifier {
189 fn from(oid: &'a Oid) -> Self {
190 alloc::borrow::ToOwned::to_owned(oid)
191 }
192}
193
194impl ops::Deref for ObjectIdentifier {
195 type Target = Oid;
196
197 fn deref(&self) -> &Self::Target {
198 Oid::new_unchecked(&self.0)
199 }
200}
201
202impl ops::DerefMut for ObjectIdentifier {
203 fn deref_mut(&mut self) -> &mut Self::Target {
204 Oid::new_unchecked_mut(self.0.to_mut())
205 }
206}
207
208impl<const N: usize> PartialEq<ObjectIdentifier> for [u32; N] {
209 fn eq(&self, rhs: &ObjectIdentifier) -> bool {
210 self == &**rhs
211 }
212}
213
214impl PartialEq<ObjectIdentifier> for Oid {
215 fn eq(&self, rhs: &ObjectIdentifier) -> bool {
216 self.0 == *rhs.0
217 }
218}
219
220impl PartialEq<ObjectIdentifier> for &Oid {
221 fn eq(&self, rhs: &ObjectIdentifier) -> bool {
222 self.0 == *rhs.0
223 }
224}
225
226impl PartialEq<[u32]> for ObjectIdentifier {
227 fn eq(&self, rhs: &[u32]) -> bool {
228 self.0 == rhs
229 }
230}
231
232macro_rules! oids {
233 ($($name:ident => $($num:literal),+ $(,)?);+ $(;)?) => {
234 impl Oid {
235 $(
236 pub const $name: &'static Oid = Oid::const_new(&[$($num),+]);
237 )+
238 }
239 }
240}
241
242oids! {
244 ITU_T => 0;
245 ITU_T_DATA_PSS_UCL_PILOT => 0, 9, 2342, 19200300, 100;
246 ITU_T_DATA_PSS_UCL_PILOT_ATTRIBUTE_TYPE => 0, 9, 2342, 19200300, 100, 1;
247 ITU_T_DATA_PSS_UCL_PILOT_ATTRIBUTE_TYPE_DOMAIN_COMPONENT => 0, 9, 2342, 19200300, 100, 1, 25;
248}
249
250oids! {
252 ISO => 1;
253
254 ISO_MEMBER_BODY => 1, 2;
255 ISO_MEMBER_BODY_US => 1, 2, 840;
256 ISO_MEMBER_BODY_US_RSADSI => 1, 2, 840, 113549;
257 ISO_MEMBER_BODY_US_X957_X9CM_DSA => 1, 2, 840, 10040, 4, 1;
258 ISO_MEMBER_BODY_US_X957_X9CM_DSA_SHA1 => 1, 2, 840, 10040, 4, 3;
259
260 ISO_MEMBER_BODY_US_ANSI_X942_NUMBER_TYPE_PUBLIC => 1, 2, 840, 10046, 2, 1;
261
262 ISO_MEMBER_BODY_US_RSADSI_PKCS => 1, 2, 840, 113549, 1;
263 ISO_MEMBER_BODY_US_RSADSI_PKCS1 => 1, 2, 840, 113549, 1, 1;
264 ISO_MEMBER_BODY_US_RSADSI_PKCS1_RSA => 1, 2, 840, 113549, 1, 1, 1;
265 ISO_MEMBER_BODY_US_RSADSI_PKCS1_MD5_RSA => 1, 2, 840, 113549, 1, 1, 4;
266 ISO_MEMBER_BODY_US_RSADSI_PKCS1_SHA1_RSA => 1, 2, 840, 113549, 1, 1, 5;
267 ISO_MEMBER_BODY_US_RSADSI_PKCS1_RSAES_OAEP => 1, 2, 840, 113549, 1, 1, 7;
268 ISO_MEMBER_BODY_US_RSADSI_PKCS1_MGF1 => 1, 2, 840, 113549, 1, 1, 8;
269
270 ISO_MEMBER_BODY_US_RSADSI_DIGEST_ALGORITHM => 1, 2, 840, 113549, 1, 2;
271 ISO_MEMBER_BODY_US_RSADSI_DIGEST_ALGORITHM_MD5 => 1, 2, 840, 113549, 1, 2, 5;
272
273 ISO_MEMBER_BODY_US_RSADSI_ENCRYPTION_ALGORITHM => 1, 2, 840, 113549, 1, 3;
274 ISO_MEMBER_BODY_US_RSADSI_ENCRYPTION_ALGORITHM_RC2_CBC => 1, 2, 840, 113549, 1, 3, 2;
275 ISO_MEMBER_BODY_US_RSADSI_ENCRYPTION_ALGORITHM_DES_EDE3_CBC => 1, 2, 840, 113549, 1, 3, 7;
276
277 ISO_MEMBER_BODY_US_RSADSI_PKCS5_PBKDF2 => 1, 2, 840, 113549, 1, 5, 12;
278
279 ISO_MEMBER_BODY_US_RSADSI_PKCS7_DATA => 1, 2, 840, 113549, 1, 7, 1;
280 ISO_MEMBER_BODY_US_RSADSI_PKCS7_SIGNED_DATA => 1, 2, 840, 113549, 1, 7, 2;
281 ISO_MEMBER_BODY_US_RSADSI_PKCS7_ENVELOPED_DATA => 1, 2, 840, 113549, 1, 7, 3;
282 ISO_MEMBER_BODY_US_RSADSI_PKCS7_DIGESTED_DATA => 1, 2, 840, 113549, 1, 7, 5;
283 ISO_MEMBER_BODY_US_RSADSI_PKCS7_ENCRYPTED_DATA => 1, 2, 840, 113549, 1, 7, 6;
284
285 ISO_MEMBER_BODY_US_RSADSI_PKCS9 => 1, 2, 840, 113549, 1, 9;
286 ISO_MEMBER_BODY_US_RSADSI_PKCS9_CONTENT_TYPE => 1, 2, 840, 113549, 1, 9, 3;
287 ISO_MEMBER_BODY_US_RSADSI_PKCS9_MESSAGE_DIGEST => 1, 2, 840, 113549, 1, 9, 4;
288 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SIGNING_TIME => 1, 2, 840, 113549, 1, 9, 5;
289 ISO_MEMBER_BODY_US_RSADSI_PKCS9_COUNTER_SIGNATURE => 1, 2, 840, 113549, 1, 9, 6;
290
291 ISO_MEMBER_BODY_US_RSADSI_PKCS9_CAPABILITIES => 1, 2, 840, 113549, 1, 9, 15;
292 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME => 1, 2, 840, 113549, 1, 9, 16;
293 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT => 1, 2, 840, 113549, 1, 9, 16, 1;
294 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT_RECEIPT => 1, 2, 840, 113549, 1, 9, 16, 1, 1;
295 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT_AUTHENTICATED_DATA => 1, 2, 840, 113549, 1, 9, 16, 1, 2;
296 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT_CONTENTINFO => 1, 2, 840, 113549, 1, 9, 16, 1, 6;
297 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT_FIRMWARE_PACKAGE => 1, 2, 840, 113549, 1, 9, 16, 1, 16;
298 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT_FIRMWARE_LOAD_RECEIPT => 1, 2, 840, 113549, 1, 9, 16, 1, 17;
299 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT_FIRMWARE_LOAD_ERROR => 1, 2, 840, 113549, 1, 9, 16, 1, 18;
300 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT_AUTH_ENVELOPED_DATA => 1, 2, 840, 113549, 1, 9, 16, 1, 23;
301 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CT_TRUST_ANCHOR_LIST => 1, 2, 840, 113549, 1, 9, 16, 1, 24;
302 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA => 1, 2, 840, 113549, 1, 9, 16, 2;
303 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_RECEIPT_REQUEST => 1, 2, 840, 113549, 1, 9, 16, 2, 1;
304 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_SECURITY_LABEL => 1, 2, 840, 113549, 1, 9, 16, 2, 2;
305 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_ML_EXPAND_HISTORY => 1, 2, 840, 113549, 1, 9, 16, 2, 3;
306 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_CONTENT_HINT => 1, 2, 840, 113549, 1, 9, 16, 2, 4;
307 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_MESSAGE_SIGNATURE_DIGEST => 1, 2, 840, 113549, 1, 9, 16, 2, 5;
308 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_CONTENT_IDENTIFIER => 1, 2, 840, 113549, 1, 9, 16, 2, 7;
309 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_EQUIVALVENT_LABELS => 1, 2, 840, 113549, 1, 9, 16, 2, 9;
310 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_CONTENT_REFERENCE => 1, 2, 840, 113549, 1, 9, 16, 2, 10;
311 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_ENCRYPTION_KEY_PREFERENCE => 1, 2, 840, 113549, 1, 9, 16, 2, 11;
312 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_SIGNING_CERTIFICATE => 1, 2, 840, 113549, 1, 9, 16, 2, 12;
313 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_FIRMWARE_PACKAGE_ID => 1, 2, 840, 113549, 1, 9, 16, 2, 35;
314 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_TARGET_HARDWARE_IDS => 1, 2, 840, 113549, 1, 9, 16, 2, 36;
315 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_DECRYPT_KEY_ID => 1, 2, 840, 113549, 1, 9, 16, 2, 37;
316 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_CRYPTO_ALGORITHMS => 1, 2, 840, 113549, 1, 9, 16, 2, 38;
317 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_WRAPPED_FIRMWARE_KEY => 1, 2, 840, 113549, 1, 9, 16, 2, 39;
318 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_COMMUNITY_IDENTIFIERS => 1, 2, 840, 113549, 1, 9, 16, 2, 40;
319 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_FIRMWARE_PACKAGE_INFO => 1, 2, 840, 113549, 1, 9, 16, 2, 42;
320 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_COMPRESS_ALGORITHMS => 1, 2, 840, 113549, 1, 9, 16, 2, 43;
321 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_SIGNING_CERTIFICATE_V2 => 1, 2, 840, 113549, 1, 9, 16, 2, 47;
322 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_AA_ASYMMETRIC_DECRYPT_KEY => 1, 2, 840, 113549, 1, 9, 16, 2, 54;
323
324 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_ALGORITHM => 1, 2, 840, 113549, 1, 9, 16, 3;
325 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_ALGORITHM_ESDH => 1, 2, 840, 113549, 1, 9, 16, 3, 5;
326 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_ALGORITHM_CMS3DESWRAP => 1, 2, 840, 113549, 1, 9, 16, 3, 6;
327 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_ALGORITHM_CMS3RC2WRAP => 1, 2, 840, 113549, 1, 9, 16, 3, 7;
328 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_ALGORITHM_SSDH => 1, 2, 840, 113549, 1, 9, 16, 3, 10;
329
330 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CAPABILITY => 1, 2, 840, 113549, 1, 9, 16, 3, 11;
331 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_CAPABILITY_PREFER_BINARY_INSIDE => 1, 2, 840, 113549, 1, 9, 16, 3, 11, 1;
332
333 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD => 1, 2, 840, 113549, 1, 9, 16, 8;
334 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_USE_KEK => 1, 2, 840, 113549, 1, 9, 16, 8, 1;
335 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_GL_DELETE => 1, 2, 840, 113549, 1, 9, 16, 8, 2;
336 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_ADD_MEMBER => 1, 2, 840, 113549, 1, 9, 16, 8, 3;
337 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_DELETE_MEMBER => 1, 2, 840, 113549, 1, 9, 16, 8, 4;
338 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_REKEY => 1, 2, 840, 113549, 1, 9, 16, 8, 5;
339 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_ADD_OWNER => 1, 2, 840, 113549, 1, 9, 16, 8, 6;
340 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_REMOVE_OWNER => 1, 2, 840, 113549, 1, 9, 16, 8, 7;
341 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_GLKEY_COMPROMISE => 1, 2, 840, 113549, 1, 9, 16, 8, 8;
342 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_GLKEY_REFRESH => 1, 2, 840, 113549, 1, 9, 16, 8, 9;
343 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_QUERY_REQUEST => 1, 2, 840, 113549, 1, 9, 16, 8, 11;
344 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_QUERY_RESPONSE => 1, 2, 840, 113549, 1, 9, 16, 8, 12;
345 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_PROVIDE_CERT => 1, 2, 840, 113549, 1, 9, 16, 8, 13;
346 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_MANAGE_CERT => 1, 2, 840, 113549, 1, 9, 16, 8, 14;
347 ISO_MEMBER_BODY_US_RSADSI_PKCS9_SMIME_SKD_GLKEY => 1, 2, 840, 113549, 1, 9, 16, 8, 15;
348
349 ISO_IDENTIFIED_ORGANISATION => 1, 3;
350 ISO_IDENTIFIED_ORGANISATION_DOD => 1, 3, 6;
351 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET => 1, 3, 6, 1;
352
353 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_DIRECTORY => 1, 3, 6, 1, 1;
354 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_DIRECTORY_X509 => 1, 3, 6, 1, 1, 15;
355
356 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT => 1, 3, 6, 1, 2;
357 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB => 1, 3, 6, 1, 2, 1;
358 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_SYSTEM => 1, 3, 6, 1, 2, 1, 1;
359 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_INTERFACES => 1, 3, 6, 1, 2, 1, 2;
360 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_AT => 1, 3, 6, 1, 2, 1, 3;
361 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_IP => 1, 3, 6, 1, 2, 1, 4;
362 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_ICMP => 1, 3, 6, 1, 2, 1, 5;
363 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_TCP => 1, 3, 6, 1, 2, 1, 6;
364 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_UDP => 1, 3, 6, 1, 2, 1, 7;
365 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_EGP => 1, 3, 6, 1, 2, 1, 8;
366 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_CMOT => 1, 3, 6, 1, 2, 1, 9;
367 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_TRANSMISSION => 1, 3, 6, 1, 2, 1, 10;
368 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_MGMT_MIB_SNMP => 1, 3, 6, 1, 2, 1, 11;
369
370 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_EXPERIMENTAL => 1, 3, 6, 1, 3;
371 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE => 1, 3, 6, 1, 4;
372 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES => 1, 3, 6, 1, 3, 1;
373 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_WALL => 1, 3, 6, 1, 3, 1, 1466;
374 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_WALL_DYN_EXT => 1, 3, 6, 1, 3, 1, 1466, 101, 119;
375 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_WALL_ATTR => 1, 3, 6, 1, 3, 1, 1466, 101, 120;
376 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_WALL_MATCH => 1, 3, 6, 1, 3, 1, 1466, 109, 114;
377 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_WALL_SYNTAX => 1, 3, 6, 1, 3, 1, 1466, 115, 121, 1;
378 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_OPEN_LDAP_LDAP => 1, 3, 6, 1, 3, 1, 4203, 1;
379 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_OPEN_LDAP_LDAP_ATTRIBUTES => 1, 3, 6, 1, 3, 1, 4203, 1, 3;
380 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_OPEN_LDAP_LDAP_CONTROLS => 1, 3, 6, 1, 3, 1, 4203, 1, 10;
381
382 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY => 1, 3, 6, 1, 5;
383 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_KERBEROS_V5 => 1, 3, 6, 1, 5, 2;
384
385 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS => 1, 3, 6, 1, 5, 5;
386 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX => 1, 3, 6, 1, 5, 5, 7;
387
388 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_PE => 1, 3, 6, 1, 5, 5, 7, 1;
389 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_PE_AUDIT_IDENTIFY => 1, 3, 6, 1, 5, 5, 7, 1, 4;
390 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_PE_AA_CONTROLS => 1, 3, 6, 1, 5, 5, 7, 1, 6;
391 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_PE_IP_ADDR_BLOCKS => 1, 3, 6, 1, 5, 5, 7, 1, 7;
392 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_PE_AS_SYS_IDS => 1, 3, 6, 1, 5, 5, 7, 1, 8;
393 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_PE_AC_PROXYING => 1, 3, 6, 1, 5, 5, 7, 1, 10;
394
395 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_QT => 1, 3, 6, 1, 5, 5, 7, 2;
396 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_QT_CPS => 1, 3, 6, 1, 5, 5, 7, 2, 1;
397 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_QT_UNOTICE => 1, 3, 6, 1, 5, 5, 7, 2, 2;
398
399 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_KP => 1, 3, 6, 1, 5, 5, 7, 3;
400 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_KP_SERVER_AUTH => 1, 3, 6, 1, 5, 5, 7, 3, 1;
401 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_KP_CLIENT_AUTH => 1, 3, 6, 1, 5, 5, 7, 3, 2;
402 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_KP_CODE_SIGNING => 1, 3, 6, 1, 5, 5, 7, 3, 3;
403 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_KP_EMAIL_PROTECTION => 1, 3, 6, 1, 5, 5, 7, 3, 4;
404 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_KP_TIME_STAMPING => 1, 3, 6, 1, 5, 5, 7, 3, 8;
405 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_KP_OCSP_SIGNING => 1, 3, 6, 1, 5, 5, 7, 3, 9;
406
407 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_CMC => 1, 3, 6, 1, 5, 5, 7, 7;
408 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_CMC_GLARR => 1, 3, 6, 1, 5, 5, 7, 7, 99;
409 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_CMC_GLARR_SKD_ALG_REQUEST => 1, 3, 6, 1, 5, 5, 7, 7, 99, 1;
410 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_CMC_GLARR_SKD_ALG_RESPONSE => 1, 3, 6, 1, 5, 5, 7, 7, 99, 2;
411
412 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_ON => 1, 3, 6, 1, 5, 5, 7, 8;
413 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_ON_HARDWARE_MODULE_NAME => 1, 3, 6, 1, 5, 5, 7, 8, 4;
414
415 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_ACA => 1, 3, 6, 1, 5, 5, 7, 10;
416 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_ACA_AUTHENTICATION_INFO => 1, 3, 6, 1, 5, 5, 7, 10, 1;
417 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_ACA_ACCESS_IDENTITY => 1, 3, 6, 1, 5, 5, 7, 10, 2;
418 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_ACA_CHARGING_IDENTITY => 1, 3, 6, 1, 5, 5, 7, 10, 3;
419 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_ACA_GROUP => 1, 3, 6, 1, 5, 5, 7, 10, 4;
420 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_ACA_ENC_ATTRIBUTES => 1, 3, 6, 1, 5, 5, 7, 10, 6;
421
422 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_CET => 1, 3, 6, 1, 5, 5, 7, 15;
423 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_CET_SKD_FAIL_INFO => 1, 3, 6, 1, 5, 5, 7, 15, 1;
424
425 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_AD => 1, 3, 6, 1, 5, 5, 7, 48;
426 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_AD_OCSP => 1, 3, 6, 1, 5, 5, 7, 48, 1;
427 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_AD_CA_ISSUERS => 1, 3, 6, 1, 5, 5, 7, 48, 2;
428 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_AD_TIME_STAMPING => 1, 3, 6, 1, 5, 5, 7, 48, 3;
429 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_PKIX_AD_CA_REPOSITORY => 1, 3, 6, 1, 5, 5, 7, 48, 5;
430
431 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SECURITY_MECHANISMS_HMAC_SHA1 => 1, 3, 6, 1, 5, 5, 8, 1, 2;
432
433 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SNMP_V2 => 1, 3, 6, 1, 6;
434 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SNMP_V2_DOMAINS => 1, 3, 6, 1, 6, 1;
435 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SNMP_V2_PROXIES => 1, 3, 6, 1, 6, 2;
436 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_SNMP_V2_MODULES => 1, 3, 6, 1, 6, 3;
437
438 ISO_IDENTIFIED_ORGANISATION_OIW_SECSIG_ALGORITHM_SHA1 => 1, 3, 14, 3, 2, 26;
439
440 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_INDIRECT_DATA_OBJID => 1, 3, 6, 1, 4, 1, 311, 2, 1, 4;
441 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_PE_IMAGE_DATA_OBJID => 1, 3, 6, 1, 4, 1, 311, 2, 1, 15;
442 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_SP_OPUS_INFO_OBJID => 1, 3, 6, 1, 4, 1, 311, 2, 1, 12;
443 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_STATEMENT_TYPE_OBJID => 1, 3, 6, 1, 4, 1, 311, 2, 1, 11;
444 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_CAB_DATA_OBJID => 1, 3, 6, 1, 4, 1, 311, 2, 1, 25;
445 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_SIPINFO_OBJID => 1, 3, 6, 1, 4, 1, 311, 2, 1, 30;
446 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_PE_IMAGE_PAGE_HASHES_V1 => 1, 3, 6, 1, 4, 1, 311, 2, 3, 1;
447 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_PE_IMAGE_PAGE_HASHES_V2 => 1, 3, 6, 1, 4, 1, 311, 2, 3, 2;
448 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_NESTED_SIGNATURE_OBJID => 1, 3, 6, 1, 4, 1, 311, 2, 4, 1;
449 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_TIME_STAMP_REQUEST_OBJID => 1, 3, 6, 1, 4, 1, 311, 3, 2, 1;
450 ISO_IDENTIFIED_ORGANISATION_DOD_INTERNET_PRIVATE_ENTERPRISES_MICROSOFT_SPC_RFC3161_OBJID => 1, 3, 6, 1, 4, 1, 311, 3, 3, 1;
451}
452
453oids! {
455 JOINT_ISO_ITU_T => 2;
456
457 JOINT_ISO_ITU_T_MEMBER_BODY => 2, 2;
458 JOINT_ISO_ITU_T_MEMBER_BODY_US => 2, 2, 840;
459 JOINT_ISO_ITU_T_MEMBER_BODY_US_X9CM => 2, 2, 840, 100400;
460 JOINT_ISO_ITU_T_MEMBER_BODY_US_X9CM_HOLD_INSTRUCTION => 2, 2, 840, 100400, 2;
461 JOINT_ISO_ITU_T_MEMBER_BODY_US_X9CM_HOLD_INSTRUCTION_NONE => 2, 2, 840, 100400, 2, 1;
462 JOINT_ISO_ITU_T_MEMBER_BODY_US_X9CM_HOLD_INSTRUCTION_CALL_ISSUER => 2, 2, 840, 100400, 2, 2;
463 JOINT_ISO_ITU_T_MEMBER_BODY_US_X9CM_HOLD_INSTRUCTION_REJECT => 2, 2, 840, 100400, 2, 3;
464
465 JOINT_ISO_ITU_T_DS => 2, 5;
466 JOINT_ISO_ITU_T_DS_MODULE => 2, 5, 1;
467
468 JOINT_ISO_ITU_T_DS_MODULE_USEFUL_DEFINITIONS => 2, 5, 1, 0, 8;
469 JOINT_ISO_ITU_T_DS_MODULE_INFORMATION_FRAMEWORK => 2, 5, 1, 1, 8;
470 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_ABSTRACT_SERVICE => 2, 5, 1, 2, 8;
471 JOINT_ISO_ITU_T_DS_MODULE_DISTRIBUTED_OPERATIONS => 2, 5, 1, 3, 8;
472 JOINT_ISO_ITU_T_DS_MODULE_PROTOCOL_OBJECT_IDENTIFIERS => 2, 5, 1, 4, 8;
473 JOINT_ISO_ITU_T_DS_MODULE_SELECTED_ATTRIBUTE_TYPES => 2, 5, 1, 5, 8;
474 JOINT_ISO_ITU_T_DS_MODULE_SELECTED_OBJECT_CLASSES => 2, 5, 1, 6, 8;
475 JOINT_ISO_ITU_T_DS_MODULE_AUTHENTICATION_FRAMEWORK => 2, 5, 1, 7, 8;
476 JOINT_ISO_ITU_T_DS_MODULE_ALGORITHM_OBJECT_IDENTIFIERS => 2, 5, 1, 8, 8;
477 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_OBJECT_IDENTIFIERS => 2, 5, 1, 9, 8;
478 JOINT_ISO_ITU_T_DS_MODULE_UPPER_BOUNDS => 2, 5, 1, 10, 8;
479 JOINT_ISO_ITU_T_DS_MODULE_DAP => 2, 5, 1, 11, 8;
480 JOINT_ISO_ITU_T_DS_MODULE_DSP => 2, 5, 1, 12, 8;
481 JOINT_ISO_ITU_T_DS_MODULE_DISTRIBUTED_DIRECTORY_OIDS => 2, 5, 1, 13, 8;
482 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_SHADOW_OIDS => 2, 5, 1, 14, 8;
483 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_SHADOW_ABSTRACT_SERVICE => 2, 5, 1, 15, 8;
484 JOINT_ISO_ITU_T_DS_MODULE_DISP => 2, 5, 1, 16, 7;
485 JOINT_ISO_ITU_T_DS_MODULE_DOP => 2, 5, 1, 17, 7;
486 JOINT_ISO_ITU_T_DS_MODULE_OP_BINDING_MANAGEMENT => 2, 5, 1, 18, 8;
487 JOINT_ISO_ITU_T_DS_MODULE_OP_BINDING_OIDS => 2, 5, 1, 19, 8;
488 JOINT_ISO_ITU_T_DS_MODULE_HIERARCHICAL_OPERATIONAL_BINDINGS => 2, 5, 1, 20, 8;
489 JOINT_ISO_ITU_T_DS_MODULE_DSA_OPERATIONAL_ATTRIBUTE_TYPES => 2, 5, 1, 22, 8;
490 JOINT_ISO_ITU_T_DS_MODULE_SCHEMA_ADMINISTRATION => 2, 5, 1, 23, 8;
491 JOINT_ISO_ITU_T_DS_MODULE_BASIC_ACCESS_CONTROL => 2, 5, 1, 24, 8;
492 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_OPERATIONAL_BINDING_TYPES => 2, 5, 1, 25, 8;
493 JOINT_ISO_ITU_T_DS_MODULE_CERTIFICATE_EXTENSIONS => 2, 5, 1, 26, 8;
494 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_MANAGEMENT => 2, 5, 1, 27, 8;
495 JOINT_ISO_ITU_T_DS_MODULE_ENHANCED_SECURITY => 2, 5, 1, 28, 8;
496 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_SECURITY_EXCHANGES => 2, 5, 1, 29, 8;
497 JOINT_ISO_ITU_T_DS_MODULE_IDM_PROTOCOL_SPECIFICATION => 2, 5, 1, 30, 8;
498 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_IDM_PROTOCOLS => 2, 5, 1, 31, 8;
499 JOINT_ISO_ITU_T_DS_MODULE_ATTRIBUTE_CERTIFICATE_DEFINITIONS => 2, 5, 1, 32, 8;
500 JOINT_ISO_ITU_T_DS_MODULE_SERVICE_ADMINISTRATION => 2, 5, 1, 33, 8;
501 JOINT_ISO_ITU_T_DS_MODULE_LDAP_ATTRIBUTES => 2, 5, 1, 34, 8;
502 JOINT_ISO_ITU_T_DS_MODULE_COMMON_PROTOCOL_SPECIFICATION => 2, 5, 1, 35, 8;
503 JOINT_ISO_ITU_T_DS_MODULE_OSI_PROTOCOL_SPECIFICATION => 2, 5, 1, 36, 8;
504 JOINT_ISO_ITU_T_DS_MODULE_DIRECTORY_OSI_PROTOCOLS => 2, 5, 1, 37, 8;
505 JOINT_ISO_ITU_T_DS_MODULE_LDAP_SYSTEM_SCHEMA => 2, 5, 1, 38, 8;
506 JOINT_ISO_ITU_T_DS_MODULE_PASSWORD_POLICY => 2, 5, 1, 39, 8;
507 JOINT_ISO_ITU_T_DS_MODULE_PKI_PMI_EXTERNAL_DATA_TYPES => 2, 5, 1, 40, 8;
508 JOINT_ISO_ITU_T_DS_MODULE_EXTENSION_ATTRIBUTES => 2, 5, 1, 41, 8;
509 JOINT_ISO_ITU_T_DS_MODULE_PKI_PMI_WRAPPER => 2, 5, 1, 42, 8;
510 JOINT_ISO_ITU_T_DS_MODULE_AVL_MANAGEMENT => 2, 5, 1, 43, 8;
511 JOINT_ISO_ITU_T_DS_MODULE_TRUST_BROKER_PROTOCOL => 2, 5, 1, 44, 8;
512
513 JOINT_ISO_ITU_T_DS_SERVICE_ELEMENT => 2, 5, 2;
514 JOINT_ISO_ITU_T_DS_APPLICATION_CONTEXT => 2, 5, 3;
515
516 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE => 2, 5, 4;
517 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_COMMON_NAME => 2, 5, 4, 3;
518 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_SURNAME => 2, 5, 4, 4;
519 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_SERIAL_NUMBER => 2, 5, 4, 5;
520 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_COUNTRY_NAME => 2, 5, 4, 6;
521 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_LOCALITY_NAME => 2, 5, 4, 7;
522 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_STATE_OR_PROVINCE_NAME => 2, 5, 4, 8;
523 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_ORGANISATION_NAME => 2, 5, 4, 10;
524 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_ORGANISATIONAL_UNIT_NAME => 2, 5, 4, 11;
525 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_TITLE => 2, 5, 4, 12;
526 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_NAME => 2, 5, 4, 41;
527 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_GIVEN_NAME => 2, 5, 4, 42;
528 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_INITIALS => 2, 5, 4, 43;
529 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_GENERATION_QUALIFIER => 2, 5, 4, 44;
530 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_DN_QUALIFIER => 2, 5, 4, 46;
531 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_CLEARANCE => 2, 5, 4, 55;
532 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_PSEUDONYM => 2, 5, 4, 65;
533 JOINT_ISO_ITU_T_DS_ATTRIBUTE_TYPE_ROLE => 2, 5, 4, 72;
534
535 JOINT_ISO_ITU_T_DS_SYNTAX_VENDOR => 2, 5, 5;
536 JOINT_ISO_ITU_T_DS_OBJECT_CLASS => 2, 5, 6;
537 JOINT_ISO_ITU_T_DS_ATTRIBUTE_SET => 2, 5, 7;
538 JOINT_ISO_ITU_T_DS_ALGORITHM => 2, 5, 8;
539 JOINT_ISO_ITU_T_DS_ABSTRACT_SYNTAX => 2, 5, 9;
540 JOINT_ISO_ITU_T_DS_OBJECT => 2, 5, 10;
541 JOINT_ISO_ITU_T_DS_PORT => 2, 5, 11;
542 JOINT_ISO_ITU_T_DS_DSA_OPERATIONAL_ATTRIBUTE => 2, 5, 12;
543 JOINT_ISO_ITU_T_DS_MATCHING_RULE => 2, 5, 13;
544 JOINT_ISO_ITU_T_DS_KNOWLEDGE_MATCHING_RULE => 2, 5, 14;
545 JOINT_ISO_ITU_T_DS_NAME_FORM => 2, 5, 15;
546 JOINT_ISO_ITU_T_DS_GROUP => 2, 5, 16;
547 JOINT_ISO_ITU_T_DS_SUBENTRY => 2, 5, 17;
548 JOINT_ISO_ITU_T_DS_OPERATIONAL_ATTRIBUTE_TYPE => 2, 5, 18;
549 JOINT_ISO_ITU_T_DS_OPERATIONAL_BINDING => 2, 5, 19;
550 JOINT_ISO_ITU_T_DS_SCHEMA_OBJECT_CLASS => 2, 5, 20;
551 JOINT_ISO_ITU_T_DS_SCHEMA_OPERATIONAL_ATTRIBUTE => 2, 5, 21;
552 JOINT_ISO_ITU_T_DS_ADMINISTRATIVE_ROLES => 2, 5, 23;
553 JOINT_ISO_ITU_T_DS_ACCESS_CONTROL_ATTRIBUTE => 2, 5, 24;
554 JOINT_ISO_ITU_T_DS_ROS_OBJECT => 2, 5, 25;
555 JOINT_ISO_ITU_T_DS_CONTRACT => 2, 5, 26;
556 JOINT_ISO_ITU_T_DS_PACKAGE => 2, 5, 27;
557 JOINT_ISO_ITU_T_DS_ACCESS_CONTROL_SCHEMES => 2, 5, 28;
558
559 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION => 2, 5, 29;
560 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_AUTHORITY_INFO_ACCESS => 2, 5, 29, 1;
561 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_SUBJECT_DIRECTORY_ATTRIBUTES => 2, 5, 29, 9;
562 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_SUBJECT_INFO_ACCESS => 2, 5, 29, 11;
563 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_SUBJECT_KEY_IDENTIFIER => 2, 5, 29, 14;
564 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_KEY_USAGE => 2, 5, 29, 15;
565 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_PRICATE_KEY_USAGE_PERIOD => 2, 5, 29, 16;
566 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_SUBJECT_ALT_NAME => 2, 5, 29, 17;
567 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_ISSUER_ALT_NAME => 2, 5, 29, 18;
568 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_BASIC_CONSTRAINTS => 2, 5, 29, 19;
569 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_CRL_NUMBER => 2, 5, 29, 20;
570 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_CRL_REASONS => 2, 5, 29, 21;
571 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_HOLD_INSTRUCTION_CODE => 2, 5, 29, 23;
572 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_INVALIDITY_DATE => 2, 5, 29, 24;
573 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_DELTA_CRL_INDICATOR => 2, 5, 29, 27;
574 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_ISSUING_DISTRIBUTION_POINT => 2, 5, 29, 28;
575 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_CERTIFICATE_ISSUER => 2, 5, 29, 29;
576 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_AUTHORITY_CRL_NAME_CONSTRAINTS => 2, 5, 29, 30;
577 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_AUTHORITY_CRL_DISTRIBUTION_POINTS => 2, 5, 29, 31;
578 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_CERTIFICATE_POLICIES => 2, 5, 29, 32;
579 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_CERTIFICATE_POLICIES_ANY_POLICY => 2, 5, 29, 32, 0;
580 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_POLICY_MAPPINGS => 2, 5, 29, 33;
581 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_AUTHORITY_KEY_IDENTIFIER => 2, 5, 29, 35;
582 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_AUTHORITY_EXT_KEY_USAGE => 2, 5, 29, 37;
583 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_AUTHORITY_EXT_KEY_USAGE_ANY_EXTENDED_KEY_USAGE => 2, 5, 29, 37, 0;
584 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_FRESHEST_CRL => 2, 5, 29, 46;
585 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_INHIBIT_ANY_POLICY => 2, 5, 29, 54;
586 JOINT_ISO_ITU_T_DS_CERTIFICATE_EXTENSION_TARGET_INFORMATION => 2, 5, 29, 55;
587
588 JOINT_ISO_ITU_T_DS_MANAGEMENT_OBJECT => 2, 5, 30;
589 JOINT_ISO_ITU_T_DS_ATTRIBUTE_VALUE_CONTEXT => 2, 5, 31;
590 JOINT_ISO_ITU_T_DS_SECURITY_EXCHANGE => 2, 5, 32;
591 JOINT_ISO_ITU_T_DS_IDM_PROTOCOL => 2, 5, 33;
592 JOINT_ISO_ITU_T_DS_PROBLEM => 2, 5, 34;
593 JOINT_ISO_ITU_T_DS_NOTIFICATION => 2, 5, 35;
594 JOINT_ISO_ITU_T_DS_MATCHING_RESTRICTION => 2, 5, 36;
595 JOINT_ISO_ITU_T_DS_CONTROL_ATTRIBUTE_TYPE => 2, 5, 37;
596 JOINT_ISO_ITU_T_DS_KEY_PURPOSES => 2, 5, 38;
597 JOINT_ISO_ITU_T_DS_PASSWORD_QUALITY => 2, 5, 39;
598 JOINT_ISO_ITU_T_DS_ATTRIBUTE_SYNTAX => 2, 5, 40;
599 JOINT_ISO_ITU_T_DS_AV_RESTRICTION => 2, 5, 41;
600 JOINT_ISO_ITU_T_DS_CMS_CONTENT_TYPE => 2, 5, 42;
601
602 JOINT_ISO_ITU_T_COUNTRY => 2, 16;
603 JOINT_ISO_ITU_T_COUNTRY_US => 2, 16, 840;
604 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION => 2, 16, 840, 1;
605 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV => 2, 16, 840, 1, 101;
606 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR => 2, 16, 840, 1, 101, 3;
607 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS => 2, 16, 840, 1, 101, 3, 4;
608 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_AES => 2, 16, 840, 1, 101, 3, 4, 1;
609 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_AES128_CBC => 2, 16, 840, 1, 101, 3, 4, 1, 2;
610 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_AES128_WRAP => 2, 16, 840, 1, 101, 3, 4, 1, 5;
611 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_AES192_CBC => 2, 16, 840, 1, 101, 3, 4, 1, 22;
612 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_AES192_WRAP => 2, 16, 840, 1, 101, 3, 4, 1, 25;
613 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_AES256_CBC => 2, 16, 840, 1, 101, 3, 4, 1, 42;
614 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_AES256_WRAP => 2, 16, 840, 1, 101, 3, 4, 1, 45;
615
616 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_HASH_SHA224 => 2, 16, 840, 1, 101, 3, 4, 2, 4;
617 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_HASH_SHA256 => 2, 16, 840, 1, 101, 3, 4, 2, 1;
618 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_HASH_SHA384 => 2, 16, 840, 1, 101, 3, 4, 2, 2;
619 JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_HASH_SHA512 => 2, 16, 840, 1, 101, 3, 4, 2, 3;
620
621 JOINT_ISO_ITU_T_REGISTRATION_PROCEDURES_MODULE_DIRECTORY_DEFS => 2, 17, 1, 2;
622}
623
624#[cfg(test)]
625mod test {
626 use super::ObjectIdentifier;
627 use super::Oid;
628
629 #[test]
630 fn transmute() {
631 let mut oid = ObjectIdentifier::new_unchecked(alloc::vec![1, 3, 6].into());
632
633 assert_eq!([1u32, 3, 6][..], *oid);
634 oid.reverse();
635 assert_eq!([6u32, 3, 1][..], *oid);
636 }
637
638 #[test]
639 fn partial_eq() {
640 let oid =
641 ObjectIdentifier::new_unchecked(alloc::vec![2, 16, 840, 1, 101, 3, 4, 2, 3].into());
642 assert_eq!(
643 Oid::JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_HASH_SHA512,
644 oid
645 );
646 assert_eq!(
647 Oid::JOINT_ISO_ITU_T_COUNTRY_US_ORGANIZATION_GOV_CSOR_NIST_ALGORITHMS_HASH_SHA512,
648 oid
649 );
650 assert_eq!(
651 ObjectIdentifier::new(vec![1, 2]).unwrap(),
652 Oid::ISO_MEMBER_BODY
653 );
654 assert_eq!(
655 Oid::ISO_MEMBER_BODY,
656 ObjectIdentifier::new(vec![1, 2]).unwrap()
657 );
658 }
659}