Skip to content

Commit 04e3dcc

Browse files
committed
x509-cert: remove support for unique ids
1 parent 791181c commit 04e3dcc

File tree

2 files changed

+16
-77
lines changed

2 files changed

+16
-77
lines changed

x509-cert/src/builder.rs

Lines changed: 12 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -67,32 +67,6 @@ impl From<signature::Error> for Error {
6767

6868
type Result<T> = core::result::Result<T, Error>;
6969

70-
/// UniqueIds holds the optional attributes `issuerUniqueID` and `subjectUniqueID`
71-
/// to be filled in the TBSCertificate if version v2 or v3.
72-
///
73-
/// See X.509 `TbsCertificate` as defined in [RFC 5280 Section 4.1]
74-
pub struct UniqueIds {
75-
/// ```text
76-
/// issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
77-
/// -- If present, version MUST be v2 or v3
78-
/// ```
79-
pub issuer_unique_id: Option<BitString>,
80-
/// ```text
81-
/// subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
82-
/// -- If present, version MUST be v2 or v3
83-
/// ```
84-
pub subject_unique_id: Option<BitString>,
85-
}
86-
87-
impl UniqueIds {
88-
fn get_unique_ids(&self) -> (Option<BitString>, Option<BitString>) {
89-
(
90-
self.issuer_unique_id.clone(),
91-
self.subject_unique_id.clone(),
92-
)
93-
}
94-
}
95-
9670
/// The type of certificate to build
9771
#[derive(Clone, Debug, Eq, PartialEq)]
9872
pub enum Profile {
@@ -229,34 +203,13 @@ impl Profile {
229203
}
230204
}
231205

232-
/// The version of the Certificate to build.
233-
/// All newly built certificate should use `CertificateVersion::V3`
234-
pub enum CertificateVersion {
235-
/// Generate a X509 version 1
236-
V1,
237-
/// Generate a X509 version 2
238-
V2(UniqueIds),
239-
/// Generate a X509 version 3
240-
V3(UniqueIds),
241-
}
242-
243-
impl From<CertificateVersion> for Version {
244-
fn from(cv: CertificateVersion) -> Version {
245-
use CertificateVersion::*;
246-
match cv {
247-
V1 => Version::V1,
248-
V2(_) => Version::V2,
249-
V3(_) => Version::V3,
250-
}
251-
}
252-
}
253-
254206
/// X509 Certificate builder
255207
///
256208
/// ```
257209
/// use der::Decode;
258210
/// use x509_cert::spki::SubjectPublicKeyInfoOwned;
259-
/// use x509_cert::builder::{CertificateBuilder, CertificateVersion, Profile, UniqueIds};
211+
/// use x509_cert::certificate::Version;
212+
/// use x509_cert::builder::{CertificateBuilder, Profile};
260213
/// use x509_cert::name::Name;
261214
/// use x509_cert::serial_number::SerialNumber;
262215
/// use x509_cert::time::Validity;
@@ -274,11 +227,6 @@ impl From<CertificateVersion> for Version {
274227
/// # signing_key
275228
/// # }
276229
///
277-
/// let uids = UniqueIds {
278-
/// issuer_unique_id: None,
279-
/// subject_unique_id: None,
280-
/// };
281-
///
282230
/// let serial_number = SerialNumber::from(42u32);
283231
/// let validity = Validity::from_now(Duration::new(5, 0)).unwrap();
284232
/// let profile = Profile::Root;
@@ -289,7 +237,7 @@ impl From<CertificateVersion> for Version {
289237
/// let mut signer = rsa_signer();
290238
/// let mut builder = CertificateBuilder::new(
291239
/// profile,
292-
/// CertificateVersion::V3(uids),
240+
/// Version::V3,
293241
/// serial_number,
294242
/// validity,
295243
/// subject,
@@ -312,7 +260,7 @@ where
312260
/// Creates a new certificate builder
313261
pub fn new<Signature>(
314262
profile: Profile,
315-
version: CertificateVersion,
263+
version: Version,
316264
serial_number: SerialNumber,
317265
mut validity: Validity,
318266
subject: Name,
@@ -333,12 +281,6 @@ where
333281
validity.not_before.rfc5280_adjust_utc_time()?;
334282
validity.not_after.rfc5280_adjust_utc_time()?;
335283

336-
let (version, (issuer_unique_id, subject_unique_id)) = match version {
337-
CertificateVersion::V1 => (Version::V1, (None, None)),
338-
CertificateVersion::V2(uids) => (Version::V2, uids.get_unique_ids()),
339-
CertificateVersion::V3(uids) => (Version::V3, uids.get_unique_ids()),
340-
};
341-
342284
let mut tbs = TbsCertificate {
343285
version,
344286
serial_number,
@@ -347,9 +289,15 @@ where
347289
validity,
348290
subject,
349291
subject_public_key_info,
350-
issuer_unique_id,
351-
subject_unique_id,
352292
extensions: None,
293+
294+
// We will not generate unique identifier because as per RFC5280 Section 4.1.2.8:
295+
// CAs conforming to this profile MUST NOT generate
296+
// certificates with unique identifiers.
297+
//
298+
// https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.8
299+
issuer_unique_id: None,
300+
subject_unique_id: None,
353301
};
354302

355303
if tbs.version == Version::V3 {

x509-cert/tests/builder.rs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ use sha2::Sha256;
88
use spki::SubjectPublicKeyInfoOwned;
99
use std::{str::FromStr, time::Duration};
1010
use x509_cert::{
11-
builder::{CertificateBuilder, CertificateVersion, Profile, UniqueIds},
11+
builder::{CertificateBuilder, Profile},
12+
certificate::Version,
1213
name::Name,
1314
serial_number::SerialNumber,
1415
time::Validity,
@@ -19,11 +20,6 @@ const RSA_2048_DER_EXAMPLE: &[u8] = include_bytes!("examples/rsa2048-pub.der");
1920

2021
#[test]
2122
fn root_ca_certificate() {
22-
let uids = UniqueIds {
23-
issuer_unique_id: None,
24-
subject_unique_id: None,
25-
};
26-
2723
let serial_number = SerialNumber::from(42u32);
2824
let validity = Validity::from_now(Duration::new(5, 0)).unwrap();
2925
let profile = Profile::Root;
@@ -38,7 +34,7 @@ fn root_ca_certificate() {
3834
let mut signer = rsa_signer();
3935
let mut builder = CertificateBuilder::new(
4036
profile,
41-
CertificateVersion::V3(uids),
37+
Version::V3,
4238
serial_number,
4339
validity,
4440
subject,
@@ -58,11 +54,6 @@ fn root_ca_certificate() {
5854

5955
#[test]
6056
fn sub_ca_certificate() {
61-
let uids = UniqueIds {
62-
issuer_unique_id: None,
63-
subject_unique_id: None,
64-
};
65-
6657
let serial_number = SerialNumber::from(42u32);
6758
let validity = Validity::from_now(Duration::new(5, 0)).unwrap();
6859

@@ -87,7 +78,7 @@ fn sub_ca_certificate() {
8778
let mut signer = ecdsa_signer();
8879
let mut builder = CertificateBuilder::new::<ecdsa::Signature<NistP256>>(
8980
profile,
90-
CertificateVersion::V3(uids),
81+
Version::V3,
9182
serial_number,
9283
validity,
9384
subject,

0 commit comments

Comments
 (0)