-
Notifications
You must be signed in to change notification settings - Fork 204
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
crypto-common: test for weak keys / IVs #1739
Conversation
Maybe it's better to move it to the |
I'm not sure I understand. Didn't I place it in Are they cases where the IV on its own is problematic? (I'm only aware of it being an issue if the (key, IV) pair gets reused) |
Oh, sorry, for some reason I thought it was added to Yes, it's worth to add the same method to |
I'm not sure I see your point about But the blanket implementations should inherit from the default implementations in the traits ( |
I meant that in the I am not sure whether we should use the weak key test in the generate functions, since probability of generating such key is astronomically small (for existing implementors). @tarcieri WDYT? |
I agree a keygen producing uniformly random keys should never encounter a weak key in practice. A more interesting place to put it might be in a fallible init function, which could be separate from the existing ones. Not sure what to call something like that though... |
|
Sure, sounds good |
/// Check if an IV might be considered weak | ||
fn weak_iv_test(_iv: &Iv<Self>) -> Result<(), WeakKeyError> { | ||
Ok(()) | ||
} |
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 don't think we need this method. Plus, we can add it later in a backward-compatible way if it's needed for something after all.
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.
Can I ask you take over?
I'm not sure I can follow what you're asking or how you want the traits to be laid out.
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.
Ok, I can do it a bit later. Though this PR is almost ready in my opinion. You just need to remove KeyIvInit::weak_iv_test
and keep KeyIvInit::weak_key_test
.
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.
You also could allow edits by maintainers (there should be a checkbox on the right) and I can make the necessary edits.
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.
Restored the branch, you now have access (somehow I thought it was on by default? but it appears not)
I didn't mean to be rude, I'm just not sure I can follow the entire logic of the Inner trait and how they are meant to integrate together, and I thought that would have been easier for you to just write the code.
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.
No problem. I already created #1742 based on this PR.
Fixes #1738
Example usage: RustCrypto/block-ciphers#465