Skip to content

Commit 35a8381

Browse files
committed
fix: hash inputs for external nullifier, remove length prefix for sha256
1 parent 12952d0 commit 35a8381

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

waku/waku_rln_relay/group_manager/on_chain/group_manager.nim

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -457,10 +457,15 @@ method verifyProof*(
457457

458458
var normalizedProof = proof
459459

460-
normalizedProof.externalNullifier = poseidon(
461-
@[@(proof.epoch), @(proof.rlnIdentifier)]
462-
).valueOr:
463-
return err("Failed to compute external nullifier: " & error)
460+
var epochHash = sha256(@(proof.epoch)).valueOr:
461+
return err("Failed to compute epoch hash: " & error)
462+
var rlnIdentifierHash = sha256(@(proof.rlnIdentifier)).valueOr:
463+
return err("Failed to compute rln identifier hash: " & error)
464+
var externalNullifier = poseidon(
465+
@[@(epochHash), @(rlnIdentifierHash)]
466+
).valueOr:
467+
return err("Failed to compute external nullifier: " & error)
468+
normalizedProof.externalNullifier = externalNullifier
464469

465470
let proofBytes = serialize(normalizedProof, input)
466471
let proofBuffer = proofBytes.toBuffer()

waku/waku_rln_relay/rln/wrappers.nim

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,8 @@ proc createRLNInstance*(): RLNResult =
121121

122122
proc sha256*(data: openArray[byte]): RlnRelayResult[MerkleNode] =
123123
## a thin layer on top of the Nim wrapper of the sha256 hasher
124-
var lenPrefData = encodeLengthPrefix(data)
125124
var
126-
hashInputBuffer = lenPrefData.toBuffer()
125+
hashInputBuffer = data.toBuffer()
127126
outputBuffer: Buffer # will holds the hash output
128127

129128
trace "sha256 hash input buffer length", bufflen = hashInputBuffer.len
@@ -181,8 +180,14 @@ proc toLeaves*(rateCommitments: seq[RateCommitment]): RlnRelayResult[seq[seq[byt
181180
return ok(leaves)
182181

183182
proc extractMetadata*(proof: RateLimitProof): RlnRelayResult[ProofMetadata] =
184-
let externalNullifier = poseidon(@[@(proof.epoch), @(proof.rlnIdentifier)]).valueOr:
185-
return err("could not construct the external nullifier")
183+
var epochHash = sha256(@(proof.epoch)).valueOr:
184+
return err("Failed to compute epoch hash: " & error)
185+
var rlnIdentifierHash = sha256(@(proof.rlnIdentifier)).valueOr:
186+
return err("Failed to compute rln identifier hash: " & error)
187+
var externalNullifier = poseidon(
188+
@[@(epochHash), @(rlnIdentifierHash)]
189+
).valueOr:
190+
return err("Failed to compute external nullifier: " & error)
186191
return ok(
187192
ProofMetadata(
188193
nullifier: proof.nullifier,

0 commit comments

Comments
 (0)