1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
//! Well-known algorithm and attribute OID component arrays.
//!
//! Each constant is a `&[u32]` slice of OID arc values — exactly what
//! [`ObjectIdentifier::components`](synta::ObjectIdentifier::components)
//! returns — so callers can match without converting to a dotted-decimal
//! string:
//!
//! ```rust,ignore
//! use synta_certificate::oids;
//!
//! let name = match oid.components() {
//! oids::ML_DSA_44 => "ML-DSA-44",
//! oids::ML_DSA_65 => "ML-DSA-65",
//! oids::ML_DSA_87 => "ML-DSA-87",
//! c if c.starts_with(oids::RSA) => "RSA",
//! _ => "Other",
//! };
//! ```
//!
//! All constants are generated from the ASN.1 schema in `asn1/X509-Certificate.asn1`
//! and re-exported here under ergonomic short names.
//!
//! Distinguished Name attribute OIDs live in [`attr`].
//!
//! ## Algorithm OID arcs
//!
//! | Constant | OID (dotted) | Standard |
//! |---|---|---|
//! | [`ML_DSA_44`] | 2.16.840.1.101.3.4.3.17 | FIPS 204 |
//! | [`ML_DSA_65`] | 2.16.840.1.101.3.4.3.18 | FIPS 204 |
//! | [`ML_DSA_87`] | 2.16.840.1.101.3.4.3.19 | FIPS 204 |
//! | [`ML_KEM_512`] | 2.16.840.1.101.3.4.4.1 | FIPS 203 |
//! | [`ML_KEM_768`] | 2.16.840.1.101.3.4.4.2 | FIPS 203 |
//! | [`ML_KEM_1024`] | 2.16.840.1.101.3.4.4.3 | FIPS 203 |
//! | [`ED25519`] | 1.3.101.112 | RFC 8410 |
//! | [`ED448`] | 1.3.101.113 | RFC 8410 |
//! | [`RSA_ENCRYPTION`] | 1.2.840.113549.1.1.1 | PKCS #1 |
//! | [`MD5_WITH_RSA`] | 1.2.840.113549.1.1.4 | PKCS #1 |
//! | [`SHA1_WITH_RSA`] | 1.2.840.113549.1.1.5 | PKCS #1 |
//! | [`SHA256_WITH_RSA`] | 1.2.840.113549.1.1.11 | PKCS #1 / RFC 4055 |
//! | [`SHA384_WITH_RSA`] | 1.2.840.113549.1.1.12 | PKCS #1 / RFC 4055 |
//! | [`SHA512_WITH_RSA`] | 1.2.840.113549.1.1.13 | PKCS #1 / RFC 4055 |
//! | [`EC_PUBLIC_KEY`] | 1.2.840.10045.2.1 | SEC 1 / RFC 5480 |
//! | [`ECDSA_WITH_SHA1`] | 1.2.840.10045.4.1 | ANSI X9.62 |
//! | [`ECDSA_WITH_SHA256`] | 1.2.840.10045.4.3.2 | RFC 5758 |
//! | [`ECDSA_WITH_SHA384`] | 1.2.840.10045.4.3.3 | RFC 5758 |
//! | [`ECDSA_WITH_SHA512`] | 1.2.840.10045.4.3.4 | RFC 5758 |
//! | [`RSA`] | 1.2.840.113549.1.1 (prefix) | PKCS #1 |
//! | [`ECDSA_SIG`] | 1.2.840.10045.4 (prefix) | ANSI X9.62 |
//! | [`ECDSA_KEY`] | 1.2.840.10045.2 (prefix) | ANSI X9.62 |
//! | [`DSA`] | 1.2.840.10040.4 (prefix) | FIPS 186 |
// ── ML-DSA (FIPS 204) ─────────────────────────────────────────────────────────
pub use crateID_ML_DSA_44 as ML_DSA_44;
pub use crateID_ML_DSA_65 as ML_DSA_65;
pub use crateID_ML_DSA_87 as ML_DSA_87;
// ── ML-KEM (FIPS 203) ─────────────────────────────────────────────────────────
pub use crateID_ML_KEM_1024 as ML_KEM_1024;
pub use crateID_ML_KEM_512 as ML_KEM_512;
pub use crateID_ML_KEM_768 as ML_KEM_768;
// ── EdDSA (RFC 8410) ──────────────────────────────────────────────────────────
pub use crateID_ED25519 as ED25519;
pub use crateID_ED448 as ED448;
// ── RSA (PKCS #1) — specific algorithm OIDs ──────────────────────────────────
pub use crateMD5_WITH_RSA;
pub use crateRSA_ENCRYPTION;
pub use crateSHA1_WITH_RSA;
pub use crateSHA256_WITH_RSA;
pub use crateSHA384_WITH_RSA;
pub use crateSHA512_WITH_RSA;
// ── ECDSA (ANSI X9.62 / RFC 5758) — specific algorithm OIDs ─────────────────
pub use crateECDSA_WITH_SHA1;
pub use crateECDSA_WITH_SHA256;
pub use crateECDSA_WITH_SHA384;
pub use crateECDSA_WITH_SHA512;
pub use crateEC_PUBLIC_KEY;
// ── EC named curves (SEC 2 / RFC 5480) ───────────────────────────────────────
/// EC curve `prime256v1` / NIST P-256 (1.2.840.10045.3.1.7)
pub use cratePRIME256V1 as EC_CURVE_P256;
/// EC curve `secp384r1` / NIST P-384 (1.3.132.0.34)
pub use crateSECP384R1 as EC_CURVE_P384;
/// EC curve `secp521r1` / NIST P-521 (1.3.132.0.35)
pub use crateSECP521R1 as EC_CURVE_P521;
/// EC curve `secp256k1` / Bitcoin curve (1.3.132.0.10)
pub use crateSECP256K1 as EC_CURVE_SECP256K1;
// ── X.509v3 extension OIDs (RFC 5280 / 2.5.29.*) ─────────────────────────────
/// Authority Key Identifier (2.5.29.35)
pub use crateID_CE_AUTHORITY_KEY_IDENTIFIER as AUTHORITY_KEY_IDENTIFIER;
/// Basic Constraints (2.5.29.19)
pub use crateID_CE_BASIC_CONSTRAINTS as BASIC_CONSTRAINTS;
/// Certificate Issuer (2.5.29.26)
pub use crateID_CE_CERTIFICATE_ISSUER as CERTIFICATE_ISSUER;
/// Certificate Policies (2.5.29.32)
pub use crateID_CE_CERTIFICATE_POLICIES as CERTIFICATE_POLICIES;
/// CRL Distribution Points (2.5.29.31)
pub use crateID_CE_C_RLDISTRIBUTION_POINTS as CRL_DISTRIBUTION_POINTS;
/// CRL Number (2.5.29.20)
pub use crateID_CE_C_RLNUMBER as CRL_NUMBER;
/// CRL Reason Code (2.5.29.21)
pub use crateID_CE_C_RLREASON as CRL_REASON;
/// Delta CRL Indicator (2.5.29.24)
pub use crateID_CE_DELTA_CRLINDICATOR as DELTA_CRL_INDICATOR;
/// Extended Key Usage (2.5.29.37)
pub use crateID_CE_EXT_KEY_USAGE as EXTENDED_KEY_USAGE;
/// Invalidity Date (2.5.29.23)
pub use crateID_CE_INVALIDITY_DATE as INVALIDITY_DATE;
/// Issuer Alternative Name (2.5.29.18)
pub use crateID_CE_ISSUER_ALT_NAME as ISSUER_ALT_NAME;
/// Issuing Distribution Point (2.5.29.25)
pub use crateID_CE_ISSUING_DISTRIBUTION_POINT as ISSUING_DISTRIBUTION_POINT;
/// Key Usage (2.5.29.15)
pub use crateID_CE_KEY_USAGE as KEY_USAGE;
/// Name Constraints (2.5.29.30)
pub use crateID_CE_NAME_CONSTRAINTS as NAME_CONSTRAINTS;
/// Private Key Usage Period (2.5.29.16)
pub use crateID_CE_PRIVATE_KEY_USAGE_PERIOD as PRIVATE_KEY_USAGE_PERIOD;
/// Subject Alternative Name (2.5.29.17)
pub use crateID_CE_SUBJECT_ALT_NAME as SUBJECT_ALT_NAME;
/// Subject Directory Attributes (2.5.29.9)
pub use crateID_CE_SUBJECT_DIRECTORY_ATTRIBUTES as SUBJECT_DIRECTORY_ATTRIBUTES;
/// Subject Key Identifier (2.5.29.14)
pub use crateID_CE_SUBJECT_KEY_IDENTIFIER as SUBJECT_KEY_IDENTIFIER;
/// Embedded SCTs — Certificate Transparency (1.3.6.1.4.1.11129.2.4.2)
pub use crateID_CT_SCTS as CT_PRECERT_SCTS;
/// Authority Information Access (1.3.6.1.5.5.7.1.1)
pub use crateID_PE_AUTHORITY_INFO_ACCESS as AUTHORITY_INFO_ACCESS;
// ── id-ad accessMethod OIDs (RFC 5280 §4.2.2.1, 1.3.6.1.5.5.7.48.*) ─────────
/// CA issuers (1.3.6.1.5.5.7.48.2)
pub use crateID_AD_CA_ISSUERS as AD_CA_ISSUERS;
/// OCSP responder (1.3.6.1.5.5.7.48.1)
pub use crateID_AD_OCSP as AD_OCSP;
// ── OCSP OID arcs (RFC 6960 §4.2.1) ─────────────────────────────────────────
/// OCSP arc root — `id-pkix-ocsp` (1.3.6.1.5.5.7.48.1)
pub use crateID_PKIX_OCSP;
/// `BasicOCSPResponse` `responseType` OID — `id-pkix-ocsp-basic`
/// (1.3.6.1.5.5.7.48.1.1)
pub use crateID_PKIX_OCSP_BASIC;
// ── Extended Key Usage key-purpose OIDs (RFC 5280 §4.2.1.12, 1.3.6.1.5.5.7.3.*) ─
/// Any extended key usage — match any EKU-bearing cert (2.5.29.37.0)
pub use crateANY_EXTENDED_KEY_USAGE;
/// TLS client authentication (1.3.6.1.5.5.7.3.2)
pub use crateID_KP_CLIENT_AUTH as KP_CLIENT_AUTH;
/// Code signing (1.3.6.1.5.5.7.3.3)
pub use crateID_KP_CODE_SIGNING as KP_CODE_SIGNING;
/// Email protection / S/MIME (1.3.6.1.5.5.7.3.4)
pub use crateID_KP_EMAIL_PROTECTION as KP_EMAIL_PROTECTION;
/// OCSP signing (1.3.6.1.5.5.7.3.9)
pub use crateID_KP_OCSPSIGNING as KP_OCSP_SIGNING;
/// TLS server authentication (1.3.6.1.5.5.7.3.1)
pub use crateID_KP_SERVER_AUTH as KP_SERVER_AUTH;
/// Time stamping (1.3.6.1.5.5.7.3.8)
pub use crateID_KP_TIME_STAMPING as KP_TIME_STAMPING;
// ── SHA-1 hash algorithm (OIW arc, 1.3.14.3.2.26) ───────────────────────────
/// SHA-1 hash algorithm OID (`id-sha1`, 1.3.14.3.2.26, OIW arc).
///
/// Predates the NIST SHA-2 arc. Still used as the default hash algorithm in
/// RSA-PSS and RSA-OAEP parameter blocks (RFC 8017 §9.1, §7.1). Do not use
/// SHA-1 as a standalone digest for new protocols.
pub use crateID_SHA1;
// ── SHA-2 hash algorithms (FIPS 180-4) ───────────────────────────────────────
pub use crateHASH_ALGS;
pub use crateID_SHA224;
pub use crateID_SHA256;
pub use crateID_SHA384;
pub use crateID_SHA512;
pub use crateID_SHA512_224;
pub use crateID_SHA512_256;
// ── SHA-3 hash algorithms and XOFs (FIPS 202) ────────────────────────────────
pub use crateID_SHA3_224;
pub use crateID_SHA3_256;
pub use crateID_SHA3_384;
pub use crateID_SHA3_512;
pub use crateID_SHAKE128;
pub use crateID_SHAKE256;
// ── SLH-DSA signature algorithms (FIPS 205) ──────────────────────────────────
pub use crateID_SLH_DSA_SHA2_128F;
pub use crateID_SLH_DSA_SHA2_128S;
pub use crateID_SLH_DSA_SHA2_192F;
pub use crateID_SLH_DSA_SHA2_192S;
pub use crateID_SLH_DSA_SHA2_256F;
pub use crateID_SLH_DSA_SHA2_256S;
pub use crateID_SLH_DSA_SHAKE_128F;
pub use crateID_SLH_DSA_SHAKE_128S;
pub use crateID_SLH_DSA_SHAKE_192F;
pub use crateID_SLH_DSA_SHAKE_192S;
pub use crateID_SLH_DSA_SHAKE_256F;
pub use crateID_SLH_DSA_SHAKE_256S;
// ── RSA / ECDSA / DSA (prefix OIDs) ──────────────────────────────────────────
//
// These algorithms share a common OID arc for all their variants.
// Use `components().starts_with(prefix)` rather than an exact match.
/// RSA signature / public-key OID prefix — `pkcs-1` (1.2.840.113549.1.1)
///
/// Covers all PKCS #1 v1.5 signature algorithms:
/// `sha1WithRSAEncryption`, `sha256WithRSAEncryption`, …
pub use cratePKCS_1 as RSA;
/// ECDSA *signature* OID prefix — `ansiX962-signatures` arc (1.2.840.10045.4)
///
/// Covers `ecdsa-with-SHA1`, `ecdsa-with-SHA256`, `ecdsa-with-SHA384`, …
pub use crateANSI_X962_SIGNATURES as ECDSA_SIG;
/// ECDSA / EC *public-key* OID prefix — `ansiX962-keyType` arc (1.2.840.10045.2)
pub use crateANSI_X962_KEY_TYPE as ECDSA_KEY;
/// DSA OID prefix — `id-dsa` arc (1.2.840.10040.4)
///
/// Covers `id-dsa` (plain) and `id-dsa-with-sha1`, `id-dsa-with-sha224`, …
pub use crateID_DSA as DSA;
// ── X.500 / LDAP distinguished name attribute types ───────────────────────────
/// OID component arrays for well-known X.509 distinguished name attributes.
///
/// These are the same values matched by [`crate::name::format_dn`] when
/// formatting an RFC 4514 distinguished name string.
///
/// ```rust,ignore
/// use synta_certificate::oids::attr;
///
/// let label = match oid.components() {
/// attr::COMMON_NAME => "CN",
/// attr::ORGANIZATION => "O",
/// attr::COUNTRY => "C",
/// _ => "?",
/// };
/// ```
// ── PKINIT OIDs (RFC 4556 + RFC 6112 + RFC 8636) ─────────────────────────────
/// PKINIT KRB5PrincipalName SAN OtherName type-id (1.3.6.1.5.2.2)
///
/// Used as the `type-id` field of an X.509 Subject Alternative Name `OtherName`
/// entry that carries a Kerberos principal name encoded as KRB5PrincipalName.
pub use crateID_PKINIT_SAN;
/// PKINIT client authentication Extended Key Usage (1.3.6.1.5.2.3.4)
///
/// KDCs MUST require this EKU in client certificates during PKINIT exchanges.
pub use crateID_PKINIT_KPCLIENT_AUTH;
/// PKINIT KDC Extended Key Usage (1.3.6.1.5.2.3.5)
///
/// PKINIT clients MUST verify that the KDC certificate contains this EKU.
pub use crateID_PKINIT_KPKDC;
/// PKINIT pre-authentication data content type (1.3.6.1.5.2.3.1)
pub use crateID_PKINIT_AUTH_DATA;
/// PKINIT DH key data content type (1.3.6.1.5.2.3.2)
pub use crateID_PKINIT_DHKEY_DATA;
/// PKINIT reply key pack content type (1.3.6.1.5.2.3.3)
pub use crateID_PKINIT_RKEY_DATA;
/// PKINIT KDF algorithm arc (1.3.6.1.5.2.3.6) — RFC 8636
pub use crateID_PKINIT_KDF;
/// PKINIT KDF with SHA-1 (1.3.6.1.5.2.3.6.1) — RFC 8636
pub use crateID_PKINIT_KDF_AH_SHA1;
/// PKINIT KDF with SHA-256 (1.3.6.1.5.2.3.6.2) — RFC 8636
pub use crateID_PKINIT_KDF_AH_SHA256;
/// PKINIT KDF with SHA-384 (1.3.6.1.5.2.3.6.4) — RFC 8636
pub use crateID_PKINIT_KDF_AH_SHA384;
/// PKINIT KDF with SHA-512 (1.3.6.1.5.2.3.6.3) — RFC 8636
pub use crateID_PKINIT_KDF_AH_SHA512;
// ── Microsoft PKI OIDs (AD CS) ────────────────────────────────────────────────
/// Microsoft UPN Subject Alternative Name OtherName type-id (1.3.6.1.4.1.311.20.2.3)
///
/// Known as `szOID_NT_PRINCIPAL_NAME` in the Windows SDK. The OtherName value
/// is a UTF8String carrying the User Principal Name (e.g. "user@REALM").
pub use crateID_MS_SAN_UPN;
/// Microsoft Certificate Template Name extension OID (1.3.6.1.4.1.311.20.2)
///
/// Known as `szOID_CERTIFICATE_TEMPLATE_NAME` / `szOID_ENROLLMENT_SUBTYPE`.
/// Windows 2000 / version 1 template name extension. Value is a BMPString.
pub use crateID_MS_CERTIFICATE_TEMPLATE_NAME;
/// Microsoft Certificate Template Information extension OID (1.3.6.1.4.1.311.21.7)
///
/// Known as `szOID_CERTIFICATE_TEMPLATE`. Windows Server 2003+ / version 2
/// template info extension. Value is `MSCSTemplateV2` (OID + version numbers).
pub use crateID_MS_CERTIFICATE_TEMPLATE;
/// Microsoft smart card logon Extended Key Usage (1.3.6.1.4.1.311.20.2.2)
///
/// Known as `szOID_MS_KP_SMARTCARD_LOGON`. Windows KDCs may accept certificates
/// with this EKU for PKINIT client authentication.
pub use crateID_MS_KP_SMARTCARD_LOGON;
/// Microsoft NTDS replication Extended Key Usage (1.3.6.1.4.1.311.25.1)
///
/// Known as `szOID_NTDS_REPLICATION`. Used in domain controller certificates
/// for Active Directory replication and Windows PKINIT ([MS-PKCA]).
pub use crateID_MS_NTDS_REPLICATION;
// ── CMS content-type OIDs (RFC 5652 §14) ─────────────────────────────────────
/// CMS `id-data` content type — plain data (1.2.840.113549.1.7.1, RFC 5652 §4).
pub use crateID_DATA as CMS_DATA;
/// CMS `id-signedData` content type — digital signatures (1.2.840.113549.1.7.2,
/// RFC 5652 §5).
pub use crateID_SIGNED_DATA as CMS_SIGNED_DATA;
/// CMS `id-envelopedData` content type — encrypted for recipients
/// (1.2.840.113549.1.7.3, RFC 5652 §6).
pub use crateID_ENVELOPED_DATA as CMS_ENVELOPED_DATA;
/// CMS `id-digestedData` content type — data with a digest (1.2.840.113549.1.7.5,
/// RFC 5652 §7).
pub use crateID_DIGESTED_DATA as CMS_DIGESTED_DATA;
/// CMS `id-encryptedData` content type — symmetrically encrypted, no recipient
/// management (1.2.840.113549.1.7.6, RFC 5652 §8).
pub use crateID_ENCRYPTED_DATA as CMS_ENCRYPTED_DATA;
/// CMS `id-ct-authData` content type — MACed data (1.2.840.113549.1.9.16.1.2,
/// RFC 5652 §9).
pub use crateID_CT_AUTH_DATA as CMS_AUTH_DATA;
// ── CMS-KEM OtherRecipientInfo OIDs (RFC 9629 §6.2) ──────────────────────────
/// CMS-KEM `id-ori` — root arc for `OtherRecipientInfo` alternatives
/// (1.2.840.113549.1.9.16.13, RFC 9629).
pub use crateID_ORI as CMS_ORI;
/// CMS-KEM `id-ori-kem` — identifies a `KEMRecipientInfo` inside
/// `OtherRecipientInfo` (1.2.840.113549.1.9.16.13.3, RFC 9629).
pub use crateID_ORI_KEM as CMS_ORI_KEM;
// ── PKCS #9 attribute type OIDs (RFC 2985 / RFC 5652 §11) ────────────────────
//
// | Constant | OID (dotted) | Standard |
// |---|---|---|
// | [`PKCS9_CONTENT_TYPE`] | 1.2.840.113549.1.9.3 | RFC 5652 §11.1 |
// | [`PKCS9_MESSAGE_DIGEST`] | 1.2.840.113549.1.9.4 | RFC 5652 §11.2 |
// | [`PKCS9_SIGNING_TIME`] | 1.2.840.113549.1.9.5 | RFC 5652 §11.3 |
// | [`PKCS9_COUNTERSIGNATURE`] | 1.2.840.113549.1.9.6 | RFC 5652 §11.4 |
// | [`PKCS9_CHALLENGE_PASSWORD`] | 1.2.840.113549.1.9.7 | RFC 2986 §5.4.1 |
// | [`PKCS9_EMAIL_ADDRESS`] | 1.2.840.113549.1.9.1 | RFC 2985 §5.2.1 |
// | [`PKCS9_EXTENSION_REQUEST`] | 1.2.840.113549.1.9.14 | RFC 2985 §5.4.2 |
// | [`PKCS9_FRIENDLY_NAME`] | 1.2.840.113549.1.9.20 | RFC 7292 §B.3 |
// | [`PKCS9_LOCAL_KEY_ID`] | 1.2.840.113549.1.9.21 | RFC 7292 §B.3 |
/// PKCS #9 `id-contentType` signed attribute (1.2.840.113549.1.9.3, RFC 5652 §11.1).
///
/// Carries the content type of the encapsulated content as an OID. MUST be
/// present in `SignerInfo.signedAttrs` whenever `encapContentInfo.eContent`
/// is present in a `SignedData`.
pub use crateID_CONTENT_TYPE as PKCS9_CONTENT_TYPE;
/// PKCS #9 `id-messageDigest` signed attribute (1.2.840.113549.1.9.4, RFC 5652 §11.2).
///
/// Carries the hash of the signed content as an OCTET STRING. MUST be present
/// in `SignerInfo.signedAttrs` whenever `signedAttrs` is present.
pub use crateID_MESSAGE_DIGEST as PKCS9_MESSAGE_DIGEST;
/// PKCS #9 `id-signingTime` signed attribute (1.2.840.113549.1.9.5, RFC 5652 §11.3).
///
/// Carries the claimed time of signing as `UTCTime` or `GeneralizedTime`.
/// Note: the claimed time is not authenticated by the signature algorithm
/// itself; it is only as trustworthy as the signer.
pub use crateID_SIGNING_TIME as PKCS9_SIGNING_TIME;
/// PKCS #9 `id-countersignature` unsigned attribute (1.2.840.113549.1.9.6, RFC 5652 §11.4).
///
/// Carries a `SignerInfo` that signs the signature value of the containing
/// `SignerInfo`. Placed in `SignerInfo.unsignedAttrs`.
pub use crateID_COUNTERSIGNATURE as PKCS9_COUNTERSIGNATURE;
/// PKCS #9 `id-challengePassword` attribute (1.2.840.113549.1.9.7, RFC 2986 §5.4.1).
///
/// A challenge password used for CSR revocation verification. Value is a
/// `DirectoryString` (`PrintableString` or `UTF8String`).
pub use crateID_CHALLENGE_PASSWORD as PKCS9_CHALLENGE_PASSWORD;
/// PKCS #9 `id-emailAddress` attribute (1.2.840.113549.1.9.1, RFC 2985 §5.2.1).
///
/// Deprecated: use Subject Alternative Name (`id-ce-subjectAltName`) with an
/// `rfc822Name` entry instead. Still common in legacy certificates and
/// S/MIME-era CAs.
pub use crateID_EMAIL_ADDRESS as PKCS9_EMAIL_ADDRESS;
/// PKCS #9 `id-extensionRequest` attribute (1.2.840.113549.1.9.14, RFC 2985 §5.4.2).
///
/// Carries a `SEQUENCE OF Extension` specifying the X.509v3 extensions to
/// include in the issued certificate. The CA MAY honour any subset of
/// the requested extensions. MUST be present in a CSR that requests
/// Subject Alternative Names or other extensions.
pub use crateID_EXTENSION_REQUEST as PKCS9_EXTENSION_REQUEST;
/// PKCS #9 `id-friendlyName` bag attribute (1.2.840.113549.1.9.20, RFC 7292 §B.3).
///
/// A human-readable alias (`BMPString`) for a PKCS #12 key or certificate bag.
pub use crateID_FRIENDLY_NAME as PKCS9_FRIENDLY_NAME;
/// PKCS #9 `id-localKeyId` bag attribute (1.2.840.113549.1.9.21, RFC 7292 §B.3).
///
/// An `OCTET STRING` identifier linking a private-key bag to the corresponding
/// certificate bag in a PKCS #12 file.
pub use crateID_LOCAL_KEY_ID as PKCS9_LOCAL_KEY_ID;
// ── PKCS #1 algorithm OIDs (RFC 8017) ────────────────────────────────────────
//
// | Constant | OID (dotted) | Purpose |
// |---|---|---|
// | [`RSASSA_PSS`] | 1.2.840.113549.1.1.10 | RSA-PSS signature |
// | [`RSAES_OAEP`] | 1.2.840.113549.1.1.7 | RSA-OAEP encryption |
// | [`MGF1`] | 1.2.840.113549.1.1.8 | Mask Generation Function 1 |
// | [`P_SPECIFIED`] | 1.2.840.113549.1.1.9 | pSource "P is specified" |
// | [`MD2_WITH_RSA`] | 1.2.840.113549.1.1.2 | MD2 with RSA (obsolete) |
// | [`SHA512_224_WITH_RSA`] | 1.2.840.113549.1.1.15 | SHA-512/224 with RSA |
// | [`SHA512_256_WITH_RSA`] | 1.2.840.113549.1.1.16 | SHA-512/256 with RSA |
/// `id-RSASSA-PSS` — RSA Probabilistic Signature Scheme (1.2.840.113549.1.1.10,
/// RFC 8017 §8.1).
///
/// Used as the `AlgorithmIdentifier.algorithm` OID for RSA-PSS signatures;
/// the parameters field carries [`crate::pkcs1_types::RsassaPssParams`].
pub use crateID_RSASSA_PSS as RSASSA_PSS;
/// `id-RSAES-OAEP` — RSA Optimal Asymmetric Encryption Padding (1.2.840.113549.1.1.7,
/// RFC 8017 §7.1).
///
/// Used as the `AlgorithmIdentifier.algorithm` OID for RSA-OAEP key encryption;
/// the parameters field carries [`crate::pkcs1_types::RsaesOaepParams`].
pub use crateID_RSAES_OAEP as RSAES_OAEP;
/// `id-mgf1` — Mask Generation Function 1 (1.2.840.113549.1.1.8, RFC 8017 §B.2.1).
///
/// Identifies MGF1 as the mask generation algorithm inside
/// [`crate::pkcs1_types::RsassaPssParams`] and [`crate::pkcs1_types::RsaesOaepParams`].
pub use crateID_MGF1 as MGF1;
/// `id-pSpecified` — pSource algorithm "P is specified" (1.2.840.113549.1.1.9,
/// RFC 8017 §A.2.1).
///
/// Identifies the label source algorithm inside
/// [`crate::pkcs1_types::RsaesOaepParams`].
pub use crateID_P_SPECIFIED as P_SPECIFIED;
/// `md2WithRSAEncryption` — MD2 with RSA, PKCS #1 v1.5 (1.2.840.113549.1.1.2,
/// RFC 8017 Appendix C). Obsolete; do not use.
pub use crateMD2_WITH_RSAENCRYPTION as MD2_WITH_RSA;
/// `sha512-224WithRSAEncryption` — SHA-512/224 with RSA, PKCS #1 v1.5
/// (1.2.840.113549.1.1.15, RFC 8017 Appendix C).
pub use crateSHA512_224_WITH_RSAENCRYPTION as SHA512_224_WITH_RSA;
/// `sha512-256WithRSAEncryption` — SHA-512/256 with RSA, PKCS #1 v1.5
/// (1.2.840.113549.1.1.16, RFC 8017 Appendix C).
pub use crateSHA512_256_WITH_RSAENCRYPTION as SHA512_256_WITH_RSA;
// ── RFC 9925 Unsigned X.509 Certificates ─────────────────────────────────────
//
// | Constant | OID (dotted) | Purpose |
// |---|---|---|
// | [`ALG_UNSIGNED`] | 1.3.6.1.5.5.7.6.36 | Unsigned signature algorithm |
// | [`RDNA_UNSIGNED`] | 1.3.6.1.5.5.7.25.1 | Unsigned issuer RDN placeholder |
/// `id-alg-unsigned` — unsigned signature algorithm identifier (1.3.6.1.5.5.7.6.36,
/// RFC 9925 §3).
///
/// Placed in both `Certificate.signatureAlgorithm` and `TBSCertificate.signature`
/// to mark a certificate as unsigned. Algorithm parameters MUST be absent and
/// `signatureValue` MUST be a zero-length BIT STRING (DER: `03 01 00`).
///
/// Receivers MUST reject certificates using this OID during signature verification.
/// Receivers MAY accept them when processing certificates as unsigned containers.
pub use crateID_ALG_UNSIGNED as ALG_UNSIGNED;
/// `id-rdna-unsigned` — unsigned issuer RDN placeholder attribute (1.3.6.1.5.5.7.25.1,
/// RFC 9925 §5).
///
/// An optional placeholder Relative Distinguished Name attribute for the issuer
/// field of an unsigned certificate. The attribute value is a zero-length
/// UTF8String. RFC 4514 string representation: `1.3.6.1.5.5.7.25.1=#0C00`.
///
/// Senders may also copy the subject DN into the issuer DN (self-signed appearance)
/// instead of using this attribute.
pub use crateID_RDNA_UNSIGNED as RDNA_UNSIGNED;
// ── Attribute Certificate OIDs (RFC 5755) ────────────────────────────────────
//
// Attribute Certificate Issuer (ACA) service OIDs: id-aca arc (1.3.6.1.5.5.7.10.*)
// Private extension OIDs: id-pe arc (1.3.6.1.5.5.7.1.*)
// Attribute type OIDs: id-at arc (2.5.4.*)
/// `id-aca-authenticationInfo` (1.3.6.1.5.5.7.10.1, RFC 5755 §4.4.2).
///
/// AC attribute carrying authentication information.
pub use crateID_ACA_AUTHENTICATION_INFO as ACA_AUTHENTICATION_INFO;
/// `id-aca-accessIdentity` (1.3.6.1.5.5.7.10.2, RFC 5755 §4.4.3).
///
/// AC attribute carrying an access identity.
pub use crateID_ACA_ACCESS_IDENTITY as ACA_ACCESS_IDENTITY;
/// `id-aca-chargingIdentity` (1.3.6.1.5.5.7.10.3, RFC 5755 §4.4.4).
///
/// AC attribute carrying a charging identity.
pub use crateID_ACA_CHARGING_IDENTITY as ACA_CHARGING_IDENTITY;
/// `id-aca-group` (1.3.6.1.5.5.7.10.4, RFC 5755 §4.4.5).
///
/// AC attribute carrying group membership information.
pub use crateID_ACA_GROUP as ACA_GROUP;
/// `id-aca-encAttrs` (1.3.6.1.5.5.7.10.6, RFC 5755 §4.4.6).
///
/// AC attribute carrying encrypted attributes.
pub use crateID_ACA_ENC_ATTRS as ACA_ENC_ATTRS;
/// `id-at-role` (2.5.4.72, RFC 5755 §4.4.5).
///
/// X.500 attribute type for carrying role information in an AC.
pub use crateID_AT_ROLE as AT_ROLE;
/// `id-at-clearance` (2.5.4.55, RFC 5755 §4.4.6).
///
/// X.500 attribute type for carrying clearance information in an AC.
pub use crateID_AT_CLEARANCE as AT_CLEARANCE;
/// `id-ce-targetInformation` (2.5.29.55, RFC 5755 §4.3.2).
///
/// Certificate extension that limits the scope of an AC to specific targets.
pub use crateID_CE_TARGET_INFORMATION as CE_TARGET_INFORMATION;
/// `id-pe-acAuditIdentity` (1.3.6.1.5.5.7.1.4, RFC 5755 §4.5.1).
///
/// AC private extension carrying an audit identity reference.
pub use crateID_PE_AC_AUDIT_IDENTITY as PE_AC_AUDIT_IDENTITY;
/// `id-pe-aaControls` (1.3.6.1.5.5.7.1.56, RFC 5755 §4.5.2).
///
/// AC private extension specifying which attributes an AC issuer is authorised to assert.
pub use crateID_PE_AA_CONTROLS as PE_AA_CONTROLS;
/// `id-pe-acProxying` (1.3.6.1.5.5.7.1.10, RFC 5755 §4.5.3).
///
/// AC private extension enabling delegation of attribute authority.
pub use crateID_PE_AC_PROXYING as PE_AC_PROXYING;
/// `id-pe-acmeIdentifier` (1.3.6.1.5.5.7.1.31, RFC 8737 §3).
///
/// X.509 extension OID for the ACME TLS-ALPN-01 domain validation certificate.
/// The extension MUST be critical. Its value is the DER encoding of an
/// [`acme_types::Authorization`](crate::acme_types::Authorization) — a 32-byte
/// SHA-256 digest of the ACME key authorization string for the challenge token.
pub use crateID_PE_ACME_IDENTIFIER as PE_ACME_IDENTIFIER;
// ── CRMF registration-control OIDs (RFC 4211 §6.1) ───────────────────────────
//
// id-regCtrl arc (1.3.6.1.5.5.7.5.1.*) — controls sent in CertReqMsg
/// `id-regCtrl` arc root (1.3.6.1.5.5.7.5.1, RFC 4211 §6.1).
pub use crateID_REG_CTRL as CRMF_REG_CTRL;
/// `id-regCtrl-regToken` (1.3.6.1.5.5.7.5.1.1, RFC 4211 §6.1.1).
///
/// A one-time secret used to prove the requester's identity to the CA.
pub use crateID_REG_CTRL_REG_TOKEN as CRMF_REG_CTRL_REG_TOKEN;
/// `id-regCtrl-authenticator` (1.3.6.1.5.5.7.5.1.2, RFC 4211 §6.1.2).
///
/// Shared secret used to authenticate the requester.
pub use crateID_REG_CTRL_AUTHENTICATOR as CRMF_REG_CTRL_AUTHENTICATOR;
/// `id-regCtrl-pkiPublicationInfo` (1.3.6.1.5.5.7.5.1.3, RFC 4211 §6.1.3).
///
/// Describes where the resulting certificate should be published.
pub use crateID_REG_CTRL_PKI_PUBLICATION_INFO as CRMF_REG_CTRL_PKI_PUBLICATION_INFO;
/// `id-regCtrl-pkiArchiveOptions` (1.3.6.1.5.5.7.5.1.4, RFC 4211 §6.1.4).
///
/// Requests that the private key or encrypted key be archived.
pub use crateID_REG_CTRL_PKI_ARCHIVE_OPTIONS as CRMF_REG_CTRL_PKI_ARCHIVE_OPTIONS;
/// `id-regCtrl-oldCertID` (1.3.6.1.5.5.7.5.1.5, RFC 4211 §6.1.5).
///
/// Identifies the certificate being replaced or renewed.
pub use crateID_REG_CTRL_OLD_CERT_ID as CRMF_REG_CTRL_OLD_CERT_ID;
/// `id-regCtrl-protocolEncrKey` (1.3.6.1.5.5.7.5.1.6, RFC 4211 §6.1.6).
///
/// Public key used to encrypt sensitive information in the response.
pub use crateID_REG_CTRL_PROTOCOL_ENCR_KEY as CRMF_REG_CTRL_PROTOCOL_ENCR_KEY;
/// `id-regInfo` arc root (1.3.6.1.5.5.7.5.2, RFC 4211 §6.2).
pub use crateID_REG_INFO as CRMF_REG_INFO;
/// `id-regInfo-utf8Pairs` (1.3.6.1.5.5.7.5.2.1, RFC 4211 §6.2.1).
///
/// A sequence of UTF-8 name=value pairs providing supplementary information.
pub use crateID_REG_INFO_UTF8_PAIRS as CRMF_REG_INFO_UTF8_PAIRS;
/// `id-regInfo-certReq` (1.3.6.1.5.5.7.5.2.2, RFC 4211 §6.2.2).
///
/// An embedded certificate request providing context for the current request.
pub use crateID_REG_INFO_CERT_REQ as CRMF_REG_INFO_CERT_REQ;
// ── CMP MAC algorithm and KGA OIDs (RFC 4210 / RFC 9480) ─────────────────────
/// `id-PasswordBasedMac` (1.2.840.113533.7.66.13, RFC 4210 §5.1.3.1).
///
/// Password-based MAC algorithm identifier used in CMP PKIHeader protection.
pub use crateID_PASSWORD_BASED_MAC as CMP_PASSWORD_BASED_MAC;
/// `id-DHBasedMac` (1.2.840.113533.7.66.30, RFC 4210 §5.1.3.2).
///
/// Diffie-Hellman-based MAC algorithm identifier used in CMP PKIHeader protection.
pub use crateID_DHBASED_MAC as CMP_DHBASED_MAC;
/// `id-KemBasedMac` (1.3.6.1.5.5.7.15.10, RFC 9480 §4).
///
/// KEM-based MAC algorithm identifier for CMP PKIHeader protection (post-quantum).
pub use crateID_KEM_BASED_MAC as CMP_KEM_BASED_MAC;
/// `id-kp-cmKGA` (1.3.6.1.5.5.7.3.32, RFC 9480 §3.2).
///
/// Extended Key Usage OID for a CMP Key Generation Authority (KGA).
pub use crateID_KP_CM_KGA as KP_CM_KGA;
/// `id-regCtrl-altCertTemplate` (1.3.6.1.5.5.7.5.1.7, RFC 9480 §5.1.7).
///
/// CMP registration control carrying an alternative certificate template.
pub use crateID_REG_CTRL_ALT_CERT_TEMPLATE as CMP_REG_CTRL_ALT_CERT_TEMPLATE;
/// `id-regCtrl-algID` (1.3.6.1.5.5.7.5.1.11, RFC 9480 §5.1.8).
///
/// CMP registration control requesting a specific algorithm for the issued certificate.
pub use crateID_REG_CTRL_ALG_ID as CMP_REG_CTRL_ALG_ID;
/// `id-regCtrl-rsaKeyLen` (1.3.6.1.5.5.7.5.1.12, RFC 9480 §5.1.9).
///
/// CMP registration control specifying the desired RSA key length.
pub use crateID_REG_CTRL_RSA_KEY_LEN as CMP_REG_CTRL_RSA_KEY_LEN;
// ── PKIXAlgs DSA, DH, and additional EC curve OIDs (RFC 3279) ────────────────
/// `id-dsa` (1.2.840.10040.4.1, RFC 3279 §2.3.2) — DSA public key algorithm OID.
///
/// The specific DSA public key OID, as distinct from the `DSA` prefix arc
/// (1.2.840.10040.4) which is available as [`DSA`].
pub use crateID_DSA as DSA_KEY;
/// `id-dsa-with-sha1` (1.2.840.10040.4.3, RFC 3279 §2.3.2) — DSA with SHA-1 signature.
pub use crateID_DSA_WITH_SHA1 as DSA_WITH_SHA1;
/// `dhpublicNumber` (1.2.840.10046.2.1, RFC 3279 §2.3.3) — Diffie-Hellman public key.
pub use crateDHPUBLICNUMBER as DH_PUBLIC_KEY;
/// EC curve `prime192v1` / NIST P-192 (1.2.840.10045.3.1.1, SEC 2).
pub use cratePRIME192V1 as EC_CURVE_P192;
/// EC curve `secp224r1` / NIST P-224 (1.3.132.0.33, SEC 2).
pub use crateSECP224R1 as EC_CURVE_P224;