Skip to main content

UnboundCipherKey

Struct UnboundCipherKey 

Source
pub struct UnboundCipherKey {
    algorithm: &'static Algorithm,
    key_bytes: Buffer<'static, &'static [u8]>,
}
Expand description

A key bound to a particular cipher algorithm.

Fields§

§algorithm: &'static Algorithm§key_bytes: Buffer<'static, &'static [u8]>

Implementations§

Source§

impl UnboundCipherKey

Source

pub fn new( algorithm: &'static Algorithm, key_bytes: &[u8], ) -> Result<Self, Unspecified>

Constructs an UnboundCipherKey.

§Errors
  • Unspecified if key_bytes.len() does not match the length required by algorithm.
Source

pub fn algorithm(&self) -> &'static Algorithm

Returns the algorithm associated with this key.

Source

fn validate_key_material(&self) -> Result<(), KeyRejected>

Validates the key material against algorithm-specific constraints beyond the length check performed by UnboundCipherKey::new.

For DES algorithms (behind legacy-des), this rejects weak DES subkeys and degenerate key configurations (e.g. K1 == K2 for 2TDEA). For other algorithms this is a no-op since the only constraint is key length.

The streaming cipher constructors call this because they pass raw key bytes directly to the EVP API rather than going through SymmetricCipherKey construction, which would otherwise perform these checks. This is necessary because the EVP layer internally uses DES_set_key_unchecked, which skips weak-key detection.

Trait Implementations§

Source§

impl Debug for UnboundCipherKey

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<Okm<'_, &'static Algorithm>> for UnboundCipherKey

Source§

fn from(okm: Okm<'_, &'static Algorithm>) -> Self

Converts to this type from the input type.
Source§

impl TryInto<SymmetricCipherKey> for UnboundCipherKey

Source§

type Error = KeyRejected

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<SymmetricCipherKey, Self::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.