Skip to main content

HkdfVariant

Trait HkdfVariant 

Source
pub trait HkdfVariant<const PRK_LENGTH: usize> {
    type Prk: NewByteArray<PRK_LENGTH> + Zeroize + ZeroizeOnDrop;

    const OUTPUT_BYTES_MIN: usize;
    const OUTPUT_BYTES_MAX: usize;

    // Required methods
    fn extract(prk: &mut [u8; PRK_LENGTH], salt: Option<&[u8]>, ikm: &[u8]);
    fn expand(
        output: &mut [u8],
        context: &[u8],
        prk: &[u8; PRK_LENGTH],
    ) -> Result<(), Error>;

    // Provided method
    fn validate_output_len(output_len: usize) -> Result<(), Error> { ... }
}
Expand description

HKDF algorithm variant used by Hkdf.

Required Associated Constants§

Source

const OUTPUT_BYTES_MIN: usize

Minimum output length accepted by this variant.

Source

const OUTPUT_BYTES_MAX: usize

Maximum output length accepted by this variant.

Required Associated Types§

Source

type Prk: NewByteArray<PRK_LENGTH> + Zeroize + ZeroizeOnDrop

Default stack-allocated PRK type for this variant.

Required Methods§

Source

fn extract(prk: &mut [u8; PRK_LENGTH], salt: Option<&[u8]>, ikm: &[u8])

Creates a PRK from input keying material and optional salt.

Source

fn expand( output: &mut [u8], context: &[u8], prk: &[u8; PRK_LENGTH], ) -> Result<(), Error>

Expands a PRK into output keying material.

§Errors

Returns an error if output.len() is outside the range supported by this variant.

Provided Methods§

Source

fn validate_output_len(output_len: usize) -> Result<(), Error>

Validates an output length before allocating output storage.

§Errors

Returns an error if output_len is smaller than Self::OUTPUT_BYTES_MIN or larger than Self::OUTPUT_BYTES_MAX.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl HkdfVariant<CRYPTO_KDF_HKDF_SHA256_KEYBYTES> for HkdfSha256Variant

Source§

const OUTPUT_BYTES_MAX: usize = CRYPTO_KDF_HKDF_SHA256_BYTES_MAX

Source§

const OUTPUT_BYTES_MIN: usize = CRYPTO_KDF_HKDF_SHA256_BYTES_MIN

Source§

type Prk = StackByteArray<CRYPTO_KDF_HKDF_SHA256_KEYBYTES>

Source§

impl HkdfVariant<CRYPTO_KDF_HKDF_SHA512_KEYBYTES> for HkdfSha512Variant

Source§

const OUTPUT_BYTES_MAX: usize = CRYPTO_KDF_HKDF_SHA512_BYTES_MAX

Source§

const OUTPUT_BYTES_MIN: usize = CRYPTO_KDF_HKDF_SHA512_BYTES_MIN

Source§

type Prk = StackByteArray<CRYPTO_KDF_HKDF_SHA512_KEYBYTES>