@@ -5,13 +5,18 @@ use crate::error::Result;
55use crate :: ssh:: { private_key, public_key} ;
66use ed25519_dalek:: { SecretKey , SigningKey , VerifyingKey } ;
77use rand:: rngs:: OsRng ;
8- use rand:: RngCore ;
8+ use rand:: TryRngCore ;
99
1010/// Generates an ed25519 key pair and returns the public key and private key as hex strings.
1111pub fn generate_key_pair ( ) -> Result < ( String , String ) > {
1212 // Generate a random secret key
1313 let mut secret_key_bytes = [ 0u8 ; 32 ] ;
14- OsRng . fill_bytes ( & mut secret_key_bytes) ;
14+ OsRng . try_fill_bytes ( & mut secret_key_bytes) . map_err ( |e| {
15+ crate :: error:: VanityError :: KeyGenerationError ( format ! (
16+ "Failed to generate random bytes: {}" ,
17+ e
18+ ) )
19+ } ) ?;
1520 let secret_key = SecretKey :: from ( secret_key_bytes) ;
1621 let signing_key = SigningKey :: from ( secret_key) ;
1722 let verifying_key = VerifyingKey :: from ( & signing_key) ;
@@ -32,7 +37,12 @@ pub fn generate_key_pair() -> Result<(String, String)> {
3237pub fn generate_openssh_key_pair ( comment : Option < & str > ) -> Result < ( String , String ) > {
3338 // Generate a random secret key
3439 let mut secret_key_bytes = [ 0u8 ; 32 ] ;
35- OsRng . fill_bytes ( & mut secret_key_bytes) ;
40+ OsRng . try_fill_bytes ( & mut secret_key_bytes) . map_err ( |e| {
41+ crate :: error:: VanityError :: KeyGenerationError ( format ! (
42+ "Failed to generate random bytes: {}" ,
43+ e
44+ ) )
45+ } ) ?;
3646 let secret_key = SecretKey :: from ( secret_key_bytes) ;
3747 let signing_key = SigningKey :: from ( secret_key) ;
3848 let verifying_key = VerifyingKey :: from ( & signing_key) ;
0 commit comments