From 92c3471445d9a46389ddab893a159ce273707a95 Mon Sep 17 00:00:00 2001 From: obscuren Date: Sun, 5 Jan 2014 01:55:03 +0100 Subject: [PATCH] secp256k1 method signing --- transaction.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/transaction.go b/transaction.go index f5c848a31..f38f0fed3 100644 --- a/transaction.go +++ b/transaction.go @@ -3,6 +3,7 @@ package main import ( "math/big" "fmt" + "github.com/obscuren/secp256k1-go" _"encoding/hex" _"crypto/sha256" _ "bytes" @@ -73,6 +74,28 @@ func (tx *Transaction) Hash() []byte { return Sha256Bin(tx.MarshalRlp()) } +func (tx *Transaction) IsContract() bool { + return tx.recipient == "" +} + +func (tx *Transaction) Signature() []byte { + hash := Sha256Bin(tx.MarshalRlp()) + sec := Sha256Bin([]byte("myprivkey")) + + sig, _ := secp256k1.Sign(hash, sec) + + return sig +} + +func (tx *Transaction) PublicKey() []byte { + hash := Sha256Bin(tx.MarshalRlp()) + sig := tx.Signature() + + pubkey, _ := secp256k1.RecoverPubkey(hash, sig) + + return pubkey +} + func (tx *Transaction) MarshalRlp() []byte { // Prepare the transaction for serialization preEnc := []interface{}{