@@ -127,7 +127,11 @@ impl<const B: usize> SecretKey<B> {
127
127
* secret. to_bytes ( ) . as_ref ( )
128
128
}
129
129
Curve :: Ed25519 => {
130
- let secret = ed25519_dalek:: SecretKey :: generate ( & mut Self :: rng7 ( path) ) ;
130
+ use rand_chacha7:: rand_core:: RngCore ;
131
+ let mut rng = Self :: rng7 ( path) ;
132
+ let mut bytes = [ 0u8 ; 32 ] ;
133
+ rng. fill_bytes ( & mut bytes) ;
134
+ let secret = ed25519_dalek:: SigningKey :: from_bytes ( & bytes) ;
131
135
132
136
secret. to_bytes ( )
133
137
}
@@ -172,12 +176,10 @@ impl<const B: usize> SecretKey<B> {
172
176
( bytes, uncompressed_point. len ( ) )
173
177
}
174
178
Curve :: Ed25519 => {
175
- let secret = ed25519_dalek:: SecretKey :: from_bytes ( & self . bytes [ ..] ) . unwrap ( ) ;
176
-
177
- let public = ed25519_dalek:: PublicKey :: from ( & secret) ;
179
+ let secret = ed25519_dalek:: SigningKey :: from_bytes ( & self . bytes ) ;
180
+ let public = secret. verifying_key ( ) ;
178
181
let mut bytes = [ 0 ; 65 ] ;
179
- bytes[ ..32 ] . copy_from_slice ( & public. as_bytes ( ) [ ..] ) ;
180
-
182
+ bytes[ ..32 ] . copy_from_slice ( public. as_bytes ( ) ) ;
181
183
( bytes, 32 )
182
184
}
183
185
_ => unreachable ! ( ) ,
@@ -233,13 +235,8 @@ impl<const B: usize> SecretKey<B> {
233
235
}
234
236
Curve :: Ed25519 => {
235
237
use ed25519_dalek:: Signer ;
236
-
237
- let secret = ed25519_dalek:: SecretKey :: from_bytes ( & self . bytes [ ..] ) . unwrap ( ) ;
238
- let public = ed25519_dalek:: PublicKey :: from ( & secret) ;
239
-
240
- let keypair = ed25519_dalek:: Keypair { secret, public } ;
241
- let sig = keypair. sign ( data) ;
242
-
238
+ let secret = ed25519_dalek:: SigningKey :: from_bytes ( & self . bytes ) ;
239
+ let sig = secret. sign ( data) ;
243
240
out[ ..64 ] . copy_from_slice ( & sig. to_bytes ( ) [ ..] ) ;
244
241
Ok ( ( Default :: default ( ) , 64 ) )
245
242
}
0 commit comments