OSDN Git Service

merge tx signer
[bytom/bytom-java-sdk.git] / tx-signer / src / test / java / io / bytom / common / NonHardenedChildTest.java
1 package io.bytom.common;\r
2 \r
3 import org.bouncycastle.util.encoders.Hex;\r
4 import org.junit.Test;\r
5 \r
6 import java.security.InvalidKeyException;\r
7 import java.security.NoSuchAlgorithmException;\r
8 import java.security.SignatureException;\r
9 \r
10 \r
11 public class NonHardenedChildTest {\r
12 \r
13     @Test\r
14     public void testNHChild() throws NoSuchAlgorithmException, SignatureException, InvalidKeyException {\r
15         String hxprv = "10fdbc41a4d3b8e5a0f50dd3905c1660e7476d4db3dbd9454fa4347500a633531c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b";\r
16         byte[] xprv = Hex.decode(hxprv);\r
17         //expected: d9c7b41f030a398dada343096040c675be48278046623849977cb0fd01d395a51c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b\r
18         String[] hpaths = {"010400000000000000", "0100000000000000"};\r
19         byte[][] paths = new byte[][]{\r
20                 Hex.decode(hpaths[0]),\r
21                 Hex.decode(hpaths[1])\r
22         };\r
23         byte[] res = xprv;\r
24         for (int i = 0; i < hpaths.length; i++) {\r
25             byte[] xpub = DeriveXpub.deriveXpub(res);\r
26 //            System.out.println("xpub: "+Hex.toHexString(xpub));\r
27             res = NonHardenedChild.NHchild(paths[i], res, xpub);\r
28         }\r
29         System.out.println("res: " + Hex.toHexString(res));\r
30         //expected: e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954\r
31         //          e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954\r
32     }\r
33 \r
34     @Test\r
35     public void testChild() throws NoSuchAlgorithmException, SignatureException, InvalidKeyException {\r
36         String hxprv = "10fdbc41a4d3b8e5a0f50dd3905c1660e7476d4db3dbd9454fa4347500a633531c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b";\r
37         String[] hpaths = {"010400000000000000", "0100000000000000"};\r
38         byte[] childXprv = NonHardenedChild.child(Hex.decode(hxprv), hpaths);\r
39         System.out.println("childXprv: " + Hex.toHexString(childXprv));\r
40         //expected: e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954\r
41         //          e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954\r
42     }\r
43 }