Skip to content

Commit aff6f74

Browse files
committed
Deduplicate Issuer construction
1 parent 83a4398 commit aff6f74

File tree

4 files changed

+15
-28
lines changed

4 files changed

+15
-28
lines changed

rcgen/src/certificate.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,7 @@ impl CertificateParams {
143143
issuer: &CertificateParams,
144144
issuer_key: &impl SigningKey,
145145
) -> Result<Certificate, Error> {
146-
let issuer = Issuer {
147-
distinguished_name: &issuer.distinguished_name,
148-
key_identifier_method: &issuer.key_identifier_method,
149-
key_usages: &issuer.key_usages,
150-
key_pair: issuer_key,
151-
};
152-
146+
let issuer = Issuer::new(&issuer, issuer_key);
153147
Ok(Certificate {
154148
der: self.serialize_der_with_signer(public_key, issuer)?,
155149
})
@@ -160,13 +154,7 @@ impl CertificateParams {
160154
/// The returned [`Certificate`] may be serialized using [`Certificate::der`] and
161155
/// [`Certificate::pem`].
162156
pub fn self_signed(&self, key_pair: &impl SigningKey) -> Result<Certificate, Error> {
163-
let issuer = Issuer {
164-
distinguished_name: &self.distinguished_name,
165-
key_identifier_method: &self.key_identifier_method,
166-
key_usages: &self.key_usages,
167-
key_pair,
168-
};
169-
157+
let issuer = Issuer::new(self, key_pair);
170158
Ok(Certificate {
171159
der: self.serialize_der_with_signer(key_pair, issuer)?,
172160
})

rcgen/src/crl.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,7 @@ impl CertificateRevocationListParams {
193193
return Err(Error::InvalidCrlNextUpdate);
194194
}
195195

196-
let issuer = Issuer {
197-
distinguished_name: &issuer.distinguished_name,
198-
key_identifier_method: &issuer.key_identifier_method,
199-
key_usages: &issuer.key_usages,
200-
key_pair: issuer_key,
201-
};
202-
196+
let issuer = Issuer::new(issuer, issuer_key);
203197
if !issuer.key_usages.is_empty() && !issuer.key_usages.contains(&KeyUsagePurpose::CrlSign) {
204198
return Err(Error::IssuerNotCrlSigner);
205199
}

rcgen/src/csr.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -205,13 +205,7 @@ impl CertificateSigningRequestParams {
205205
issuer: &CertificateParams,
206206
issuer_key: &impl SigningKey,
207207
) -> Result<Certificate, Error> {
208-
let issuer = Issuer {
209-
distinguished_name: &issuer.distinguished_name,
210-
key_identifier_method: &issuer.key_identifier_method,
211-
key_usages: &issuer.key_usages,
212-
key_pair: issuer_key,
213-
};
214-
208+
let issuer = Issuer::new(issuer, issuer_key);
215209
Ok(Certificate {
216210
der: self
217211
.params

rcgen/src/lib.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,17 @@ struct Issuer<'a, S> {
139139
key_pair: &'a S,
140140
}
141141

142+
impl<'a, S: SigningKey> Issuer<'a, S> {
143+
fn new(params: &'a CertificateParams, key_pair: &'a S) -> Self {
144+
Self {
145+
distinguished_name: &params.distinguished_name,
146+
key_identifier_method: &params.key_identifier_method,
147+
key_usages: &params.key_usages,
148+
key_pair,
149+
}
150+
}
151+
}
152+
142153
// https://tools.ietf.org/html/rfc5280#section-4.1.1
143154

144155
// Example certs usable as reference:

0 commit comments

Comments
 (0)