@@ -4,47 +4,25 @@ use wasm_bindgen::prelude::*;
4
4
use crate :: Kem ;
5
5
use hpke:: Serializable ;
6
6
7
- cfg_if:: cfg_if! {
8
- if #[ cfg( target_arch = "wasm32" ) ] {
9
- /// An encoded keypair
10
- #[ derive( Debug , Clone , Eq , PartialEq ) ]
11
- #[ wasm_bindgen]
12
- pub struct Keypair {
13
- public_key: Vec <u8 >,
14
- private_key: Vec <u8 >,
15
- }
16
- } else {
17
- /// An encoded keypair
18
- #[ derive( Debug , Clone , Eq , PartialEq , zeroize:: Zeroize ) ]
19
- pub struct Keypair {
20
- /// the public key for this keypair
21
- pub public_key: Vec <u8 >,
22
- /// the private key for this keypair,
23
- pub private_key: Vec <u8 >,
24
- }
25
- }
7
+ /// An encoded keypair
8
+ #[ derive( Debug , Clone , Eq , PartialEq , zeroize:: Zeroize ) ]
9
+ #[ cfg_attr( target_arch = "wasm32" , wasm_bindgen( getter_with_clone) ) ]
10
+ pub struct Keypair {
11
+ /// the public key for this keypair
12
+ pub public_key : Vec < u8 > ,
13
+
14
+ /// the private key for this keypair,
15
+ pub private_key : Vec < u8 > ,
26
16
}
27
17
28
18
#[ cfg_attr( target_arch = "wasm32" , wasm_bindgen) ]
29
19
impl Keypair {
30
20
/// generate a keypair from a [`Kem`]
31
21
#[ cfg_attr( target_arch = "wasm32" , wasm_bindgen( constructor) ) ]
32
22
#[ must_use]
33
- pub fn generate ( kem : Kem ) -> Keypair {
23
+ pub fn new ( kem : Kem ) -> Keypair {
34
24
gen_keypair ( kem)
35
25
}
36
-
37
- /// getter for `public_key`
38
- #[ cfg_attr( target_arch = "wasm32" , wasm_bindgen( getter) ) ]
39
- pub fn public_key ( & self ) -> Vec < u8 > {
40
- self . public_key . clone ( )
41
- }
42
-
43
- /// getter for `private_key`
44
- #[ cfg_attr( target_arch = "wasm32" , wasm_bindgen( getter) ) ]
45
- pub fn private_key ( & self ) -> Vec < u8 > {
46
- self . private_key . clone ( )
47
- }
48
26
}
49
27
50
28
impl Keypair {
@@ -58,16 +36,6 @@ impl Keypair {
58
36
/// generate a Keypair for the provided asymmetric key encapsulation mechanism ([`Kem`])
59
37
#[ must_use]
60
38
pub fn gen_keypair ( kem : Kem ) -> Keypair {
61
- fn gen_kp < KemT : hpke:: kem:: Kem > ( ) -> Keypair {
62
- let ( private_key, public_key) = KemT :: gen_keypair ( & mut rand:: thread_rng ( ) ) ;
63
- let public_key = public_key. to_bytes ( ) . to_vec ( ) ;
64
- let private_key = private_key. to_bytes ( ) . to_vec ( ) ;
65
- Keypair {
66
- public_key,
67
- private_key,
68
- }
69
- }
70
-
71
39
match kem {
72
40
#[ cfg( feature = "kem-dh-p256-hkdf-sha256" ) ]
73
41
Kem :: DhP256HkdfSha256 => gen_kp :: < hpke:: kem:: DhP256HkdfSha256 > ( ) ,
@@ -76,3 +44,14 @@ pub fn gen_keypair(kem: Kem) -> Keypair {
76
44
Kem :: X25519HkdfSha256 => gen_kp :: < hpke:: kem:: X25519HkdfSha256 > ( ) ,
77
45
}
78
46
}
47
+
48
+ fn gen_kp < KemT : hpke:: kem:: Kem > ( ) -> Keypair {
49
+ let ( private_key, public_key) = KemT :: gen_keypair ( & mut rand:: thread_rng ( ) ) ;
50
+ let public_key = public_key. to_bytes ( ) . to_vec ( ) ;
51
+ let private_key = private_key. to_bytes ( ) . to_vec ( ) ;
52
+
53
+ Keypair {
54
+ public_key,
55
+ private_key,
56
+ }
57
+ }
0 commit comments