From c87ed22036d35576b405186acd46f79e17d19d7d Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Tue, 9 Mar 2021 13:16:54 +0100 Subject: [PATCH] Extract public/private key logic into separate module --- nitro/keys.nim | 24 ++++++++++++++++++++++++ nitro/protocol/signature.nim | 20 +++----------------- 2 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 nitro/keys.nim diff --git a/nitro/keys.nim b/nitro/keys.nim new file mode 100644 index 0000000..5768669 --- /dev/null +++ b/nitro/keys.nim @@ -0,0 +1,24 @@ +import pkg/secp256k1 +import pkg/nimcrypto +import ./basics + +export basics +export toPublicKey + +include questionable/errorban + +type + PrivateKey* = SkSecretKey + PublicKey* = SkPublicKey + +proc rng(data: var openArray[byte]): bool = + randomBytes(data) == data.len + +proc random*(_: type PrivateKey): PrivateKey = + PrivateKey.random(rng).get() + +proc `$`*(key: PrivateKey): string = + key.toHex() + +proc parse*(_: type PrivateKey, s: string): ?PrivateKey = + SkSecretKey.fromHex(s).toOption() diff --git a/nitro/protocol/signature.nim b/nitro/protocol/signature.nim index fb52116..8e1a00a 100644 --- a/nitro/protocol/signature.nim +++ b/nitro/protocol/signature.nim @@ -2,29 +2,15 @@ import pkg/secp256k1 import pkg/nimcrypto import pkg/stew/byteutils import ../basics +import ../keys import ./state include questionable/errorban export basics -export toPublicKey +export keys -type - PrivateKey* = SkSecretKey - PublicKey* = SkPublicKey - Signature* = SkRecoverableSignature - -proc rng(data: var openArray[byte]): bool = - randomBytes(data) == data.len - -proc random*(_: type PrivateKey): PrivateKey = - PrivateKey.random(rng).get() - -proc `$`*(key: PrivateKey): string = - key.toHex() - -proc parse*(_: type PrivateKey, s: string): ?PrivateKey = - SkSecretKey.fromHex(s).toOption() +type Signature* = SkRecoverableSignature proc sign(key: PrivateKey, data: openArray[byte]): Signature = let hash = keccak256.digest(data).data