nim-nitro/nitro/keys.nim

32 lines
691 B
Nim
Raw Normal View History

import pkg/secp256k1
import pkg/nimcrypto
import ./basics
export basics
export toPublicKey
{.push raises: [].}
type
EthPrivateKey* = SkSecretKey
EthPublicKey* = SkPublicKey
proc rng(data: var openArray[byte]): bool =
randomBytes(data) == data.len
proc random*(_: type EthPrivateKey): EthPrivateKey =
EthPrivateKey.random(rng).get()
func `$`*(key: EthPrivateKey): string =
key.toHex()
func parse*(_: type EthPrivateKey, s: string): ?EthPrivateKey =
SkSecretKey.fromHex(s).option
func toAddress*(key: EthPublicKey): EthAddress =
let hash = keccak256.digest(key.toRaw())
var bytes: array[20, byte]
for i in 0..<20:
bytes[i] = hash.data[12 + i]
EthAddress(bytes)