-
Couldn't load subscription status.
- Fork 29
Description
I am having a difficult time working with the ml_kem library given what is and isn't public and I would appreciate if anyone has insight or if we could potentially make public some of the private traits.
I am writing a library that serializes encapsulation keys using a custom algorithm (see kemeleon if interested). In order to accomplish the things I need I needed to wrap the EncapsulationKey, DecapsulationKey types. However it is exceedingly difficult to do so as the PkeParams and KemParams traits required by the ::kem::DecapsulationKey<P:KemParams> are private.
For now I have gotten around this by wrapping P::DecapsulationKey where P: KemCore. But this has problems as well. For example when attempting to serialize the decapsulation key to file and the de-serialize it again later, I in theory want to call DecapsulationKey<P>::encapsulation_key() to recover the associated encapsulation key. But this is not possible through the KemCore::DecapsulationKey associated type because you are required to interact with it using the trait bounds.
What I am left with, when I wish to serialize / de-serialize the decapsulation key is to serialize both the decapsulation key and the encapsulation key together -- which seems like the wrong solution here.
Would it be possible to make the KemParams (and PkeParams) trait public so that wrapping / adding extra functionality to ml-kem keys downstream is easier?
I am happy to implement this change and make a PR myself, I just want to see if there is something I am missing or some reason this change would be frowned upon before I start.