diff options
author | obscuren <geffobscura@gmail.com> | 2014-10-31 19:37:43 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-10-31 19:37:43 +0800 |
commit | fd9da72536b73351bbcdc1e9dbbbb8c0e4bfb21b (patch) | |
tree | 5f60296ff025ec08962cdd2b4f6bbcfd1479cfdb /crypto/crypto.go | |
parent | 3ee0461cb5b6e4a5e2d287180afbdb681805a662 (diff) | |
download | go-tangerine-fd9da72536b73351bbcdc1e9dbbbb8c0e4bfb21b.tar.gz go-tangerine-fd9da72536b73351bbcdc1e9dbbbb8c0e4bfb21b.tar.zst go-tangerine-fd9da72536b73351bbcdc1e9dbbbb8c0e4bfb21b.zip |
ethcrypto => crypto
Diffstat (limited to 'crypto/crypto.go')
-rw-r--r-- | crypto/crypto.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/crypto/crypto.go b/crypto/crypto.go new file mode 100644 index 000000000..e10a9e81f --- /dev/null +++ b/crypto/crypto.go @@ -0,0 +1,47 @@ +package crypto + +import ( + "crypto/sha256" + + "code.google.com/p/go.crypto/ripemd160" + "github.com/ethereum/go-ethereum/ethutil" + "github.com/obscuren/secp256k1-go" + "github.com/obscuren/sha3" +) + +// TODO refactor, remove (bin) +func Sha3(data []byte) []byte { + d := sha3.NewKeccak256() + d.Write(data) + + return d.Sum(nil) +} + +// Creates an ethereum address given the bytes and the nonce +func CreateAddress(b []byte, nonce uint64) []byte { + return Sha3(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 +} |