fix: don't copy BoundedVec data past length - #20
Open
asterite wants to merge 2 commits into
Open
Conversation
sha512_var/sha384_var copied the full backing array of the input BoundedVec into the padded message buffer, so prover-controlled bytes past `len` survived into the padding zero-fill region and polluted the digest. Mask the copy so bytes past `len` are always zero, and add regression tests that build a dirty vec via push/pop. Fixes noir-lang/noir-library-claude#2 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem Resolved
Resolves https://github.com/noir-lang/noir-library-claude/issues/2
Summary of Changes
digest_vartakes aBoundedVecas an input and copied all of its storage into a byte array to produce the digest. The problem is that data past the BoundedVec's length must be zero for the hash to be produced correctly. If it's the case that the BoundedVec was shrinked from some previous non-zero value, the hash isn't correct then.This PR only copies the relevant data. The second commit is a small optimization.
PR Checklist
cargo fmton default settings.