crypto-common: add TryKeyInit trait
#2097
Merged
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.
Take two for #2092
Adds a trait providing fallible key initialization, similar to the existing
KeyInittrait, but designed to handle the case that not all bytestrings of a given length represent valid keys.This is primarily useful in the context of public-key cryptography, e.g. scalars representing elliptic curve private keys.
The API and method names are duplicated from
KeyInit. It is assumed thatKeyInitandTryKeyInithave an either-or relationship, i.e. types will not impl bothKeyInitandTryKeyInit, and consumers of code which is generic over these traits will not be attempting to abstract over theKeyInit/TryKeyInitdistinction, but one or the other will make sense in a given context (e.g. symmetric cryptography usesKeyInit, ECC usesTryKeyInit)