@@ -25,7 +25,6 @@ use crate::{
25
25
#[ derive( Debug , Clone ) ]
26
26
pub struct Certificate {
27
27
pub ( crate ) params : CertificateParams ,
28
- pub ( crate ) subject_public_key_info : Vec < u8 > ,
29
28
pub ( crate ) der : CertificateDer < ' static > ,
30
29
}
31
30
@@ -34,13 +33,6 @@ impl Certificate {
34
33
pub fn params ( & self ) -> & CertificateParams {
35
34
& self . params
36
35
}
37
- /// Calculates a subject key identifier for the certificate subject's public key.
38
- /// This key identifier is used in the SubjectKeyIdentifier X.509v3 extension.
39
- pub fn key_identifier ( & self ) -> Vec < u8 > {
40
- self . params
41
- . key_identifier_method
42
- . derive ( & self . subject_public_key_info )
43
- }
44
36
/// Get the certificate in DER encoded format.
45
37
///
46
38
/// [`CertificateDer`] implements `Deref<Target = [u8]>` and `AsRef<[u8]>`, so you can easily
@@ -169,11 +161,7 @@ impl CertificateParams {
169
161
} ;
170
162
171
163
let der = self . serialize_der_with_signer ( public_key, issuer) ?;
172
- Ok ( Certificate {
173
- params : self ,
174
- subject_public_key_info : public_key. subject_public_key_info ( ) ,
175
- der,
176
- } )
164
+ Ok ( Certificate { params : self , der } )
177
165
}
178
166
179
167
/// Generates a new self-signed certificate from the given parameters.
@@ -188,13 +176,15 @@ impl CertificateParams {
188
176
key_pair,
189
177
} ;
190
178
191
- let subject_public_key_info = key_pair. subject_public_key_info ( ) ;
192
179
let der = self . serialize_der_with_signer ( key_pair, issuer) ?;
193
- Ok ( Certificate {
194
- params : self ,
195
- subject_public_key_info,
196
- der,
197
- } )
180
+ Ok ( Certificate { params : self , der } )
181
+ }
182
+
183
+ /// Calculates a subject key identifier for the certificate subject's public key.
184
+ /// This key identifier is used in the SubjectKeyIdentifier X.509v3 extension.
185
+ pub fn key_identifier ( & self , key : & impl PublicKeyData ) -> Vec < u8 > {
186
+ self . key_identifier_method
187
+ . derive ( & key. subject_public_key_info ( ) )
198
188
}
199
189
200
190
/// Parses an existing ca certificate from the ASCII PEM format.
@@ -1489,8 +1479,9 @@ PITGdT9dgN88nHPCle0B1+OY+OZ5
1489
1479
) ;
1490
1480
1491
1481
let ca_kp = KeyPair :: from_pem ( ca_key) . unwrap ( ) ;
1482
+ let key_id = params. key_identifier ( & ca_kp) ;
1492
1483
let ca_cert = params. self_signed ( & ca_kp) . unwrap ( ) ;
1493
- assert_eq ! ( & ca_ski, & ca_cert . key_identifier ( ) ) ;
1484
+ assert_eq ! ( & ca_ski, & key_id ) ;
1494
1485
1495
1486
let ( _, x509_ca) = x509_parser:: parse_x509_certificate ( ca_cert. der ( ) ) . unwrap ( ) ;
1496
1487
assert_eq ! (
0 commit comments