Skip to content

Commit d631db9

Browse files
committed
Deduplicate SignableCertificateParams construction
1 parent 105f7a7 commit d631db9

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

rcgen/src/certificate.rs

+20-14
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,10 @@ impl CertificateParams {
144144
) -> Result<Certificate, Error> {
145145
let issuer = Issuer::new(&issuer, issuer_key);
146146
Ok(Certificate {
147-
der: SignableCertificateParams {
148-
params: self,
149-
pub_key: public_key,
150-
issuer: &issuer,
151-
}
152-
.signed(issuer.key_pair)?
153-
.into(),
147+
der: self
148+
.signable(public_key, &issuer)
149+
.signed(issuer.key_pair)?
150+
.into(),
154151
})
155152
}
156153

@@ -161,13 +158,10 @@ impl CertificateParams {
161158
pub fn self_signed(&self, key_pair: &impl SigningKey) -> Result<Certificate, Error> {
162159
let issuer = Issuer::new(self, key_pair);
163160
Ok(Certificate {
164-
der: SignableCertificateParams {
165-
params: self,
166-
pub_key: &*key_pair,
167-
issuer: &issuer,
168-
}
169-
.signed(issuer.key_pair)?
170-
.into(),
161+
der: self
162+
.signable(&*key_pair, &issuer)
163+
.signed(issuer.key_pair)?
164+
.into(),
171165
})
172166
}
173167

@@ -178,6 +172,18 @@ impl CertificateParams {
178172
.derive(&key.subject_public_key_info())
179173
}
180174

175+
pub(crate) fn signable<'a, P, S>(
176+
&'a self,
177+
pub_key: &'a P,
178+
issuer: &'a Issuer<'a, S>,
179+
) -> SignableCertificateParams<'a, P, S> {
180+
SignableCertificateParams {
181+
params: self,
182+
pub_key,
183+
issuer,
184+
}
185+
}
186+
181187
/// Parses an existing ca certificate from the ASCII PEM format.
182188
///
183189
/// See [`from_ca_cert_der`](Self::from_ca_cert_der) for more details.

rcgen/src/csr.rs

+8-10
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ use yasna::{models::ObjectIdentifier, DERWriter, Tag};
88
#[cfg(feature = "pem")]
99
use crate::ENCODE_CONFIG;
1010
use crate::{
11-
certificate::SignableCertificateParams, key_pair::serialize_public_key_der, oid,
12-
write_distinguished_name, write_x509_extension, Attribute, Certificate, CertificateParams,
13-
Error, IsCa, Issuer, PublicKeyData, SignatureAlgorithm, SigningKey, ToDer,
11+
key_pair::serialize_public_key_der, oid, write_distinguished_name, write_x509_extension,
12+
Attribute, Certificate, CertificateParams, Error, IsCa, Issuer, PublicKeyData,
13+
SignatureAlgorithm, SigningKey, ToDer,
1414
};
1515
#[cfg(feature = "x509-parser")]
1616
use crate::{DistinguishedName, SanType};
@@ -345,13 +345,11 @@ impl CertificateSigningRequestParams {
345345
) -> Result<Certificate, Error> {
346346
let issuer = Issuer::new(issuer, issuer_key);
347347
Ok(Certificate {
348-
der: SignableCertificateParams {
349-
params: &self.params,
350-
pub_key: &self.public_key,
351-
issuer: &issuer,
352-
}
353-
.signed(issuer.key_pair)?
354-
.into(),
348+
der: self
349+
.params
350+
.signable(&self.public_key, &issuer)
351+
.signed(issuer.key_pair)?
352+
.into(),
355353
})
356354
}
357355
}

0 commit comments

Comments
 (0)