add mix pubkey in enr and fix lightpush rebase issues

This commit is contained in:
Prem Chaitanya Prathi 2025-03-12 13:21:29 +05:30
parent 54e6fb8631
commit 1119ef0f64
3 changed files with 33 additions and 4 deletions

View File

@ -33,6 +33,9 @@ proc enrConfiguration*(
).isOkOr:
return err("could not initialize ENR with shards")
if conf.mix and conf.mixKey.isSome():
enrBuilder.withMixKey(conf.mixKey.get())
let recordRes = enrBuilder.build()
let record =
if recordRes.isErr():

22
waku/waku_enr/mix.nim Normal file
View File

@ -0,0 +1,22 @@
{.push raises: [].}
import
std/[options],
results,
libp2p/crypto/curve25519,
nimcrypto/utils as ncrutils
import ../common/enr
const MixKeyEnrField* = "mix-key"
func withMixKey*(builder: var EnrBuilder, mixPrivKey:string) =
let mixKey = intoCurve25519Key(ncrutils.fromHex(mixPrivKey))
let mixPubKey = public(mixKey)
builder.addFieldPair(MixKeyEnrField, getBytes(mixPubKey))
func mixKey*(record: TypedRecord): Option[seq[byte]] =
let field = record.tryGet(MixKeyEnrField, seq[byte])
if field.isNone():
return none(seq[byte])
return field

View File

@ -122,15 +122,19 @@ proc publishToAny*(
proc publishWithConn*(
wl: WakuLightPushClient, pubSubTopic: PubsubTopic, message: WakuMessage, conn: Connection
): Future[WakuLightPushResult[void]] {.async, gcsafe.} =
): Future[WakuLightPushResult] {.async, gcsafe.} =
## This proc is similar to the publish one but in this case
## we use existing connection to publish.
info "publishWithConn", msg_hash = computeMessageHash(pubsubTopic, message).to0xHex
let pushRequest = PushRequest(pubSubTopic: pubSubTopic, message: message)
let rpc = PushRPC(requestId: generateRequestId(wl.rng), request: some(pushRequest))
await conn.writeLP(rpc.encode().buffer)
let pushRequest = LightpushRequest(
requestId: generateRequestId(wl.rng),
pubSubTopic: some(pubSubTopic),
message: message,
)
await conn.writeLP(pushRequest.encode().buffer)
for obs in wl.publishObservers:
obs.onMessagePublished(pubSubTopic, message)