Skip to content

Commit

Permalink
feat: Added Transaction.AddSignature
Browse files Browse the repository at this point in the history
  • Loading branch information
andrix10 committed Nov 17, 2020
1 parent a266e81 commit 5e63d10
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,22 @@ func (transaction *Transaction) GetSignatures() (map[*PublicKey][]byte, error) {
return sigMap, nil
}

func (transaction *Transaction) AddSignature(publicKey PublicKey, signature []byte) *Transaction {
transaction.requireExactNode()

if transaction.keyAlreadySigned(publicKey) {
return transaction
}

if len(transaction.signatures) == 0 {
return transaction
}

transaction.signatures[0].SigPair = append(transaction.signatures[0].SigPair, publicKey.toSignaturePairProtobuf(signature))

return transaction
}

func (transaction *Transaction) GetTransactionHash() ([]byte, error) {
hashes, err := transaction.GetTransactionHashPerNode()
if err != nil {
Expand Down Expand Up @@ -257,7 +273,17 @@ func (transaction *Transaction) isFrozen() bool {

func (transaction *Transaction) requireNotFrozen() {
if transaction.isFrozen() {
panic("Transaction is immutable; it has at least one signature or has been explicitly frozen\"")
panic("Transaction is immutable; it has at least one signature or has been explicitly frozen")
}
}

func (transaction *Transaction) requireExactNode() {
if len(transaction.nodeIDs) > 1 {
panic("Transaction has more than one node ID set")
}

if transaction.isFrozen() {
panic("Transaction did not have an exact node ID set")
}
}

Expand Down

0 comments on commit 5e63d10

Please sign in to comment.