mirror of
https://github.com/logos-storage/logos-storage-nim-validator.git
synced 2026-01-03 05:53:06 +00:00
39 lines
1.0 KiB
Nim
39 lines
1.0 KiB
Nim
import ../signatures
|
|
import ./transaction
|
|
import ./hashing
|
|
|
|
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 =
|
|
let hash = hashing.hash(transaction)
|
|
let signature = identity.sign(hash.toBytes())
|
|
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 =
|
|
let hash = hashing.hash(signed.transaction)
|
|
signed.signer.verify(hash.toBytes(), signed.signature)
|