diff --git a/blockchain/test_utils.go b/blockchain/test_utils.go index e5e249b..116b141 100644 --- a/blockchain/test_utils.go +++ b/blockchain/test_utils.go @@ -49,12 +49,8 @@ func newTxBody() TxBody { func newTransaction() *Transaction { sender := newWallet() tbody := newTxBody() - digest := HashSum(tbody) - sig, _ := sender.Sign(digest, crand.Reader) - return &Transaction{ - TxBody: tbody, - Sig: sig, - } + t, _ := tbody.Signed(sender, crand.Reader) + return t } func newBlockHeader() BlockHeader { diff --git a/blockchain/transaction.go b/blockchain/transaction.go index 507e370..8d318ea 100644 --- a/blockchain/transaction.go +++ b/blockchain/transaction.go @@ -1,6 +1,9 @@ package blockchain -import "encoding/binary" +import ( + "encoding/binary" + "io" +) const ( // TxHashPointerLen is the length in bytes of a hash pointer. @@ -60,6 +63,13 @@ func (tb TxBody) Marshal() []byte { return buf } +// Signed returns a signed Transaction from a TxBody +func (tb TxBody) Signed(w Wallet, r io.Reader) (*Transaction, error) { + digest := HashSum(tb) + sig, err := w.Sign(digest, r) + return &Transaction{tb, sig}, err +} + // Transaction contains a TxBody and a signature verifying it type Transaction struct { TxBody