--- /dev/null
+package io.bytom.offline.common;\r
+\r
+import org.bouncycastle.util.encoders.Hex;\r
+import org.junit.Test;\r
+\r
+import java.security.InvalidKeyException;\r
+import java.security.NoSuchAlgorithmException;\r
+import java.security.SignatureException;\r
+\r
+\r
+public class NonHardenedChildTest {\r
+\r
+ @Test\r
+ public void testNHChild() throws NoSuchAlgorithmException, SignatureException, InvalidKeyException {\r
+ String hxprv = "10fdbc41a4d3b8e5a0f50dd3905c1660e7476d4db3dbd9454fa4347500a633531c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b";\r
+ byte[] xprv = Hex.decode(hxprv);\r
+ //expected: d9c7b41f030a398dada343096040c675be48278046623849977cb0fd01d395a51c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b\r
+ String[] hpaths = {"010400000000000000", "0100000000000000"};\r
+ byte[][] paths = new byte[][]{\r
+ Hex.decode(hpaths[0]),\r
+ Hex.decode(hpaths[1])\r
+ };\r
+ byte[] res = xprv;\r
+ for (int i = 0; i < hpaths.length; i++) {\r
+ byte[] xpub = DeriveXpub.deriveXpub(res);\r
+// System.out.println("xpub: "+Hex.toHexString(xpub));\r
+ res = NonHardenedChild.nhChild(paths[i], res, xpub);\r
+ }\r
+ //expected: e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954\r
+ // e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954\r
+ }\r
+\r
+ @Test\r
+ public void testChild() throws NoSuchAlgorithmException, SignatureException, InvalidKeyException {\r
+ String hxprv = "10fdbc41a4d3b8e5a0f50dd3905c1660e7476d4db3dbd9454fa4347500a633531c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b";\r
+ String[] hpaths = {"010400000000000000", "0100000000000000"};\r
+ byte[] childXprv = NonHardenedChild.child(Hex.decode(hxprv), hpaths);\r
+ //expected: e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954\r
+ // e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954\r
+ }\r
+}
\ No newline at end of file