-
Notifications
You must be signed in to change notification settings - Fork 21k
crypto/ecies: improve concatKDF #20836
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
17 commits
Select commit
Hold shift + click to select a range
5b6118e
ecies: Fix reps calculation
lukechampine 753f927
crypto/ecies: avoid big integer math in overflow check
fjl 5b70f57
crypto/ecies: fix build
fjl 830d138
ecies: overhaul concatKDF
lukechampine c863c97
ecies: Append hash.Sum to k directly
lukechampine 9c5b79b
ecies: Add missing binary import
lukechampine b921ff6
crypto/ecies: fix test
fjl 870f40f
crypto/ecies: improve KDF test
fjl 3b81617
crypto/ecies: move hash.Reset call to end of loop
fjl 81823d4
crypto/ecies: avoid overallocation of key buffer
fjl 026172a
crypto/ecies: extract KDF call into shared function
fjl 2215cdf
crypto/ecies: fix doc comment for roundup
fjl c8d0688
crypto/ecies: add check on keyLen in ECIESParams
fjl 623f49a
crypto/ecies: remove redundant on-curve check in Decrypt
fjl 15c72be
crypto/ecies: oops
fjl d23792f
crypto/ecies: fix typo in comment
fjl 2775eed
crypto/ecies: fix error message
fjl File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Previously, this method could return an error,
ErrKeyDataTooLong
. So what would happen now when the same input that would triggerErrKeyDataTooLong
is fed into this one? Is that error only an implementation flaw that went away?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The error would be returned when the requested amount of key data was larger than
2^32-1
. This error could never actually happen because the concatKDF is only used internally in crypto/ecies and we always request exactly 32 bytes.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That sounds odd. So you're saying that if
kdLen > 2^32-1
, then the result is not correct, but it doesn't matter because we always have it at 32?Why don't we hardcode it at 32 then, and drop the params? Alternatively, set kdLen to
uint8
or something?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it is unlikely anyone will ever request gigabytes of secret key data from this function. If
kdLen
is very large, the result isn't necessarily incorrect, it just doesn't correspond to the NIST SP 800-56 spec.