39 lines
1.0 KiB
Nim
Raw Normal View History

2024-12-04 15:43:34 +01:00
import ../signatures
import ./transaction
2024-12-12 15:01:24 +01:00
import ./hashing
2024-12-04 15:43:34 +01:00
type SignedTransaction* = object
transaction: Transaction
signer: Identifier
signature: Signature
func init*(
_: type SignedTransaction,
transaction: Transaction,
signer: Identifier,
signature: Signature
): SignedTransaction =
SignedTransaction(
transaction: transaction,
signer: signer,
signature: signature
)
func sign*(identity: Identity, transaction: Transaction): SignedTransaction =
2024-12-12 15:01:24 +01:00
let hash = hashing.hash(transaction)
let signature = identity.sign(hash.toBytes())
2024-12-04 15:43:34 +01:00
SignedTransaction.init(transaction, identity.identifier, signature)
func transaction*(signed: SignedTransaction): Transaction =
signed.transaction
func signer*(signed: SignedTransaction): Identifier =
signed.signer
func signature*(signed: SignedTransaction): Signature =
signed.signature
func verifySignature*(signed: SignedTransaction): bool =
2024-12-12 15:01:24 +01:00
let hash = hashing.hash(signed.transaction)
signed.signer.verify(hash.toBytes(), signed.signature)