diff --git a/src/chat/delivery/waku_client.nim b/src/chat/delivery/waku_client.nim index bb91d6c..c846446 100644 --- a/src/chat/delivery/waku_client.nim +++ b/src/chat/delivery/waku_client.nim @@ -372,39 +372,48 @@ proc start*(client: WakuClient) {.async.} = mix_rln_interface.membershipKeyGen().valueOr: error "Failed to generate RLN identity", error = $error quit(QuitFailure) - var idCommitmentHex = "" - for b in idCred.idCommitment: - idCommitmentHex.add(toHex(int(b), 2)) + let idCommitmentBytes = @(idCred.idCommitment) info "Registering via RLN gifter", gifterPeer = client.cfg.gifterNodeAddr, - idCommitment = idCommitmentHex[0 .. 15] & "..." + identityCommitmentLen = idCommitmentBytes.len - var authPayload = none(seq[byte]) + var authType: seq[byte] + var authPayload: seq[byte] if client.cfg.gifterAuthKey.len > 0: let seckey = eth_keys.PrivateKey.fromHex(client.cfg.gifterAuthKey).valueOr: error "Failed to parse gifter auth key", error = $error quit(QuitFailure) - let sig = seckey.sign(rln_gifter_protocol.eip191Message(idCommitmentHex)) - authPayload = some(@(sig.toRaw())) + let sig = seckey.sign(rln_gifter_protocol.eip191Message(idCommitmentBytes)) + authPayload = @(sig.toRaw()) + for c in rln_gifter_protocol.EthAllowlistAuthType: + authType.add(byte(c)) info "Signing gifter request with EIP-191 auth key", signer = seckey.toPublicKey().to(eth_addresses.Address).to0xHex() let regRes = await gifterClient.requestMembership( - idCommitmentHex, uint64(lezGm.userMessageLimit), gifterPeer, authPayload + idCommitmentBytes, + some(uint64(lezGm.userMessageLimit)), + gifterPeer, + authType, + authPayload, ) if regRes.isErr: error "Failed to register via gifter", error = regRes.error quit(QuitFailure) - let regResult = regRes.get() + let success = regRes.get() + + let configAccountId = success.configAccountId.valueOr: + error "Gifter response missing configAccountId extension" + quit(QuitFailure) lezGm.credentials = some(idCred) - lezGm.membershipIndex = some(onchain_group_manager.MembershipIndex(regResult.leafIndex)) - mix_lez_client.setRlnConfig(regResult.configAccountId, regResult.leafIndex.int) + lezGm.membershipIndex = some(onchain_group_manager.MembershipIndex(success.leafIndex)) + mix_lez_client.setRlnConfig(configAccountId, success.leafIndex.int) info "Registered via RLN gifter", - leafIndex = regResult.leafIndex, - configAccount = regResult.configAccountId + leafIndex = success.leafIndex, + configAccount = configAccountId asyncSpawn taskKeepAlive(client) diff --git a/vendor/logos-lez-rln b/vendor/logos-lez-rln index 5f893fd..99ecf6b 160000 --- a/vendor/logos-lez-rln +++ b/vendor/logos-lez-rln @@ -1 +1 @@ -Subproject commit 5f893fd4b99411ee880b99f3953b0ea32b765a9d +Subproject commit 99ecf6b6a355e13bd857501009f98f5842057249 diff --git a/vendor/nwaku b/vendor/nwaku index 41d73f9..ba1ce02 160000 --- a/vendor/nwaku +++ b/vendor/nwaku @@ -1 +1 @@ -Subproject commit 41d73f92eb4e7810f830d18e8634d72759472936 +Subproject commit ba1ce0280fc9dc3e84fc630d4680302e942942d0