secp256k1 method signing
This commit is contained in:
parent
53a30740ee
commit
92c3471445
@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"math/big"
|
"math/big"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/obscuren/secp256k1-go"
|
||||||
_"encoding/hex"
|
_"encoding/hex"
|
||||||
_"crypto/sha256"
|
_"crypto/sha256"
|
||||||
_ "bytes"
|
_ "bytes"
|
||||||
@ -73,6 +74,28 @@ func (tx *Transaction) Hash() []byte {
|
|||||||
return Sha256Bin(tx.MarshalRlp())
|
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 {
|
func (tx *Transaction) MarshalRlp() []byte {
|
||||||
// Prepare the transaction for serialization
|
// Prepare the transaction for serialization
|
||||||
preEnc := []interface{}{
|
preEnc := []interface{}{
|
||||||
|
Loading…
Reference in New Issue
Block a user