Skip to content

Commit e9e8bac

Browse files
committed
Dont let users choose serial
1 parent 3995717 commit e9e8bac

File tree

2 files changed

+3
-40
lines changed

2 files changed

+3
-40
lines changed

crates/stackable-certs/src/ca/ca_builder.rs

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,6 @@ where
8787
#[builder(default = DEFAULT_CA_VALIDITY)]
8888
validity: Duration,
8989

90-
/// Serial number of the generated certificate.
91-
///
92-
/// If not specified a random serial will be generated.
93-
serial_number: Option<u64>,
94-
9590
/// Cryptographic keypair used to sign leaf certificates.
9691
///
9792
/// If not specified a random keypair will be generated.
@@ -120,8 +115,6 @@ where
120115
pub fn build(
121116
self,
122117
) -> Result<CertificateAuthority<SKP>, CreateCertificateAuthorityError<SKP::Error>> {
123-
let serial_number =
124-
SerialNumber::from(self.serial_number.unwrap_or_else(|| rand::random::<u64>()));
125118
let validity = Validity::from_now(*self.validity).context(ParseValiditySnafu)?;
126119
let subject: Name = self.subject.parse().context(ParseSubjectSnafu {
127120
subject: self.subject,
@@ -130,6 +123,7 @@ where
130123
Some(signing_key_pair) => signing_key_pair,
131124
None => SKP::new().context(CreateSigningKeyPairSnafu)?,
132125
};
126+
let serial_number = SerialNumber::from(rand::random::<u64>());
133127

134128
let spki_pem = signing_key_pair
135129
.verifying_key()
@@ -203,15 +197,13 @@ mod tests {
203197
&ca.ca_cert().tbs_certificate,
204198
SDP_ROOT_CA_SUBJECT,
205199
DEFAULT_CA_VALIDITY,
206-
None,
207200
)
208201
}
209202

210203
#[test]
211204
fn customized_ca() {
212205
let ca = CertificateAuthority::builder()
213206
.subject("CN=Test")
214-
.serial_number(42)
215207
.signing_key_pair(rsa::SigningKey::new().unwrap())
216208
.validity(Duration::from_days_unchecked(13))
217209
.build()
@@ -221,16 +213,10 @@ mod tests {
221213
&ca.ca_cert().tbs_certificate,
222214
"CN=Test",
223215
Duration::from_days_unchecked(13),
224-
Some(42),
225216
)
226217
}
227218

228-
fn assert_ca_cert_attributes(
229-
ca_cert: &TbsCertificateInner,
230-
subject: &str,
231-
validity: Duration,
232-
serial_number: Option<u64>,
233-
) {
219+
fn assert_ca_cert_attributes(ca_cert: &TbsCertificateInner, subject: &str, validity: Duration) {
234220
assert_eq!(ca_cert.subject, subject.parse().unwrap());
235221

236222
let not_before = ca_cert.validity.not_before.to_system_time();
@@ -241,11 +227,5 @@ mod tests {
241227
.expect("Failed to calculate duration between notBefore and notAfter"),
242228
*validity
243229
);
244-
245-
if let Some(serial_number) = serial_number {
246-
assert_eq!(ca_cert.serial_number, SerialNumber::from(serial_number))
247-
} else {
248-
assert_ne!(ca_cert.serial_number, SerialNumber::from(0_u64))
249-
}
250230
}
251231
}

crates/stackable-certs/src/cert_builder.rs

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,6 @@ where
111111
#[builder(default = DEFAULT_CERTIFICATE_VALIDITY)]
112112
validity: Duration,
113113

114-
/// Serial number of the generated certificate.
115-
///
116-
/// If not specified a random serial will be generated.
117-
serial_number: Option<u64>,
118-
119114
/// Cryptographic keypair used to for the certificates.
120115
///
121116
/// If not specified a random keypair will be generated.
@@ -143,9 +138,6 @@ where
143138
<KP::SigningKey as signature::Keypair>::VerifyingKey: EncodePublicKey,
144139
{
145140
pub fn build(self) -> Result<CertificatePair<KP>, CreateCertificateError<KP::Error>> {
146-
let serial_number =
147-
SerialNumber::from(self.serial_number.unwrap_or_else(|| rand::random::<u64>()));
148-
149141
let validity = Validity::from_now(*self.validity).context(ParseValiditySnafu)?;
150142
let subject: Name = self.subject.parse().context(ParseSubjectSnafu {
151143
subject: self.subject,
@@ -154,6 +146,7 @@ where
154146
Some(key_pair) => key_pair,
155147
None => KP::new().context(CreateKeyPairSnafu)?,
156148
};
149+
let serial_number = SerialNumber::from(rand::random::<u64>());
157150

158151
let ca_validity = self.signed_by.ca_cert().tbs_certificate.validity;
159152
let ca_not_after = ca_validity.not_after.to_system_time();
@@ -261,7 +254,6 @@ mod tests {
261254
&[],
262255
&[],
263256
DEFAULT_CERTIFICATE_VALIDITY,
264-
None,
265257
);
266258
}
267259

@@ -281,7 +273,6 @@ mod tests {
281273
.subject("CN=trino-coordinator-default-0")
282274
.subject_alterative_dns_names(&sans)
283275
.subject_alterative_ip_addresses(&san_ips)
284-
.serial_number(08121997)
285276
.validity(Duration::from_days_unchecked(42))
286277
.key_pair(rsa::SigningKey::new().unwrap())
287278
.signed_by(&ca)
@@ -294,7 +285,6 @@ mod tests {
294285
&sans,
295286
&san_ips,
296287
Duration::from_days_unchecked(42),
297-
Some(08121997),
298288
);
299289
}
300290

@@ -304,7 +294,6 @@ mod tests {
304294
sans: &[&str],
305295
san_ips: &[IpAddr],
306296
validity: Duration,
307-
serial_number: Option<u64>,
308297
) {
309298
assert_eq!(certificate.subject, subject.parse().unwrap());
310299

@@ -345,12 +334,6 @@ mod tests {
345334
.expect("Failed to calculate duration between notBefore and notAfter"),
346335
*validity
347336
);
348-
349-
if let Some(serial_number) = serial_number {
350-
assert_eq!(certificate.serial_number, SerialNumber::from(serial_number))
351-
} else {
352-
assert_ne!(certificate.serial_number, SerialNumber::from(0_u64))
353-
}
354337
}
355338

356339
fn bytes_to_ip_addr(bytes: &[u8]) -> IpAddr {

0 commit comments

Comments
 (0)