Explorar o código

ECRECOVER RIPEMD160 SHA256

obscuren %!s(int64=11) %!d(string=hai) anos
pai
achega
11ace54307
Modificáronse 1 ficheiros con 30 adicións e 0 borrados
  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
+}