test_class.file: tx-signer/src/test/java/io/bytom/offline/common/NonHardenedChildTest.java
test_class.identifier: NonHardenedChildTest
test_case.body: @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
      }
test_case.class_method_signature: NonHardenedChildTest.testChild()
test_case.full_signature: @Test public void testChild()
test_case.identifier: testChild
test_case.invocations: child decode
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testChild()
focal_class.file: tx-signer/src/main/java/io/bytom/offline/common/NonHardenedChild.java
focal_class.identifier: NonHardenedChild
focal_class.class_method_signature: NonHardenedChild.hmacSha512(byte[] data, byte[] key)
focal_class.full_signature: private static byte[] hmacSha512(byte[] data, byte[] key)
focal_class.identifier: hmacSha512
focal_class.modifiers: private static
focal_class.parameters: (byte[] data, byte[] key)
focal_class.return: byte[]
focal_class.signature: byte[] hmacSha512(byte[] data, byte[] key)
focal_class.class_method_signature: NonHardenedChild.nhChild(byte[] path, byte[] xprv, byte[] xpub)
focal_class.full_signature: public static byte[] nhChild(byte[] path, byte[] xprv, byte[] xpub)
focal_class.identifier: nhChild
focal_class.modifiers: public static
focal_class.parameters: (byte[] path, byte[] xprv, byte[] xpub)
focal_class.return: byte[]
focal_class.signature: byte[] nhChild(byte[] path, byte[] xprv, byte[] xpub)
focal_class.class_method_signature: NonHardenedChild.pruneIntermediateScalar(byte[] f)
focal_class.full_signature: private static byte[] pruneIntermediateScalar(byte[] f)
focal_class.identifier: pruneIntermediateScalar
focal_class.modifiers: private static
focal_class.parameters: (byte[] f)
focal_class.return: byte[]
focal_class.signature: byte[] pruneIntermediateScalar(byte[] f)
focal_class.class_method_signature: NonHardenedChild.child(byte[] xprv, String[] hpaths)
focal_class.full_signature: public static byte[] child(byte[] xprv, String[] hpaths)
focal_class.identifier: child
focal_class.modifiers: public static
focal_class.parameters: (byte[] xprv, String[] hpaths)
focal_class.return: byte[]
focal_class.signature: byte[] child(byte[] xprv, String[] hpaths)
focal_method.body: public static byte[] child(byte[] xprv, String[] hpaths) throws NoSuchAlgorithmException, InvalidKeyException {
          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);
              res = NonHardenedChild.nhChild(paths[i], res, xpub);
          }
          return res;
      }
focal_method.class_method_signature: NonHardenedChild.child(byte[] xprv, String[] hpaths)
focal_method.full_signature: public static byte[] child(byte[] xprv, String[] hpaths)
focal_method.identifier: child
focal_method.invocations: decode decode deriveXpub nhChild
focal_method.modifiers: public static
focal_method.parameters: (byte[] xprv, String[] hpaths)
focal_method.return: byte[]
focal_method.signature: byte[] child(byte[] xprv, String[] hpaths)