mirror of
https://github.com/logos-storage/logos-storage-nim-dht.git
synced 2026-01-02 05:23:12 +00:00
chore: bump stew et al (#107)
* fix use of deprecated imports * bump stew * `results` is its own package * drop protobuf_serialization * force leveldb version
This commit is contained in:
parent
f6eef1ac95
commit
6c7de03622
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
@ -7,15 +7,15 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
nim: [2.0.14]
|
||||
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||
nim: [2.2.4]
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install Nim
|
||||
uses: iffy/install-nim@v5
|
||||
- uses: jiro4989/setup-nim-action@v2
|
||||
with:
|
||||
version: ${{ matrix.nim }}
|
||||
nim-version: ${{matrix.nim}}
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Build
|
||||
run: nimble install -y
|
||||
- name: Test
|
||||
|
||||
@ -7,19 +7,19 @@ license = "MIT"
|
||||
skipDirs = @["tests"]
|
||||
|
||||
# Dependencies
|
||||
requires "nim >= 2.0.14 & < 3.0.0"
|
||||
requires "nim >= 2.2.4 & < 3.0.0"
|
||||
requires "secp256k1 >= 0.6.0 & < 0.7.0"
|
||||
requires "protobuf_serialization >= 0.3.0 & < 0.4.0"
|
||||
requires "nimcrypto >= 0.6.2 & < 0.7.0"
|
||||
requires "nimcrypto >= 0.6.2 & < 0.8.0"
|
||||
requires "bearssl >= 0.2.5 & < 0.3.0"
|
||||
requires "chronicles >= 0.10.2 & < 0.11.0"
|
||||
requires "chronos >= 4.0.3 & < 4.1.0"
|
||||
requires "libp2p >= 1.5.0 & < 2.0.0"
|
||||
requires "chronicles >= 0.11.2 & < 0.13.0"
|
||||
requires "chronos >= 4.0.4 & < 4.1.0"
|
||||
requires "libp2p >= 1.14.1 & < 2.0.0"
|
||||
requires "metrics >= 0.1.0 & < 0.2.0"
|
||||
requires "stew >= 0.2.0 & < 0.3.0"
|
||||
requires "stew >= 0.4.2"
|
||||
requires "stint >= 0.8.1 & < 0.9.0"
|
||||
requires "https://github.com/codex-storage/nim-datastore >= 0.2.0 & < 0.3.0"
|
||||
requires "https://github.com/codex-storage/nim-datastore >= 0.2.1 & < 0.3.0"
|
||||
requires "questionable >= 0.10.15 & < 0.11.0"
|
||||
requires "leveldbstatic >= 0.2.1 & < 0.3.0"
|
||||
|
||||
task testAll, "Run all test suites":
|
||||
exec "nimble install -d -y"
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
import
|
||||
std/sugar,
|
||||
libp2p/crypto/[crypto, secp],
|
||||
stew/[byteutils, objects, results, ptrops]
|
||||
stew/[byteutils, objects, ptrops],
|
||||
results
|
||||
|
||||
# from secp256k1 import ecdh, SkEcdhSecretSize, toRaw, SkSecretKey, SkPublicKey
|
||||
import secp256k1
|
||||
|
||||
const
|
||||
KeyLength* = SkEcdhSecretSize
|
||||
KeyLength* = secp256k1.SkEcdhSecretSize
|
||||
## Ecdh shared secret key length without leading byte
|
||||
## (publicKey * privateKey).x, where length of x is 32 bytes
|
||||
|
||||
@ -25,12 +25,12 @@ type
|
||||
data*: array[FullKeyLength, byte]
|
||||
|
||||
proc fromHex*(T: type PrivateKey, data: string): Result[PrivateKey, cstring] =
|
||||
let skKey = ? SkPrivateKey.init(data).mapErr(e =>
|
||||
let skKey = ? secp.SkPrivateKey.init(data).mapErr(e =>
|
||||
("Failed to init private key from hex string: " & $e).cstring)
|
||||
ok PrivateKey.init(skKey)
|
||||
|
||||
proc fromHex*(T: type PublicKey, data: string): Result[PublicKey, cstring] =
|
||||
let skKey = ? SkPublicKey.init(data).mapErr(e =>
|
||||
let skKey = ? secp.SkPublicKey.init(data).mapErr(e =>
|
||||
("Failed to init public key from hex string: " & $e).cstring)
|
||||
ok PublicKey.init(skKey)
|
||||
|
||||
@ -45,14 +45,17 @@ proc ecdhSharedSecretHash(output: ptr byte, x32, y32: ptr byte, data: pointer):
|
||||
## Take the `x32` part as ecdh shared secret.
|
||||
## output length is derived from x32 length and taken from ecdh
|
||||
## generic parameter `KeyLength`
|
||||
copyMem(output, x32, SkEcdhSecretSize)
|
||||
copyMem(output, x32, KeyLength)
|
||||
return 1
|
||||
|
||||
func ecdhSharedSecret(seckey: SkPrivateKey, pubkey: secp.SkPublicKey): SharedSecret =
|
||||
## Compute ecdh agreed shared secret.
|
||||
let res = ecdh[SkEcdhSecretSize](secp256k1.SkSecretKey(seckey),
|
||||
let res = secp256k1.ecdh[KeyLength](
|
||||
secp256k1.SkSecretKey(seckey),
|
||||
secp256k1.SkPublicKey(pubkey),
|
||||
ecdhSharedSecretHash, nil)
|
||||
ecdhSharedSecretHash,
|
||||
nil,
|
||||
)
|
||||
# This function only fail if the hash function return zero.
|
||||
# Because our hash function always success, we can turn the error into defect
|
||||
doAssert res.isOk, $res.error
|
||||
|
||||
@ -18,13 +18,14 @@ import
|
||||
stew/endians2,
|
||||
bearssl/rand,
|
||||
chronicles,
|
||||
stew/[results, byteutils],
|
||||
stew/[byteutils],
|
||||
stint,
|
||||
libp2p/crypto/crypto as libp2p_crypto,
|
||||
libp2p/crypto/secp,
|
||||
libp2p/signed_envelope,
|
||||
metrics,
|
||||
nimcrypto,
|
||||
results,
|
||||
"."/[messages, messages_encoding, node, spr, hkdf, sessions],
|
||||
"."/crypto
|
||||
|
||||
|
||||
@ -8,12 +8,11 @@
|
||||
{.push raises: [].}
|
||||
|
||||
import
|
||||
std/hashes,
|
||||
std/[hashes, net],
|
||||
bearssl/rand,
|
||||
chronicles,
|
||||
chronos,
|
||||
nimcrypto,
|
||||
stew/shims/net,
|
||||
stint,
|
||||
./crypto,
|
||||
./spr
|
||||
@ -89,7 +88,9 @@ func newNode*(r: SignedPeerRecord): Result[Node, cstring] =
|
||||
nodeId = ? pk.get().toNodeId()
|
||||
|
||||
if r.ip.isSome() and r.udp.isSome():
|
||||
let a = Address(ip: ipv4(r.ip.get()), port: Port(r.udp.get()))
|
||||
let a = Address(
|
||||
ip: IpAddress(family: IPv4, address_v4: r.ip.get()), port: Port(r.udp.get())
|
||||
)
|
||||
|
||||
ok(Node(
|
||||
id: nodeId,
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
{.push raises: [].}
|
||||
|
||||
import
|
||||
std/[sets, options],
|
||||
stew/results, stew/shims/net, chronicles, chronos,
|
||||
std/[net, sets, options],
|
||||
results, chronicles, chronos,
|
||||
"."/[node, spr, routing_table]
|
||||
|
||||
logScope:
|
||||
|
||||
@ -74,15 +74,15 @@
|
||||
{.push raises: [].}
|
||||
|
||||
import
|
||||
std/[tables, sets, options, math, sequtils, algorithm, strutils],
|
||||
stew/shims/net as stewNet,
|
||||
std/[net, tables, sets, options, math, sequtils, algorithm, strutils],
|
||||
json_serialization/std/net,
|
||||
stew/[base64, endians2, results],
|
||||
stew/[base64, endians2],
|
||||
pkg/[chronicles, chronicles/chronos_tools],
|
||||
pkg/chronos,
|
||||
pkg/stint,
|
||||
pkg/bearssl/rand,
|
||||
pkg/metrics
|
||||
pkg/metrics,
|
||||
pkg/results
|
||||
|
||||
import "."/[
|
||||
messages,
|
||||
|
||||
@ -14,7 +14,6 @@ import pkg/datastore
|
||||
import pkg/chronos
|
||||
import pkg/libp2p
|
||||
import pkg/chronicles
|
||||
import pkg/stew/results as rs
|
||||
import pkg/stew/byteutils
|
||||
import pkg/questionable
|
||||
import pkg/questionable/results
|
||||
|
||||
@ -8,8 +8,8 @@
|
||||
{.push raises: [].}
|
||||
|
||||
import
|
||||
std/[algorithm, times, sequtils, bitops, sets, options, tables],
|
||||
stint, chronicles, metrics, bearssl/rand, chronos, stew/shims/net as stewNet,
|
||||
std/[algorithm, net, times, sequtils, bitops, sets, options, tables],
|
||||
stint, chronicles, metrics, bearssl/rand, chronos,
|
||||
"."/[node, random2, spr]
|
||||
|
||||
export options
|
||||
|
||||
@ -19,8 +19,8 @@
|
||||
{.push raises: [].}
|
||||
|
||||
import
|
||||
std/options,
|
||||
stint, stew/endians2, stew/shims/net,
|
||||
std/[net, options],
|
||||
stint, stew/endians2,
|
||||
node, lru
|
||||
|
||||
export lru
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
#
|
||||
import
|
||||
chronicles,
|
||||
std/[options, strutils, sugar],
|
||||
pkg/stew/[results, byteutils, arrayops],
|
||||
results,
|
||||
std/[net, options, strutils, sugar],
|
||||
pkg/stew/[byteutils, arrayops],
|
||||
stew/endians2,
|
||||
stew/shims/net,
|
||||
stew/base64,
|
||||
libp2p/crypto/crypto,
|
||||
libp2p/crypto/secp,
|
||||
@ -122,9 +122,13 @@ proc update*(
|
||||
.mapErr((e: string) => e.cstring)
|
||||
existingIp =
|
||||
if existingNetProtoFam == MultiCodec.codec("ip6"):
|
||||
ipv6 array[16, byte].initCopyFrom(existingNetProtoAddr)
|
||||
IpAddress(
|
||||
family: IPv6, address_v6: array[16, byte].initCopyFrom(existingNetProtoAddr)
|
||||
)
|
||||
else:
|
||||
ipv4 array[4, byte].initCopyFrom(existingNetProtoAddr)
|
||||
IpAddress(
|
||||
family: IPv4, address_v4: array[4, byte].initCopyFrom(existingNetProtoAddr)
|
||||
)
|
||||
|
||||
ipAddr = ip.get(existingIp)
|
||||
|
||||
|
||||
@ -6,13 +6,12 @@
|
||||
|
||||
# Everything below the handling of ordinary messages
|
||||
import
|
||||
std/[tables, options, sets],
|
||||
std/[net, tables, options, sets],
|
||||
bearssl/rand,
|
||||
chronos,
|
||||
chronicles,
|
||||
metrics,
|
||||
libp2p/crypto/crypto,
|
||||
stew/shims/net,
|
||||
"."/[node, encoding, sessions]
|
||||
|
||||
const
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import
|
||||
std/net,
|
||||
bearssl/rand,
|
||||
chronos,
|
||||
libp2p/crypto/[crypto, secp],
|
||||
@ -7,7 +8,7 @@ import
|
||||
codexdht/discv5/protocol as discv5_protocol
|
||||
|
||||
proc localAddress*(port: int): Address =
|
||||
Address(ip: parseIpAddress("127.0.0.1"), port: Port(port))
|
||||
Address(ip: IPv4_loopback(), port: Port(port))
|
||||
|
||||
proc example*(T: type PrivateKey, rng: ref HmacDrbgContext): PrivateKey =
|
||||
PrivateKey.random(PKScheme.Secp256k1, rng[]).expect("Valid rng for private key")
|
||||
@ -101,13 +102,13 @@ proc addSeenNode*(d: discv5_protocol.Protocol, n: Node): bool =
|
||||
d.addNode(n)
|
||||
|
||||
func udpExample*(_: type MultiAddress): MultiAddress =
|
||||
## creates a new udp multiaddress on a random port
|
||||
Multiaddress.init("/ip4/0.0.0.0/udp/0")
|
||||
## creates a new udp MultiAddress on a random port
|
||||
MultiAddress.init("/ip4/0.0.0.0/udp/0")
|
||||
|
||||
func udpExamples*(_: type MultiAddress, count: int): seq[MultiAddress] =
|
||||
var res: seq[MultiAddress] = @[]
|
||||
for i in 1..count:
|
||||
res.add Multiaddress.init("/ip4/0.0.0.0/udp/" & $i).get
|
||||
res.add MultiAddress.init("/ip4/0.0.0.0/udp/" & $i).get
|
||||
return res
|
||||
|
||||
proc toSignedPeerRecord*(privKey: PrivateKey) : SignedPeerRecord =
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user