@@ -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 > ,
@@ -145,8 +148,6 @@ impl AttestedCertificateResolver {
145148 let subject_alt_names =
146149 normalized_subject_alt_names ( subject. as_str ( ) , subject_alt_names) ;
147150
148- // Generate keypair
149- let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) ?;
150151 let key_pair_der = key_pair. serialize_der ( ) ;
151152 let key = Self :: load_signing_key ( & key_pair, provider) ?;
152153
@@ -179,14 +180,14 @@ impl AttestedCertificateResolver {
179180 /// Create an attested certificate chain - either self-signed or with
180181 /// the provided CA
181182 async fn issue_ra_cert_chain (
182- key : & KeyPair ,
183+ key_pair : & KeyPair ,
183184 ca : Option < & CaCert > ,
184185 subject : & str ,
185186 subject_alt_names : & [ String ] ,
186187 attestation_generator : & AttestationGenerator ,
187188 ) -> Result < Vec < CertificateDer < ' static > > , AttestedTlsError > {
188189 tracing:: debug!( "Generating new remote-attested ceritifcate for {subject}" ) ;
189- let pubkey = key . public_key_der ( ) ;
190+ let pubkey = key_pair . public_key_der ( ) ;
190191 let now = SystemTime :: now ( ) ;
191192 let not_after = now + CERTIFICATE_VALIDITY ;
192193
@@ -200,7 +201,7 @@ impl AttestedCertificateResolver {
200201 . await ?;
201202
202203 let cert_request = CertRequest :: builder ( )
203- . key ( key )
204+ . key ( key_pair )
204205 . subject ( subject)
205206 . alt_names ( subject_alt_names)
206207 . not_before ( now)
@@ -842,8 +843,10 @@ mod tests {
842843 #[ tokio:: test( flavor = "multi_thread" ) ]
843844 async fn certificate_resolver_creates_initial_certificate ( ) {
844845 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
846+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
845847 let resolver = AttestedCertificateResolver :: new_with_provider (
846848 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
849+ & key_pair,
847850 None ,
848851 "foo" . to_string ( ) ,
849852 vec ! [ ] ,
@@ -861,8 +864,10 @@ mod tests {
861864 async fn server_and_client_configs_complete_a_handshake ( ) {
862865 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
863866 let server_name = "foo" ;
867+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
864868 let resolver = AttestedCertificateResolver :: new_with_provider (
865869 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
870+ & key_pair,
866871 None ,
867872 server_name. to_string ( ) ,
868873 vec ! [ ] ,
@@ -910,12 +915,14 @@ mod tests {
910915 #[ tokio:: test( flavor = "multi_thread" ) ]
911916 async fn ca_signed_server_and_client_configs_complete_a_handshake ( ) {
912917 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
918+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
913919 let server_name = "foo" ;
914920 let ca = test_ca ( ) ;
915921 let ca_cert = CertificateDer :: from_pem_slice ( ca. pem_cert . as_bytes ( ) ) . unwrap ( ) ;
916922
917923 let resolver = AttestedCertificateResolver :: new_with_provider (
918924 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
925+ & key_pair,
919926 Some ( ca) ,
920927 server_name. to_string ( ) ,
921928 vec ! [ ] ,
@@ -971,8 +978,10 @@ mod tests {
971978 #[ tokio:: test( flavor = "multi_thread" ) ]
972979 async fn certificate_is_renewed_before_expiry ( ) {
973980 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
981+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
974982 let resolver = AttestedCertificateResolver :: new_with_provider (
975983 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
984+ & key_pair,
976985 None ,
977986 "foo" . to_string ( ) ,
978987 vec ! [ ] ,
@@ -997,10 +1006,12 @@ mod tests {
9971006 #[ tokio:: test( flavor = "multi_thread" ) ]
9981007 async fn server_and_client_configs_complete_a_mutual_auth_handshake ( ) {
9991008 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1009+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
10001010 let server_name = "foo" ;
10011011
10021012 let server_resolver = AttestedCertificateResolver :: new_with_provider (
10031013 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1014+ & key_pair,
10041015 None ,
10051016 server_name. to_string ( ) ,
10061017 vec ! [ ] ,
@@ -1011,6 +1022,7 @@ mod tests {
10111022
10121023 let client_resolver = AttestedCertificateResolver :: new_with_provider (
10131024 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1025+ & key_pair,
10141026 None ,
10151027 "client" . to_string ( ) ,
10161028 vec ! [ ] ,
@@ -1065,10 +1077,12 @@ mod tests {
10651077 #[ tokio:: test( flavor = "multi_thread" ) ]
10661078 async fn alternate_san_completes_a_handshake ( ) {
10671079 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1080+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
10681081 let subject = "foo" ;
10691082 let alternate_name = "bar" ;
10701083 let resolver = AttestedCertificateResolver :: new_with_provider (
10711084 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1085+ & key_pair,
10721086 None ,
10731087 subject. to_string ( ) ,
10741088 vec ! [ alternate_name. to_string( ) , subject. to_string( ) ] ,
@@ -1158,8 +1172,10 @@ mod tests {
11581172 #[ tokio:: test( flavor = "multi_thread" ) ]
11591173 async fn self_signed_attested_certificate_with_wrong_name_is_rejected ( ) {
11601174 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1175+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
11611176 let resolver = AttestedCertificateResolver :: new_with_provider (
11621177 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1178+ & key_pair,
11631179 None ,
11641180 "foo" . to_string ( ) ,
11651181 vec ! [ ] ,
@@ -1191,8 +1207,10 @@ mod tests {
11911207 #[ tokio:: test( flavor = "multi_thread" ) ]
11921208 async fn certificate_binding_changes_when_identity_changes ( ) {
11931209 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1210+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
11941211 let resolver = AttestedCertificateResolver :: new_with_provider (
11951212 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1213+ & key_pair,
11961214 None ,
11971215 "foo" . to_string ( ) ,
11981216 vec ! [ ] ,
@@ -1231,8 +1249,10 @@ mod tests {
12311249 #[ tokio:: test( flavor = "multi_thread" ) ]
12321250 async fn attestation_rejection_returns_application_verification_failure ( ) {
12331251 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1252+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
12341253 let resolver = AttestedCertificateResolver :: new_with_provider (
12351254 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1255+ & key_pair,
12361256 None ,
12371257 "foo" . to_string ( ) ,
12381258 vec ! [ ] ,
@@ -1264,8 +1284,10 @@ mod tests {
12641284 #[ tokio:: test( flavor = "multi_thread" ) ]
12651285 async fn verifier_reuses_trusted_certificate_cache ( ) {
12661286 let provider: Arc < CryptoProvider > = aws_lc_rs:: default_provider ( ) . into ( ) ;
1287+ let key_pair = KeyPair :: generate_for ( & PKCS_ECDSA_P256_SHA256 ) . unwrap ( ) ;
12671288 let resolver = AttestedCertificateResolver :: new_with_provider (
12681289 AttestationGenerator :: new ( AttestationType :: DcapTdx , None ) . unwrap ( ) ,
1290+ & key_pair,
12691291 None ,
12701292 "foo" . to_string ( ) ,
12711293 vec ! [ ] ,
0 commit comments