forked from bianjieai/opb-sdk-java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSm2KeyManagerTest.java
103 lines (86 loc) · 4.12 KB
/
Sm2KeyManagerTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package irita.sdk;
import irita.sdk.key.AlgoEnum;
import irita.sdk.key.KeyInfo;
import irita.sdk.key.KeyManager;
import irita.sdk.key.KeyManagerFactory;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class Sm2KeyManagerTest {
@Test
public void recoverFromMnemonic() {
String mnemonic = "opera vivid pride shallow brick crew found resist decade neck expect apple chalk belt sick author know try tank detail tree impact hand best";
KeyManager km = KeyManagerFactory.createDefault();
km.recover(mnemonic);
KeyInfo keyInfo = km.getCurrentKeyInfo();
assertEquals("iaa1ytemz2xqq2s73ut3ys8mcd6zca2564a5lfhtm3", keyInfo.getAddress());
assertEquals("3c49175daf981965679bf88d2690e22144424e16c84e9d397ddb58b63603eeec", keyInfo.getPrivKey().toString(16));
}
@Test
public void recoverFromPrivateKey() {
BigInteger privKey = new BigInteger("3c49175daf981965679bf88d2690e22144424e16c84e9d397ddb58b63603eeec", 16);
KeyManager km = KeyManagerFactory.createKeyManger(AlgoEnum.SM2);
km.recover(privKey);
KeyInfo keyInfo = km.getCurrentKeyInfo();
assertEquals("iaa1ytemz2xqq2s73ut3ys8mcd6zca2564a5lfhtm3", keyInfo.getAddress());
assertEquals("3c49175daf981965679bf88d2690e22144424e16c84e9d397ddb58b63603eeec", keyInfo.getPrivKey().toString(16));
}
@Test
public void export() {
BigInteger privKey = new BigInteger("3c49175daf981965679bf88d2690e22144424e16c84e9d397ddb58b63603eeec", 16);
KeyManager km = KeyManagerFactory.createDefault();
km.recover(privKey);
String keystore = km.export("1234567890");
System.out.println(keystore);
}
@Test
@Tag("read keystore from str")
public void recoverFromKeystore1() {
String keystore = "-----BEGIN TENDERMINT PRIVATE KEY-----\n" +
"salt: 4C36B74DE23723FD901959F38A98B265\n" +
"type: sm2\n" +
"kdf: bcrypt\n" +
"\n" +
"tqltk3bgDpJZuAtw2GDNfuJ7lybzcMdDJGWa5DuMZp/BMITl8yI2eoApNt1oenCg\n" +
"3Ts31l03VQcHvoqloQ/rNOfKBoDrKVbt8QSodKI=\n" +
"=1gIS\n" +
"-----END TENDERMINT PRIVATE KEY-----";
InputStream input = new ByteArrayInputStream(keystore.getBytes(StandardCharsets.UTF_8));
KeyManager km = KeyManagerFactory.createDefault();
km.recover(input, "1234567890");
KeyInfo keyInfo = km.getCurrentKeyInfo();
assertEquals("iaa1ytemz2xqq2s73ut3ys8mcd6zca2564a5lfhtm3", keyInfo.getAddress());
assertEquals("3c49175daf981965679bf88d2690e22144424e16c84e9d397ddb58b63603eeec", keyInfo.getPrivKey().toString(16));
}
@Test
@Tag("read keystore from file")
public void recoverFromKeystore2() throws IOException {
FileInputStream input = new FileInputStream("src/test/resources/priv.key");
KeyManager km = KeyManagerFactory.createDefault();
km.recover(input, "1234567890");
KeyInfo keyInfo = km.getCurrentKeyInfo();
assertEquals("iaa1ytemz2xqq2s73ut3ys8mcd6zca2564a5lfhtm3", keyInfo.getAddress());
assertEquals("3c49175daf981965679bf88d2690e22144424e16c84e9d397ddb58b63603eeec", keyInfo.getPrivKey().toString(16));
}
@Test
public void recoverFromCAKeystore() throws Exception {
FileInputStream input = new FileInputStream("src/test/resources/ca.JKS");
KeyManager km = KeyManagerFactory.createDefault();
km.recoverFromCA(input, "123456");
assertEquals("iaa1sul8jyesxq5nuwstyj5lzzsdc2sedeehl365qk", km.getCurrentKeyInfo().getAddress());
}
@Test
public void addNewKm() throws Exception {
KeyManager km = KeyManagerFactory.createDefault();
String mnemonic = km.add();
System.out.println(mnemonic);
String address = km.getCurrentKeyInfo().getAddress();
System.out.println(address);
}
}