Extract public/private key logic into separate module

This commit is contained in:
Mark Spanbroek 2021-03-09 13:16:54 +01:00
parent 63b9b5452f
commit c87ed22036
2 changed files with 27 additions and 17 deletions

24
nitro/keys.nim Normal file
View File

@ -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()

View File

@ -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