Trait hpke_rs_crypto::HpkeCrypto
source · 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§
sourcetype HpkePrng: RngCore + CryptoRng + HpkeTestRng
type HpkePrng: RngCore + CryptoRng + HpkeTestRng
The PRNG implementation returned in HpkeCrypto::prng()
.
Required Methods§
sourcefn supports_kdf(alg: KdfAlgorithm) -> Result<(), Error>
fn supports_kdf(alg: KdfAlgorithm) -> Result<(), Error>
Returns an error if the KDF algorithm is not supported by this crypto provider.
sourcefn supports_kem(alg: KemAlgorithm) -> Result<(), Error>
fn supports_kem(alg: KemAlgorithm) -> Result<(), Error>
Returns an error if the KEM algorithm is not supported by this crypto provider.
sourcefn supports_aead(alg: AeadAlgorithm) -> Result<(), Error>
fn supports_aead(alg: AeadAlgorithm) -> Result<(), Error>
Returns an error if the AEAD algorithm is not supported by this crypto provider.
sourcefn kdf_extract(alg: KdfAlgorithm, salt: &[u8], ikm: &[u8]) -> Vec<u8>
fn kdf_extract(alg: KdfAlgorithm, salt: &[u8], ikm: &[u8]) -> Vec<u8>
KDF Extract
sourcefn kdf_expand(
alg: KdfAlgorithm,
prk: &[u8],
info: &[u8],
output_size: usize
) -> Result<Vec<u8>, Error>
fn kdf_expand( alg: KdfAlgorithm, prk: &[u8], info: &[u8], output_size: usize ) -> Result<Vec<u8>, Error>
KDF Expand
sourcefn kem_derive(alg: KemAlgorithm, pk: &[u8], sk: &[u8]) -> Result<Vec<u8>, Error>
fn kem_derive(alg: KemAlgorithm, pk: &[u8], sk: &[u8]) -> Result<Vec<u8>, Error>
KEM Derive
sourcefn kem_derive_base(alg: KemAlgorithm, sk: &[u8]) -> Result<Vec<u8>, Error>
fn kem_derive_base(alg: KemAlgorithm, sk: &[u8]) -> Result<Vec<u8>, Error>
KEM Derive with base
sourcefn kem_key_gen(
alg: KemAlgorithm,
prng: &mut Self::HpkePrng
) -> Result<Vec<u8>, Error>
fn kem_key_gen( alg: KemAlgorithm, prng: &mut Self::HpkePrng ) -> Result<Vec<u8>, Error>
KEM Key generation
sourcefn kem_validate_sk(alg: KemAlgorithm, sk: &[u8]) -> Result<Vec<u8>, Error>
fn kem_validate_sk(alg: KemAlgorithm, sk: &[u8]) -> Result<Vec<u8>, Error>
Validate a secret key for its correctness.
Provided Methods§
sourcefn kdf_digest_length(alg: KdfAlgorithm) -> usize
fn kdf_digest_length(alg: KdfAlgorithm) -> usize
Get the length of the output digest.
sourcefn aead_key_length(alg: AeadAlgorithm) -> usize
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.
sourcefn aead_nonce_length(alg: AeadAlgorithm) -> usize
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.
sourcefn aead_tag_length(alg: AeadAlgorithm) -> usize
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.