refactor(format): Imports and formatting improvements

This commit is contained in:
Emil Ivanichkov 2024-02-08 15:51:46 +02:00 committed by Emil Ivanichkov
parent 3b625211f2
commit bac788bbdc
1 changed files with 50 additions and 55 deletions

View File

@ -1,27 +1,12 @@
import
std/[tables, sequtils],
stew/byteutils,
stew/shims/net,
chronicles,
chronos,
confutils,
libp2p/crypto/crypto,
eth/keys,
eth/p2p/discoveryv5/enr
stew/[byteutils], chronicles, chronos, confutils
import
waku/common/logging,
waku/node/peer_manager,
waku/waku_core,
waku/waku_node,
waku/waku_enr,
waku/waku_discv5,
waku/common/protobuf,
waku/utils/noise as waku_message_utils,
waku/waku_noise/noise_types,
waku/waku_noise/noise_utils,
waku/waku_noise/noise_handshake_processing,
waku/waku_core
waku/waku_noise/[noise_types, noise_utils, noise_handshake_processing],
waku/utils/noise,
waku/[waku_core, waku_node],
waku/common/[logging, protobuf],
waku/node/peer_manager
type
AgentKeysAndCommitment* = object
@ -35,33 +20,34 @@ type
applicationVersion*: string
shardId*: string
proc initAgentKeysAndCommitment* (rng: ref HmacDrbgContext): AgentKeysAndCommitment =
proc initAgentKeysAndCommitment*(rng: ref HmacDrbgContext): AgentKeysAndCommitment =
let staticKey = genKeyPair(rng[])
let commitment= randomSeqByte(rng[], 32)
AgentKeysAndCommitment(
staticKey: staticKey,
ephemeralKey: genKeyPair(rng[]),
commitment: commitment,
committedStaticKey: commitPublicKey(getPublicKey(staticKey), commitment))
let commitment = randomSeqByte(rng[], 32)
AgentKeysAndCommitment(staticKey: staticKey,
ephemeralKey: genKeyPair(rng[]),
commitment: commitment,
committedStaticKey:
commitPublicKey(getPublicKey(staticKey), commitment))
proc initQr*(rng: ref HmacDrbgContext, contentTopicInfo: ContentTopicInfo,
agentInfo: AgentKeysAndCommitment): tuple[qr: string, qrMessageNametag: seq[byte]] =
let qr = toQr(
contentTopicInfo.applicationName,
contentTopicInfo.applicationVersion,
contentTopicInfo.shardId,
getPublicKey(agentInfo.ephemeralKey),
agentInfo.committedStaticKey)
agentInfo: AgentKeysAndCommitment
): tuple[qr: string, qrMessageNametag: seq[byte]] =
let qr = toQr(contentTopicInfo.applicationName,
contentTopicInfo.applicationVersion,
contentTopicInfo.shardId,
getPublicKey(agentInfo.ephemeralKey),
agentInfo.committedStaticKey)
let qrMessageNametag = randomSeqByte(rng[], MessageNametagLength)
(qr, qrMessageNametag)
proc initContentTopicFromQr* (qr: string): ContentTopic =
proc initContentTopicFromQr*(qr: string): ContentTopic =
let (readApplicationName, readApplicationVersion, readShardId, _, _) = fromQr(qr)
let contentTopic = "/" & readApplicationName & "/" &
readApplicationVersion & "/wakunoise/1/sessions_shard-" & readShardId & "/proto"
readApplicationVersion & "/wakunoise/1/sessions_shard-" &
readShardId & "/proto"
return contentTopic
proc initHS*(agentInfo: AgentKeysAndCommitment, qr: string,
@ -79,12 +65,12 @@ proc initHS*(agentInfo: AgentKeysAndCommitment, qr: string,
initiator = isInitiator)
proc prepareHandShakeInitiatorMsg*(rng: ref HmacDrbgContext,
contentTopic: string,
agentInfo: AgentKeysAndCommitment,
qrMessageNametag: seq[byte],
agentMessageNametag: var MessageNametag,
agentHS: var HandshakeState,
initiatorStep: var HandshakeStepResult
contentTopic: string,
agentInfo: AgentKeysAndCommitment,
qrMessageNametag: seq[byte],
agentMessageNametag: var MessageNametag,
agentHS: var HandshakeState,
initiatorStep: var HandshakeStepResult
): Result[WakuMessage, cstring] =
##############################
@ -102,7 +88,8 @@ proc prepareHandShakeInitiatorMsg*(rng: ref HmacDrbgContext,
# containing handshake message and the (encrypted) transport message
# The message is sent with a messageNametag equal to the one received through
# the QR code
initiatorStep = stepHandshake(rng[], agentHS, transportMessage = transportMessage,
initiatorStep = stepHandshake(rng[], agentHS,
transportMessage = transportMessage,
messageNametag = qrMessageNametag).get()
# We prepare a Waku message from the initiators's payload2
@ -201,14 +188,16 @@ proc handleHandShakeMsg*(rng: ref HmacDrbgContext,
payload = payload
notice "Handling handshake message for step:", step = step
initiatorStep = stepHandshake(rng[], initiatorHS,
readPayloadV2 = payload,
messageNametag = initiatorMessageNametag).get()
readPayloadV2 = payload,
messageNametag = initiatorMessageNametag).get()
initiatorMessageNametag = toMessageNametag(initiatorHS)
proc initiatorHandshake*(rng: ref HmacDrbgContext, node: WakuNode,
pubSubTopic: PubsubTopic, contentTopic: ContentTopic, qr: string,
qrMessageNameTag: seq[byte], initiatorInfo: AgentKeysAndCommitment
): Future[HandshakeResult] {.async.} =
pubSubTopic: PubsubTopic,
contentTopic: ContentTopic,
qr: string, qrMessageNameTag: seq[byte],
initiatorInfo: AgentKeysAndCommitment
): Future[HandshakeResult] {.async.} =
var
readyForFinalization = false
@ -220,7 +209,8 @@ proc initiatorHandshake*(rng: ref HmacDrbgContext, node: WakuNode,
let initialMessage =
prepareHandShakeInitiatorMsg(rng, contentTopic, initiatorInfo,
qrMessageNameTag, initiatorMessageNametag, initiatorHS, initiatorStep)
qrMessageNameTag, initiatorMessageNametag,
initiatorHS, initiatorStep)
proc initiatorHandshakeHandler(topic: PubsubTopic, msg: WakuMessage): Future[
void] {.async.} =
@ -228,18 +218,23 @@ proc initiatorHandshake*(rng: ref HmacDrbgContext, node: WakuNode,
let readPayloadV2 = decodePayloadV2(msg).get()
if readPayloadV2.messageNametag == initiatorMessageNametag:
handleHandShakeMsg(rng, pubSubTopic, contentTopic, step = 2,
readPayloadV2, initiatorStep, initiatorHS, initiatorMessageNametag)
readPayloadV2, initiatorStep, initiatorHS,
initiatorMessageNametag)
let handShakeMsgStep3 = prepareHandShakeMsg(rng, contentTopic,
initiatorInfo, initiatorMessageNametag, initiatorHS, initiatorStep, step = 3)
initiatorInfo,
initiatorMessageNametag,
initiatorHS,
initiatorStep, step = 3)
await publishHandShakeMsg(node, pubSubTopic, contentTopic,
handShakeMsgStep3.get(), 3)
handShakeMsgStep3.get(), 3)
readyForFinalization = true
node.subscribe((kind: PubsubSub, topic: pubsubTopic), some(initiatorHandshakeHandler))
node.subscribe((kind: PubsubSub, topic: pubsubTopic),
some(initiatorHandshakeHandler))
await publishHandShakeInitiatorMsg(node, pubSubTopic, contentTopic,
initialMessage.get())
initialMessage.get())
while true:
if readyForFinalization: