From c06a94bcb99410a813d704025ee91f9d540ff6ef Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Fri, 9 Jun 2023 18:50:57 +0100 Subject: [PATCH] Noise stuff --- src/syndicate/noise_tunnels.nim | 46 +++++++++++++++++++++++++++++++++ syndicate.nimble | 2 +- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/syndicate/noise_tunnels.nim diff --git a/src/syndicate/noise_tunnels.nim b/src/syndicate/noise_tunnels.nim new file mode 100644 index 0000000..807a0e6 --- /dev/null +++ b/src/syndicate/noise_tunnels.nim @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: ☭ Emery Hemingway +# SPDX-License-Identifier: Unlicense + +import std/options +import preserves +import ./actors, ./durings, ./protocols/[protocol, sturdy] + +import noiseprotocol +const cipher = CIPHER.CHACHAPOLY + +type Value = Preserve[void] + +func protocolName(spec: Value): string = + if spec.isDictionary: + var o = step(spec, toSymbol"protocol") + if o.isNone: + result = "Noise_NK_25519_ChaChaPoly_BLAKE2s" # TODO: this is in the schema. + else: + discard fromPreserve(result, get o) + +proc prologue(spec: Value): seq[byte] = + if spec.isDictionary: + var o = step(spec, toSymbol"service") + if o.isSome: result = encode(get o) + +func preSharedKey(spec: Value): seq[seq[byte]] = + if spec.isDictionary: + var o = step(spec, toSymbol"preSharedKeys") + if o.isSome: + discard fromPreserve(result, get o) + +proc noiseStep*(turn: var actors.Turn; ds: Ref) = + discard + #[ + let pat = ?Observe(pattern: dropType(ResolvedPathStep)) ?? {1: grabLit()} + during(turn, ds, pat) do (noiseDetailLit: Value): + stderr.writeLine("should do something with noise detail ", noiseDetailLit) + var spec = noiseDetailLit + let proto = protocolName(spec) + if proto != "": + let handshake = newByName(proto, ROLE.INITIATOR) + defer: destroy(handshake) + var prologue = prologue(spec) + if len(prologue) > 0: setPrologue(handshake, prologue) + var preSharedKeys = preSharedKeys(spec) + ]# diff --git a/syndicate.nimble b/syndicate.nimble index 91cdcbd..cb5982d 100644 --- a/syndicate.nimble +++ b/syndicate.nimble @@ -1,6 +1,6 @@ # Package -version = "20230608" +version = "20230609" author = "Emery Hemingway" description = "Syndicated actors for conversational concurrency" license = "Unlicense"