--- /dev/null
+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