瀏覽代碼

ECRECOVER RIPEMD160 SHA256

obscuren 11 年之前
父節點
當前提交
11ace54307
共有 1 個文件被更改,包括 30 次插入0 次删除
  1. 30 0
      ethcrypto/crypto.go

+ 30 - 0
ethcrypto/crypto.go

@@ -2,10 +2,16 @@ package ethcrypto
 
 import (
 	//"code.google.com/p/go.crypto/sha3"
+	"crypto/sha256"
+
+	"code.google.com/p/go.crypto/ripemd160"
 	"github.com/ethereum/eth-go/ethutil"
 	"github.com/obscuren/sha3"
+
+	"github.com/obscuren/secp256k1-go"
 )
 
+// TODO refactor, remove (bin)
 func Sha3Bin(data []byte) []byte {
 	d := sha3.NewKeccak256()
 	d.Write(data)
@@ -17,3 +23,27 @@ func Sha3Bin(data []byte) []byte {
 func CreateAddress(b []byte, nonce uint64) []byte {
 	return Sha3Bin(ethutil.NewValue([]interface{}{b, nonce}).Encode())[12:]
 }
+
+func Sha256(data []byte) []byte {
+	hash := sha256.Sum256(data)
+
+	return hash[:]
+}
+
+func Ripemd160(data []byte) []byte {
+	ripemd := ripemd160.New()
+	ripemd.Write(data)
+
+	return ripemd.Sum(nil)
+}
+
+func Ecrecover(data []byte) []byte {
+	var in = struct {
+		hash []byte
+		sig  []byte
+	}{data[:32], data[32:]}
+
+	r, _ := secp256k1.RecoverPubkey(in.hash, in.sig)
+
+	return r
+}