Add buildShieldRequest shield note serializer - #28
Merged
Merged
Conversation
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.
Adds the encrypt/serialize direction for shield notes:
buildShieldRequest, a standalone builder that turns aShieldNoteinto the{ preimage, ciphertext }struct the RailgunSmartWallet contract expects.The note random is encrypted with AES-256-GCM under the ECDH shared key of the shield private key and the receiver's viewing public key; the receiver's viewing public key is encrypted with AES-256-CTR under the shield private key. Both are packed into the contract's three 32-byte
encryptedBundleslots plusshieldKey, so a built request decrypts cleanly back throughShieldNote.fromShieldCommitment.It is a standalone function rather than a
ShieldNotemethod, keeping the note a pure data model, and the serializer has nonode:imports so it stays browser-safe.Testss:
fromShieldCommitmentrecovers random, value, npk, tokenbundle[2]CTR-decrypts back to the receiver viewing public key