pub trait HpkeCrypto: Debug + Send + Sync {
    type HpkePrng: RngCore + CryptoRng + HpkeTestRng;

Show 17 methods // Required methods fn name() -> String; fn supports_kdf(alg: KdfAlgorithm) -> Result<(), Error>; fn supports_kem(alg: KemAlgorithm) -> Result<(), Error>; fn supports_aead(alg: AeadAlgorithm) -> Result<(), Error>; fn prng() -> Self::HpkePrng; fn kdf_extract(alg: KdfAlgorithm, salt: &[u8], ikm: &[u8]) -> Vec<u8>; fn kdf_expand( alg: KdfAlgorithm, prk: &[u8], info: &[u8], output_size: usize ) -> Result<Vec<u8>, Error>; fn kem_derive( alg: KemAlgorithm, pk: &[u8], sk: &[u8] ) -> Result<Vec<u8>, Error>; fn kem_derive_base(alg: KemAlgorithm, sk: &[u8]) -> Result<Vec<u8>, Error>; fn kem_key_gen( alg: KemAlgorithm, prng: &mut Self::HpkePrng ) -> Result<Vec<u8>, Error>; fn kem_validate_sk(alg: KemAlgorithm, sk: &[u8]) -> Result<Vec<u8>, Error>; fn aead_seal( alg: AeadAlgorithm, key: &[u8], nonce: &[u8], aad: &[u8], msg: &[u8] ) -> Result<Vec<u8>, Error>; fn aead_open( alg: AeadAlgorithm, key: &[u8], nonce: &[u8], aad: &[u8], msg: &[u8] ) -> Result<Vec<u8>, Error>; // Provided methods fn kdf_digest_length(alg: KdfAlgorithm) -> usize { ... } fn aead_key_length(alg: AeadAlgorithm) -> usize { ... } fn aead_nonce_length(alg: AeadAlgorithm) -> usize { ... } fn aead_tag_length(alg: AeadAlgorithm) -> usize { ... }
}
Expand description

The HpkeCrypto trait defines the necessary cryptographic functions used in the HPKE implementation.

Required Associated Types§

source

type HpkePrng: RngCore + CryptoRng + HpkeTestRng

The PRNG implementation returned in HpkeCrypto::prng().

Required Methods§

source

fn name() -> String

The name of the implementation.

source

fn supports_kdf(alg: KdfAlgorithm) -> Result<(), Error>

Returns an error if the KDF algorithm is not supported by this crypto provider.

source

fn supports_kem(alg: KemAlgorithm) -> Result<(), Error>

Returns an error if the KEM algorithm is not supported by this crypto provider.

source

fn supports_aead(alg: AeadAlgorithm) -> Result<(), Error>

Returns an error if the AEAD algorithm is not supported by this crypto provider.

source

fn prng() -> Self::HpkePrng

Get a stateful PRNG. Note that this will create a new PRNG state.

source

fn kdf_extract(alg: KdfAlgorithm, salt: &[u8], ikm: &[u8]) -> Vec<u8>

KDF Extract

source

fn kdf_expand( alg: KdfAlgorithm, prk: &[u8], info: &[u8], output_size: usize ) -> Result<Vec<u8>, Error>

KDF Expand

source

fn kem_derive(alg: KemAlgorithm, pk: &[u8], sk: &[u8]) -> Result<Vec<u8>, Error>

KEM Derive

source

fn kem_derive_base(alg: KemAlgorithm, sk: &[u8]) -> Result<Vec<u8>, Error>

KEM Derive with base

source

fn kem_key_gen( alg: KemAlgorithm, prng: &mut Self::HpkePrng ) -> Result<Vec<u8>, Error>

KEM Key generation

source

fn kem_validate_sk(alg: KemAlgorithm, sk: &[u8]) -> Result<Vec<u8>, Error>

Validate a secret key for its correctness.

source

fn aead_seal( alg: AeadAlgorithm, key: &[u8], nonce: &[u8], aad: &[u8], msg: &[u8] ) -> Result<Vec<u8>, Error>

AEAD encrypt.

source

fn aead_open( alg: AeadAlgorithm, key: &[u8], nonce: &[u8], aad: &[u8], msg: &[u8] ) -> Result<Vec<u8>, Error>

AEAD decrypt.

Provided Methods§

source

fn kdf_digest_length(alg: KdfAlgorithm) -> usize

Get the length of the output digest.

source

fn aead_key_length(alg: AeadAlgorithm) -> usize

Get key length for AEAD.

Note that this function returns 0 for export only keys of unknown size.

source

fn aead_nonce_length(alg: AeadAlgorithm) -> usize

Get key length for AEAD.

Note that this function returns 0 for export only nonces of unknown size.

source

fn aead_tag_length(alg: AeadAlgorithm) -> usize

Get key length for AEAD.

Note that this function returns 0 for export only tags of unknown size.

Object Safety§

This trait is not object safe.

Implementors§