16
16
17
17
#![ cfg( any( test, feature = "testing" ) ) ]
18
18
19
+ use stacks_common:: address:: { AddressHashMode , C32_ADDRESS_VERSION_TESTNET_SINGLESIG } ;
20
+ use stacks_common:: types:: chainstate:: { StacksAddress , StacksPrivateKey , StacksPublicKey } ;
21
+
19
22
use crate :: errors:: CodecError ;
20
- use crate :: types:: Value ;
23
+ use crate :: types:: { PrincipalData , StandardPrincipalData , Value } ;
21
24
22
25
impl Value {
23
26
pub fn list_from ( list_data : Vec < Value > ) -> Result < Value , CodecError > {
@@ -33,3 +36,28 @@ impl PartialEq for CodecError {
33
36
self . to_string ( ) == other. to_string ( )
34
37
}
35
38
}
39
+
40
+ impl From < & StacksPrivateKey > for StandardPrincipalData {
41
+ fn from ( o : & StacksPrivateKey ) -> StandardPrincipalData {
42
+ let stacks_addr = StacksAddress :: from_public_keys (
43
+ C32_ADDRESS_VERSION_TESTNET_SINGLESIG ,
44
+ & AddressHashMode :: SerializeP2PKH ,
45
+ 1 ,
46
+ & vec ! [ StacksPublicKey :: from_private( o) ] ,
47
+ )
48
+ . unwrap ( ) ;
49
+ StandardPrincipalData :: from ( stacks_addr)
50
+ }
51
+ }
52
+
53
+ impl From < & StacksPrivateKey > for PrincipalData {
54
+ fn from ( o : & StacksPrivateKey ) -> PrincipalData {
55
+ PrincipalData :: Standard ( StandardPrincipalData :: from ( o) )
56
+ }
57
+ }
58
+
59
+ impl From < & StacksPrivateKey > for Value {
60
+ fn from ( o : & StacksPrivateKey ) -> Value {
61
+ Value :: from ( StandardPrincipalData :: from ( o) )
62
+ }
63
+ }
0 commit comments