From 11ace543072726e76743f157a31956ad1b941956 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Wed, 8 Oct 2014 12:00:50 +0200
Subject: ECRECOVER RIPEMD160 SHA256

---
 ethcrypto/crypto.go | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

(limited to 'ethcrypto')

diff --git a/ethcrypto/crypto.go b/ethcrypto/crypto.go
index 1f500f2db..624c5169f 100644
--- a/ethcrypto/crypto.go
+++ b/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
+}
-- 
cgit v1.2.3