pub trait KemType: Send + Sync {
    type Error: IntoAnyError + Send + Sync;

    // Required methods
    fn kem_id(&self) -> u16;
    fn derive(
        &self,
        ikm: &[u8]
    ) -> Result<(HpkeSecretKey, HpkePublicKey), Self::Error>;
    fn generate(&self) -> Result<(HpkeSecretKey, HpkePublicKey), Self::Error>;
    fn public_key_validate(
        &self,
        key: &HpkePublicKey
    ) -> Result<(), Self::Error>;
    fn encap(
        &self,
        remote_key: &HpkePublicKey
    ) -> Result<KemResult, Self::Error>;
    fn decap(
        &self,
        enc: &[u8],
        secret_key: &HpkeSecretKey,
        local_public: &HpkePublicKey
    ) -> Result<Vec<u8>, Self::Error>;
}
Expand description

A trait that provides the required KEM functions

Required Associated Types§

Required Methods§

source

fn kem_id(&self) -> u16

KEM Id, as specified in RFC 9180, Section 5.1 and Table 2.

source

fn derive( &self, ikm: &[u8] ) -> Result<(HpkeSecretKey, HpkePublicKey), Self::Error>

source

fn generate(&self) -> Result<(HpkeSecretKey, HpkePublicKey), Self::Error>

source

fn public_key_validate(&self, key: &HpkePublicKey) -> Result<(), Self::Error>

source

fn encap(&self, remote_key: &HpkePublicKey) -> Result<KemResult, Self::Error>

source

fn decap( &self, enc: &[u8], secret_key: &HpkeSecretKey, local_public: &HpkePublicKey ) -> Result<Vec<u8>, Self::Error>

Implementors§