29 lines
743 B
Nim
Raw Normal View History

import pkg/blscurve
import pkg/nimcrypto
2024-12-11 10:15:47 +01:00
import ./hashing
2024-12-03 15:11:39 +01:00
export blscurve.Signature
export blscurve.sign
export blscurve.verify
2024-12-03 15:11:39 +01:00
type
Identity* = SecretKey
Identifier* = PublicKey
proc random*(_: type Identity, identity: var Identity) =
var randomness: array[32, byte]
var done = false
while not done:
doAssert randomBytes(randomness) == randomness.len
done = fromBytes(identity, randomness)
burnMem(randomness)
2024-12-03 15:11:39 +01:00
func identifier*(identity: Identity): Identifier =
doAssert publicFromSecret(result, identity)
2024-12-11 10:15:47 +01:00
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)