1 package io.bytom.common;
\r
3 import org.bouncycastle.util.encoders.Hex;
\r
4 import org.junit.Test;
\r
6 import java.security.InvalidKeyException;
\r
7 import java.security.NoSuchAlgorithmException;
\r
8 import java.security.SignatureException;
\r
11 public class NonHardenedChildTest {
\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
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
29 System.out.println("res: " + Hex.toHexString(res));
\r
30 //expected: e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954
\r
31 // e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954
\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