1
- use p256 :: pkcs8:: { EncodePrivateKey , EncodePublicKey } ;
2
- use p256 :: SecretKey ;
1
+ use ed25519_dalek :: pkcs8:: EncodePrivateKey ;
2
+ use ed25519_dalek :: SigningKey ;
3
3
use rand_core:: OsRng ;
4
4
use serde:: { Deserialize , Serialize } ;
5
5
@@ -14,14 +14,16 @@ pub struct Claims {
14
14
}
15
15
16
16
fn main ( ) {
17
- let secret_key = SecretKey :: random ( & mut OsRng ) ;
18
- let pkcs8 = secret_key . to_pkcs8_pem ( Default :: default ( ) ) . unwrap ( ) ;
17
+ let signing_key = SigningKey :: generate ( & mut OsRng ) ;
18
+ let pkcs8 = signing_key . to_pkcs8_der ( ) . unwrap ( ) ;
19
19
let pkcs8 = pkcs8. as_bytes ( ) ;
20
-
20
+ // The `to_pkcs8_der` includes the public key, the first 48 bits are the private key.
21
+ let pkcs8 = & pkcs8[ ..48 ] ;
21
22
let encoding_key = EncodingKey :: from_ed_der ( pkcs8) ;
22
23
23
- let public_key_der = secret_key. public_key ( ) . to_public_key_der ( ) . unwrap ( ) ;
24
- let decoding_key = DecodingKey :: from_ed_der ( public_key_der. as_bytes ( ) ) ;
24
+ let verifying_key = signing_key. verifying_key ( ) ;
25
+ let public_key = verifying_key. as_bytes ( ) ;
26
+ let decoding_key = DecodingKey :: from_ed_der ( public_key) ;
25
27
26
28
let claims = Claims { sub : "test" . to_string ( ) , exp : get_current_timestamp ( ) } ;
27
29
@@ -43,13 +45,16 @@ mod tests {
43
45
44
46
impl Jot {
45
47
fn new ( ) -> Jot {
46
- let secret_key = SecretKey :: random ( & mut OsRng ) ;
47
- let pkcs8 = secret_key . to_pkcs8_pem ( Default :: default ( ) ) . unwrap ( ) ;
48
+ let signing_key = SigningKey :: generate ( & mut OsRng ) ;
49
+ let pkcs8 = signing_key . to_pkcs8_der ( ) . unwrap ( ) ;
48
50
let pkcs8 = pkcs8. as_bytes ( ) ;
49
- let encoding_key = EncodingKey :: from_ed_der ( pkcs8) ;
51
+ // The `to_pkcs8_der` includes the public key, the first 48 bits are the private key.
52
+ let pkcs8 = & pkcs8[ ..48 ] ;
53
+ let encoding_key = EncodingKey :: from_ed_der ( & pkcs8) ;
50
54
51
- let public_key_der = secret_key. public_key ( ) . to_public_key_der ( ) . unwrap ( ) ;
52
- let decoding_key = DecodingKey :: from_ed_der ( public_key_der. as_bytes ( ) ) ;
55
+ let verifying_key = signing_key. verifying_key ( ) ;
56
+ let public_key = verifying_key. as_bytes ( ) ;
57
+ let decoding_key = DecodingKey :: from_ed_der ( public_key) ;
53
58
54
59
Jot { encoding_key, decoding_key }
55
60
}
0 commit comments