@@ -233,7 +233,7 @@ impl Account {
233
233
old_key : Jwk ,
234
234
}
235
235
236
- let ( new_key, new_key_pkcs8) = Key :: generate ( ) ?;
236
+ let ( new_key, new_key_pkcs8) = Key :: generate_pkcs8 ( ) ?;
237
237
let mut header = new_key. header ( Some ( "nonce" ) , new_key_url) ;
238
238
header. nonce = None ;
239
239
let payload = NewKey {
@@ -359,10 +359,7 @@ impl AccountInner {
359
359
) -> Result < Self , Error > {
360
360
Ok ( Self {
361
361
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 ) ?,
366
363
client : Arc :: new ( match ( credentials. directory , credentials. urls ) {
367
364
( Some ( directory_url) , _) => Client :: new ( directory_url, http) . await ?,
368
365
( None , Some ( directory) ) => Client {
@@ -441,7 +438,7 @@ impl AccountBuilder {
441
438
directory_url : String ,
442
439
external_account : Option < & ExternalAccountKey > ,
443
440
) -> Result < ( Account , AccountCredentials ) , Error > {
444
- let ( key, key_pkcs8) = Key :: generate ( ) ?;
441
+ let ( key, key_pkcs8) = Key :: generate_pkcs8 ( ) ?;
445
442
Self :: create_inner (
446
443
account,
447
444
( key, key_pkcs8) ,
@@ -468,7 +465,10 @@ impl AccountBuilder {
468
465
terms_of_service_agreed : true ,
469
466
only_return_existing : true ,
470
467
} ,
471
- key,
468
+ match key {
469
+ ( key, PrivateKeyDer :: Pkcs8 ( pkcs8) ) => ( key, pkcs8) ,
470
+ _ => return Err ( "unsupported key format, expected PKCS#8" . into ( ) ) ,
471
+ } ,
472
472
None ,
473
473
Client :: new ( directory_url, self . http ) . await ?,
474
474
)
@@ -497,7 +497,7 @@ impl AccountBuilder {
497
497
498
498
async fn create_inner (
499
499
account : & NewAccount < ' _ > ,
500
- ( key, key_pkcs8) : ( Key , PrivateKeyDer < ' static > ) ,
500
+ ( key, key_pkcs8) : ( Key , PrivatePkcs8KeyDer < ' static > ) ,
501
501
external_account : Option < & ExternalAccountKey > ,
502
502
client : Client ,
503
503
) -> Result < ( Account , AccountCredentials ) , Error > {
@@ -562,14 +562,21 @@ pub struct Key {
562
562
563
563
impl Key {
564
564
/// Generate a new ECDSA P-256 key pair
565
+ #[ deprecated( since = "0.8.3" , note = "use `generate_pkcs8()` instead" ) ]
565
566
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 > {
566
573
let rng = crypto:: SystemRandom :: new ( ) ;
567
574
let pkcs8 =
568
575
crypto:: EcdsaKeyPair :: generate_pkcs8 ( & crypto:: ECDSA_P256_SHA256_FIXED_SIGNING , & rng)
569
576
. map_err ( |_| Error :: Crypto ) ?;
570
577
Ok ( (
571
578
Self :: new ( pkcs8. as_ref ( ) , rng) ?,
572
- PrivatePkcs8KeyDer :: from ( pkcs8. as_ref ( ) . to_vec ( ) ) . into ( ) ,
579
+ PrivatePkcs8KeyDer :: from ( pkcs8. as_ref ( ) . to_vec ( ) ) ,
573
580
) )
574
581
}
575
582
0 commit comments