ml-kem: replace EncodedSizeUser with ExpandedKeyEncoding
#226
+150
−144
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.
First, this commit completely migrates
EncapsulationKeyto using only thekem/crypto-commontraits:KeySizeUser,TryKeyInit,KeyExport, and changes any remaining uses to use only the new traits.Since
DecapsulationKeyuses those same traits for handlingSeeds, the only remaining use of the oldEncodedSizeUsertrait is handling the expanded form ofDecapsulationKey. So this commit repurposes it into anExpandedKeyEncodingtrait.Like
DecapsulationKey::from_expanded, the trait has been marked deprecated with a rationale given in the documentation forExpandedKeyEncoding, namely that the expanded form has only disadvantages when compared to seeds which are significantly smaller, uniformly sized, and avoid the need to do expanded key validation. It also notes several ML-KEM libraries have dropped support entirely.In the
ml-kemcrate, for now, we still need this functionality if only for tests which have been written generically, including but not limited to the ones that run the NIST ACVP vectors.