OSDN Git Service

Merge pull request #7 from Bytom/merge_tx_signer
[bytom/bytom-java-sdk.git] / tx-signer / src / test / java / io / bytom / offline / common / NonHardenedChildTest.java
diff --git a/tx-signer/src/test/java/io/bytom/offline/common/NonHardenedChildTest.java b/tx-signer/src/test/java/io/bytom/offline/common/NonHardenedChildTest.java
new file mode 100755 (executable)
index 0000000..a243b4f
--- /dev/null
@@ -0,0 +1,41 @@
+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