X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=tx-signer%2Fsrc%2Ftest%2Fjava%2Fio%2Fbytom%2Foffline%2Fcommon%2FNonHardenedChildTest.java;fp=tx-signer%2Fsrc%2Ftest%2Fjava%2Fio%2Fbytom%2Foffline%2Fcommon%2FNonHardenedChildTest.java;h=a243b4fd62a61eac7cdb161a5f8935407a4dfee4;hb=2c19858dfb9e40c61dde29241968f878fa6ba693;hp=0000000000000000000000000000000000000000;hpb=6b70893727d358241ea3cccd733bc95c24bbd391;p=bytom%2Fbytom-java-sdk.git 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 index 0000000..a243b4f --- /dev/null +++ b/tx-signer/src/test/java/io/bytom/offline/common/NonHardenedChildTest.java @@ -0,0 +1,41 @@ +package io.bytom.offline.common; + +import org.bouncycastle.util.encoders.Hex; +import org.junit.Test; + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SignatureException; + + +public class NonHardenedChildTest { + + @Test + public void testNHChild() throws NoSuchAlgorithmException, SignatureException, InvalidKeyException { + String hxprv = "10fdbc41a4d3b8e5a0f50dd3905c1660e7476d4db3dbd9454fa4347500a633531c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b"; + byte[] xprv = Hex.decode(hxprv); + //expected: d9c7b41f030a398dada343096040c675be48278046623849977cb0fd01d395a51c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b + String[] hpaths = {"010400000000000000", "0100000000000000"}; + byte[][] paths = new byte[][]{ + Hex.decode(hpaths[0]), + Hex.decode(hpaths[1]) + }; + byte[] res = xprv; + for (int i = 0; i < hpaths.length; i++) { + byte[] xpub = DeriveXpub.deriveXpub(res); +// System.out.println("xpub: "+Hex.toHexString(xpub)); + res = NonHardenedChild.nhChild(paths[i], res, xpub); + } + //expected: e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954 + // e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954 + } + + @Test + public void testChild() throws NoSuchAlgorithmException, SignatureException, InvalidKeyException { + String hxprv = "10fdbc41a4d3b8e5a0f50dd3905c1660e7476d4db3dbd9454fa4347500a633531c487e8174ffc0cfa76c3be6833111a9b8cd94446e37a76ee18bb21a7d6ea66b"; + String[] hpaths = {"010400000000000000", "0100000000000000"}; + byte[] childXprv = NonHardenedChild.child(Hex.decode(hxprv), hpaths); + //expected: e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954 + // e8c0965af60563c4cabcf2e947b1cd955c4f501eb946ffc8c3447e5ec8a6335398a3720b3f96077fa187fdde48fe7dc293984b196f5e292ef8ed78fdbd8ed954 + } +} \ No newline at end of file