You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
The text was updated successfully, but these errors were encountered:
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 thePkeParams
andKemParams
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 callDecapsulationKey<P>::encapsulation_key()
to recover the associated encapsulation key. But this is not possible through theKemCore::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
(andPkeParams
) 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.
The text was updated successfully, but these errors were encountered: