@@ -119,12 +119,14 @@ impl AttestedCertificateResolver {
119119 /// certificates will be self signed
120120 pub async fn new (
121121 attestation_generator : AttestationGenerator ,
122+ key_pair : & KeyPair ,
122123 ca : Option < CaCert > ,
123124 subject : String ,
124125 subject_alt_names : Vec < String > ,
125126 ) -> Result < Self , AttestedTlsError > {
126127 Self :: new_with_provider (
127128 attestation_generator,
129+ key_pair,
128130 ca,
129131 subject,
130132 subject_alt_names,
@@ -136,6 +138,7 @@ impl AttestedCertificateResolver {
136138 /// Also provide a crypto provider
137139 pub async fn new_with_provider (
138140 attestation_generator : AttestationGenerator ,
141+ key_pair : & KeyPair ,
139142 ca : Option < CaCert > ,
140143 subject : String ,
141144 subject_alt_names : Vec < String > ,
@@ -144,8 +147,6 @@ impl AttestedCertificateResolver {
144147 debug_assert ! ( CERTIFICATE_RENEWAL_LEAD_TIME < CERTIFICATE_VALIDITY ) ;
145148 let subject_alt_names = normalized_subject_alt_names ( subject. as_str ( ) , subject_alt_names) ;
146149
147- // Generate keypair
148- let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) ?;
149150 let key_pair_der = key_pair. serialize_der ( ) ;
150151 let key = Self :: load_signing_key ( & key_pair, provider) ?;
151152
@@ -178,14 +179,14 @@ impl AttestedCertificateResolver {
178179 /// Create an attested certificate chain - either self-signed or with
179180 /// the provided CA
180181 async fn issue_ra_cert_chain (
181- key : & KeyPair ,
182+ key_pair : & KeyPair ,
182183 ca : Option < & CaCert > ,
183184 subject : & str ,
184185 subject_alt_names : & [ String ] ,
185186 attestation_generator : & AttestationGenerator ,
186187 ) -> Result < Vec < CertificateDer < ' static > > , AttestedTlsError > {
187188 tracing:: debug!( "Generating new remote-attested ceritifcate for {subject}" ) ;
188- let pubkey = key . public_key_der ( ) ;
189+ let pubkey = key_pair . public_key_der ( ) ;
189190 let now = SystemTime :: now ( ) ;
190191 let not_after = now + CERTIFICATE_VALIDITY ;
191192
@@ -199,7 +200,7 @@ impl AttestedCertificateResolver {
199200 . await ?;
200201
201202 let cert_request = CertRequest :: builder ( )
202- . key ( key )
203+ . key ( key_pair )
203204 . subject ( subject)
204205 . alt_names ( subject_alt_names)
205206 . not_before ( now)
@@ -840,8 +841,10 @@ mod tests {
840841 #[ tokio:: test( flavor = "multi_thread" ) ]
841842 async fn certificate_resolver_creates_initial_certificate ( ) {
842843 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
844+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
843845 let resolver = AttestedCertificateResolver :: new_with_provider (
844846 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
847+ & key_pair,
845848 None ,
846849 "foo" . to_string ( ) ,
847850 vec ! [ ] ,
@@ -859,8 +862,10 @@ mod tests {
859862 async fn server_and_client_configs_complete_a_handshake ( ) {
860863 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
861864 let server_name = "foo" ;
865+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
862866 let resolver = AttestedCertificateResolver :: new_with_provider (
863867 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
868+ & key_pair,
864869 None ,
865870 server_name. to_string ( ) ,
866871 vec ! [ ] ,
@@ -908,12 +913,14 @@ mod tests {
908913 #[ tokio:: test( flavor = "multi_thread" ) ]
909914 async fn ca_signed_server_and_client_configs_complete_a_handshake ( ) {
910915 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
916+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
911917 let server_name = "foo" ;
912918 let ca = test_ca ( ) ;
913919 let ca_cert = CertificateDer :: from_pem_slice ( ca. pem_cert . as_bytes ( ) ) . unwrap ( ) ;
914920
915921 let resolver = AttestedCertificateResolver :: new_with_provider (
916922 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
923+ & key_pair,
917924 Some ( ca) ,
918925 server_name. to_string ( ) ,
919926 vec ! [ ] ,
@@ -969,8 +976,10 @@ mod tests {
969976 #[ tokio:: test( flavor = "multi_thread" ) ]
970977 async fn certificate_is_renewed_before_expiry ( ) {
971978 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
979+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
972980 let resolver = AttestedCertificateResolver :: new_with_provider (
973981 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
982+ & key_pair,
974983 None ,
975984 "foo" . to_string ( ) ,
976985 vec ! [ ] ,
@@ -995,10 +1004,12 @@ mod tests {
9951004 #[ tokio:: test( flavor = "multi_thread" ) ]
9961005 async fn server_and_client_configs_complete_a_mutual_auth_handshake ( ) {
9971006 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1007+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
9981008 let server_name = "foo" ;
9991009
10001010 let server_resolver = AttestedCertificateResolver :: new_with_provider (
10011011 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1012+ & key_pair,
10021013 None ,
10031014 server_name. to_string ( ) ,
10041015 vec ! [ ] ,
@@ -1009,6 +1020,7 @@ mod tests {
10091020
10101021 let client_resolver = AttestedCertificateResolver :: new_with_provider (
10111022 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1023+ & key_pair,
10121024 None ,
10131025 "client" . to_string ( ) ,
10141026 vec ! [ ] ,
@@ -1063,10 +1075,12 @@ mod tests {
10631075 #[ tokio:: test( flavor = "multi_thread" ) ]
10641076 async fn alternate_san_completes_a_handshake ( ) {
10651077 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1078+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
10661079 let subject = "foo" ;
10671080 let alternate_name = "bar" ;
10681081 let resolver = AttestedCertificateResolver :: new_with_provider (
10691082 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1083+ & key_pair,
10701084 None ,
10711085 subject. to_string ( ) ,
10721086 vec ! [ alternate_name. to_string( ) , subject. to_string( ) ] ,
@@ -1156,8 +1170,10 @@ mod tests {
11561170 #[ tokio:: test( flavor = "multi_thread" ) ]
11571171 async fn self_signed_attested_certificate_with_wrong_name_is_rejected ( ) {
11581172 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1173+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
11591174 let resolver = AttestedCertificateResolver :: new_with_provider (
11601175 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1176+ & key_pair,
11611177 None ,
11621178 "foo" . to_string ( ) ,
11631179 vec ! [ ] ,
@@ -1189,8 +1205,10 @@ mod tests {
11891205 #[ tokio:: test( flavor = "multi_thread" ) ]
11901206 async fn certificate_binding_changes_when_identity_changes ( ) {
11911207 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1208+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
11921209 let resolver = AttestedCertificateResolver :: new_with_provider (
11931210 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1211+ & key_pair,
11941212 None ,
11951213 "foo" . to_string ( ) ,
11961214 vec ! [ ] ,
@@ -1229,8 +1247,10 @@ mod tests {
12291247 #[ tokio:: test( flavor = "multi_thread" ) ]
12301248 async fn attestation_rejection_returns_application_verification_failure ( ) {
12311249 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1250+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
12321251 let resolver = AttestedCertificateResolver :: new_with_provider (
12331252 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1253+ & key_pair,
12341254 None ,
12351255 "foo" . to_string ( ) ,
12361256 vec ! [ ] ,
@@ -1262,8 +1282,10 @@ mod tests {
12621282 #[ tokio:: test( flavor = "multi_thread" ) ]
12631283 async fn verifier_reuses_trusted_certificate_cache ( ) {
12641284 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1285+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
12651286 let resolver = AttestedCertificateResolver :: new_with_provider (
12661287 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1288+ & key_pair,
12671289 None ,
12681290 "foo" . to_string ( ) ,
12691291 vec ! [ ] ,
0 commit comments