@@ -233,7 +233,7 @@ impl Account {
233233 old_key : Jwk ,
234234 }
235235
236- let ( new_key, new_key_pkcs8) = Key :: generate ( ) ?;
236+ let ( new_key, new_key_pkcs8) = Key :: generate_pkcs8 ( ) ?;
237237 let mut header = new_key. header ( Some ( "nonce" ) , new_key_url) ;
238238 header. nonce = None ;
239239 let payload = NewKey {
@@ -359,10 +359,7 @@ impl AccountInner {
359359 ) -> Result < Self , Error > {
360360 Ok ( Self {
361361 id : credentials. id ,
362- key : match credentials. key_pkcs8 {
363- PrivateKeyDer :: Pkcs8 ( inner) => Key :: from_pkcs8_der ( inner) ?,
364- _ => return Err ( "unsupported key format, expected PKCS#8" . into ( ) ) ,
365- } ,
362+ key : Key :: from_pkcs8_der ( credentials. key_pkcs8 ) ?,
366363 client : Arc :: new ( match ( credentials. directory , credentials. urls ) {
367364 ( Some ( directory_url) , _) => Client :: new ( directory_url, http) . await ?,
368365 ( None , Some ( directory) ) => Client {
@@ -441,7 +438,7 @@ impl AccountBuilder {
441438 directory_url : String ,
442439 external_account : Option < & ExternalAccountKey > ,
443440 ) -> Result < ( Account , AccountCredentials ) , Error > {
444- let ( key, key_pkcs8) = Key :: generate ( ) ?;
441+ let ( key, key_pkcs8) = Key :: generate_pkcs8 ( ) ?;
445442 Self :: create_inner (
446443 account,
447444 ( key, key_pkcs8) ,
@@ -468,7 +465,10 @@ impl AccountBuilder {
468465 terms_of_service_agreed : true ,
469466 only_return_existing : true ,
470467 } ,
471- key,
468+ match key {
469+ ( key, PrivateKeyDer :: Pkcs8 ( pkcs8) ) => ( key, pkcs8) ,
470+ _ => return Err ( "unsupported key format, expected PKCS#8" . into ( ) ) ,
471+ } ,
472472 None ,
473473 Client :: new ( directory_url, self . http ) . await ?,
474474 )
@@ -497,7 +497,7 @@ impl AccountBuilder {
497497
498498 async fn create_inner (
499499 account : & NewAccount < ' _ > ,
500- ( key, key_pkcs8) : ( Key , PrivateKeyDer < ' static > ) ,
500+ ( key, key_pkcs8) : ( Key , PrivatePkcs8KeyDer < ' static > ) ,
501501 external_account : Option < & ExternalAccountKey > ,
502502 client : Client ,
503503 ) -> Result < ( Account , AccountCredentials ) , Error > {
@@ -562,14 +562,21 @@ pub struct Key {
562562
563563impl Key {
564564 /// Generate a new ECDSA P-256 key pair
565+ #[ deprecated( since = "0.8.3" , note = "use `generate_pkcs8()` instead" ) ]
565566 pub fn generate ( ) -> Result < ( Self , PrivateKeyDer < ' static > ) , Error > {
567+ let ( key, pkcs8) = Self :: generate_pkcs8 ( ) ?;
568+ Ok ( ( key, PrivateKeyDer :: Pkcs8 ( pkcs8) ) )
569+ }
570+
571+ /// Generate a new ECDSA P-256 key pair
572+ pub fn generate_pkcs8 ( ) -> Result < ( Self , PrivatePkcs8KeyDer < ' static > ) , Error > {
566573 let rng = crypto:: SystemRandom :: new ( ) ;
567574 let pkcs8 =
568575 crypto:: EcdsaKeyPair :: generate_pkcs8 ( & crypto:: ECDSA_P256_SHA256_FIXED_SIGNING , & rng)
569576 . map_err ( |_| Error :: Crypto ) ?;
570577 Ok ( (
571578 Self :: new ( pkcs8. as_ref ( ) , rng) ?,
572- PrivatePkcs8KeyDer :: from ( pkcs8. as_ref ( ) . to_vec ( ) ) . into ( ) ,
579+ PrivatePkcs8KeyDer :: from ( pkcs8. as_ref ( ) . to_vec ( ) ) ,
573580 ) )
574581 }
575582
0 commit comments