OSDN Git Service

merge tx signer
[bytom/bytom-java-sdk.git] / tx-signer / src / main / java / io / bytom / common / ExpandedPrivateKey.java
diff --git a/tx-signer/src/main/java/io/bytom/common/ExpandedPrivateKey.java b/tx-signer/src/main/java/io/bytom/common/ExpandedPrivateKey.java
new file mode 100755 (executable)
index 0000000..2a23df4
--- /dev/null
@@ -0,0 +1,31 @@
+package io.bytom.common;\r
+\r
+import org.bouncycastle.util.encoders.Hex;\r
+\r
+import javax.crypto.Mac;\r
+import javax.crypto.spec.SecretKeySpec;\r
+import java.security.InvalidKeyException;\r
+import java.security.NoSuchAlgorithmException;\r
+import java.security.SignatureException;\r
+\r
+public class ExpandedPrivateKey {\r
+    public static byte[] HMacSha512(byte[] data, byte[] key)\r
+            throws SignatureException, NoSuchAlgorithmException, InvalidKeyException {\r
+        SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA512");\r
+        Mac mac = Mac.getInstance("HmacSHA512");\r
+        mac.init(signingKey);\r
+        return mac.doFinal(data);\r
+    }\r
+\r
+    public static byte[] ExpandedPrivateKey(byte[] data)\r
+            throws SignatureException, NoSuchAlgorithmException, InvalidKeyException {\r
+        // "457870616e64" is "Expand" hex.\r
+        byte[] res = HMacSha512(data, Hex.decode("457870616e64"));\r
+        for (int i = 0; i <= 31; i++) {\r
+            res[i] = data[i];\r
+        }\r
+        return res;\r
+    }\r
+}\r
+\r
+\r