From 135e8efbc6020be40cec18682c180089d3eabf8d Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Wed, 11 Dec 2024 10:15:47 +0100 Subject: [PATCH] sign and verify hashes --- codexvalidator/signatures.nim | 7 +++++++ tests/codexvalidator/testSignatures.nim | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/codexvalidator/signatures.nim b/codexvalidator/signatures.nim index 888a359..0143b3b 100644 --- a/codexvalidator/signatures.nim +++ b/codexvalidator/signatures.nim @@ -1,5 +1,6 @@ import pkg/blscurve import pkg/nimcrypto +import ./hashing export blscurve.Signature export blscurve.sign @@ -19,3 +20,9 @@ proc random*(_: type Identity, identity: var Identity) = func identifier*(identity: Identity): Identifier = doAssert publicFromSecret(result, identity) + +func sign*(identity: Identity, hash: Hash): Signature = + identity.sign(hash.data) + +func verify*(signature: Signature, identifier: Identifier, hash: Hash): bool = + identifier.verify(hash.toBytes(), signature) diff --git a/tests/codexvalidator/testSignatures.nim b/tests/codexvalidator/testSignatures.nim index 20fdbea..1489bfc 100644 --- a/tests/codexvalidator/testSignatures.nim +++ b/tests/codexvalidator/testSignatures.nim @@ -1,5 +1,6 @@ import ./basics import pkg/blscurve +import codexvalidator/hashing import codexvalidator/signatures suite "Signature scheme": @@ -41,3 +42,10 @@ suite "Signature scheme": let signature = identity1.sign(message) check identity1.identifier.verify(message, signature) check not identity2.identifier.verify(message, signature) + + test "identity can sign and verify hashes": + var identity: Identity + Identity.random(identity) + let hash = Hash.example + let signature = identity.sign(hash) + check signature.verify(identity.identifier, hash)