mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-07 16:33:08 +00:00
fix: hash inputs for external nullifier, remove length prefix for sha256
This commit is contained in:
parent
2477c4980f
commit
54b827ada8
@ -379,7 +379,11 @@ method generateProof*(
|
|||||||
|
|
||||||
let x = keccak.keccak256.digest(data)
|
let x = keccak.keccak256.digest(data)
|
||||||
|
|
||||||
let extNullifier = poseidon(@[@(epoch), @(rlnIdentifier)]).valueOr:
|
let epochHash = sha256(@(epoch)).valueOr:
|
||||||
|
return err("Failed to compute epoch hash: " & error)
|
||||||
|
let rlnIdentifierHash = sha256(@(rlnIdentifier)).valueOr:
|
||||||
|
return err("Failed to compute rln identifier hash: " & error)
|
||||||
|
let extNullifier = poseidon(@[@(epochHash), @(rlnIdentifierHash)]).valueOr:
|
||||||
return err("Failed to compute external nullifier: " & error)
|
return err("Failed to compute external nullifier: " & error)
|
||||||
|
|
||||||
let witness = RLNWitnessInput(
|
let witness = RLNWitnessInput(
|
||||||
@ -457,10 +461,13 @@ method verifyProof*(
|
|||||||
|
|
||||||
var normalizedProof = proof
|
var normalizedProof = proof
|
||||||
|
|
||||||
normalizedProof.externalNullifier = poseidon(
|
let epochHash = sha256(@(proof.epoch)).valueOr:
|
||||||
@[@(proof.epoch), @(proof.rlnIdentifier)]
|
return err("Failed to compute epoch hash: " & error)
|
||||||
).valueOr:
|
let rlnIdentifierHash = sha256(@(proof.rlnIdentifier)).valueOr:
|
||||||
|
return err("Failed to compute rln identifier hash: " & error)
|
||||||
|
let externalNullifier = poseidon(@[@(epochHash), @(rlnIdentifierHash)]).valueOr:
|
||||||
return err("Failed to compute external nullifier: " & error)
|
return err("Failed to compute external nullifier: " & error)
|
||||||
|
normalizedProof.externalNullifier = externalNullifier
|
||||||
|
|
||||||
let proofBytes = serialize(normalizedProof, input)
|
let proofBytes = serialize(normalizedProof, input)
|
||||||
let proofBuffer = proofBytes.toBuffer()
|
let proofBuffer = proofBytes.toBuffer()
|
||||||
|
|||||||
@ -121,9 +121,8 @@ proc createRLNInstance*(): RLNResult =
|
|||||||
|
|
||||||
proc sha256*(data: openArray[byte]): RlnRelayResult[MerkleNode] =
|
proc sha256*(data: openArray[byte]): RlnRelayResult[MerkleNode] =
|
||||||
## a thin layer on top of the Nim wrapper of the sha256 hasher
|
## a thin layer on top of the Nim wrapper of the sha256 hasher
|
||||||
var lenPrefData = encodeLengthPrefix(data)
|
|
||||||
var
|
var
|
||||||
hashInputBuffer = lenPrefData.toBuffer()
|
hashInputBuffer = data.toBuffer()
|
||||||
outputBuffer: Buffer # will holds the hash output
|
outputBuffer: Buffer # will holds the hash output
|
||||||
|
|
||||||
trace "sha256 hash input buffer length", bufflen = hashInputBuffer.len
|
trace "sha256 hash input buffer length", bufflen = hashInputBuffer.len
|
||||||
@ -181,8 +180,12 @@ proc toLeaves*(rateCommitments: seq[RateCommitment]): RlnRelayResult[seq[seq[byt
|
|||||||
return ok(leaves)
|
return ok(leaves)
|
||||||
|
|
||||||
proc extractMetadata*(proof: RateLimitProof): RlnRelayResult[ProofMetadata] =
|
proc extractMetadata*(proof: RateLimitProof): RlnRelayResult[ProofMetadata] =
|
||||||
let externalNullifier = poseidon(@[@(proof.epoch), @(proof.rlnIdentifier)]).valueOr:
|
let epochHash = sha256(@(proof.epoch)).valueOr:
|
||||||
return err("could not construct the external nullifier")
|
return err("Failed to compute epoch hash: " & error)
|
||||||
|
let rlnIdentifierHash = sha256(@(proof.rlnIdentifier)).valueOr:
|
||||||
|
return err("Failed to compute rln identifier hash: " & error)
|
||||||
|
let externalNullifier = poseidon(@[@(epochHash), @(rlnIdentifierHash)]).valueOr:
|
||||||
|
return err("Failed to compute external nullifier: " & error)
|
||||||
return ok(
|
return ok(
|
||||||
ProofMetadata(
|
ProofMetadata(
|
||||||
nullifier: proof.nullifier,
|
nullifier: proof.nullifier,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user