@@ -20,9 +20,9 @@ use std::{
20
20
use crypto:: keys:: bip39;
21
21
use iota_stronghold:: {
22
22
procedures:: {
23
- BIP39Generate , BIP39Recover , Curve , Ed25519Sign , KeyType as StrongholdKeyType ,
24
- MnemonicLanguage , PublicKey , Slip10Derive , Slip10DeriveInput , Slip10Generate ,
25
- StrongholdProcedure ,
23
+ BIP39Generate , BIP39Recover , Curve , Ed25519Sign , GetEvmAddress ,
24
+ KeyType as StrongholdKeyType , MnemonicLanguage , PublicKey , Secp256k1EcdsaFlavor ,
25
+ Secp256k1EcdsaSign , Slip10Derive , Slip10DeriveInput , Slip10Generate , StrongholdProcedure ,
26
26
} ,
27
27
Client , Location ,
28
28
} ;
@@ -107,13 +107,15 @@ impl From<Slip10DeriveInputDto> for Slip10DeriveInput {
107
107
pub enum KeyType {
108
108
Ed25519 ,
109
109
X25519 ,
110
+ Secp256k1Ecdsa ,
110
111
}
111
112
112
113
impl From < KeyType > for StrongholdKeyType {
113
114
fn from ( ty : KeyType ) -> StrongholdKeyType {
114
115
match ty {
115
116
KeyType :: Ed25519 => StrongholdKeyType :: Ed25519 ,
116
117
KeyType :: X25519 => StrongholdKeyType :: X25519 ,
118
+ KeyType :: Secp256k1Ecdsa => StrongholdKeyType :: Secp256k1Ecdsa ,
117
119
}
118
120
}
119
121
}
@@ -129,7 +131,7 @@ impl<'de> Deserialize<'de> for KeyType {
129
131
type Value = KeyType ;
130
132
131
133
fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
132
- formatter. write_str ( "ed25519 or x25519 " )
134
+ formatter. write_str ( "ed25519, x25519, or secp256k1_ecdsa " )
133
135
}
134
136
135
137
fn visit_str < E > ( self , value : & str ) -> std:: result:: Result < Self :: Value , E >
@@ -139,6 +141,7 @@ impl<'de> Deserialize<'de> for KeyType {
139
141
match value. to_lowercase ( ) . as_str ( ) {
140
142
"ed25519" => Ok ( KeyType :: Ed25519 ) ,
141
143
"x25519" => Ok ( KeyType :: X25519 ) ,
144
+ "secp256k1_ecdsa" => Ok ( KeyType :: Secp256k1Ecdsa ) ,
142
145
_ => Err ( serde:: de:: Error :: custom ( "unknown key type" ) ) ,
143
146
}
144
147
}
@@ -182,6 +185,16 @@ enum ProcedureDto {
182
185
private_key : LocationDto ,
183
186
msg : String ,
184
187
} ,
188
+ GetEvmAddress {
189
+ #[ serde( rename = "privateKey" ) ]
190
+ private_key : LocationDto ,
191
+ } ,
192
+ Secp256k1EcdsaSign {
193
+ flavor : Secp256k1EcdsaFlavor ,
194
+ #[ serde( rename = "privateKey" ) ]
195
+ private_key : LocationDto ,
196
+ msg : String ,
197
+ } ,
185
198
}
186
199
187
200
impl From < ProcedureDto > for StrongholdProcedure {
@@ -231,6 +244,20 @@ impl From<ProcedureDto> for StrongholdProcedure {
231
244
msg : msg. as_bytes ( ) . to_vec ( ) ,
232
245
} )
233
246
}
247
+ ProcedureDto :: GetEvmAddress { private_key } => {
248
+ StrongholdProcedure :: GetEvmAddress ( GetEvmAddress {
249
+ private_key : private_key. into ( ) ,
250
+ } )
251
+ }
252
+ ProcedureDto :: Secp256k1EcdsaSign {
253
+ flavor,
254
+ private_key,
255
+ msg,
256
+ } => StrongholdProcedure :: Secp256k1EcdsaSign ( Secp256k1EcdsaSign {
257
+ flavor,
258
+ private_key : private_key. into ( ) ,
259
+ msg : msg. as_bytes ( ) . to_vec ( ) ,
260
+ } ) ,
234
261
}
235
262
}
236
263
}
0 commit comments