mirror of
https://github.com/logos-storage/nim-nitro.git
synced 2026-01-07 08:03:14 +00:00
Extract public/private key logic into separate module
This commit is contained in:
parent
63b9b5452f
commit
c87ed22036
24
nitro/keys.nim
Normal file
24
nitro/keys.nim
Normal 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()
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user