Skip to main content

Rc4KeyState

Struct Rc4KeyState 

Source
pub struct Rc4KeyState { /* private fields */ }
Expand description

A reusable RC4 key state. The state is advanced as data is transformed, so a single Rc4KeyState represents one continuous cipher stream.

Implementations§

Source§

impl Rc4KeyState

Source

pub fn new(key: &[u8]) -> Self

Creates a new key state by scheduling the given key bytes.

§Panics

Panics if key is empty or longer than 256 bytes (the RC4 key-state length).

Source

pub fn key_state(&self) -> &[u8; 256]

Returns the current internal key state bytes (for inspection/testing).

Source

pub fn indices(&self) -> (usize, usize)

Returns the two transform indices.

Source

pub fn transform(&mut self, input: &[u8], output: &mut [u8])

Transforms input into output using (and advancing) this key state.

RC4 is symmetric, so the same operation both encrypts and decrypts.

§Panics

Panics if output is shorter than input.

Source

pub fn transform_in_place(&mut self, buffer: &mut [u8])

Transforms buffer in place.

Source

pub fn advance(&mut self, amount: usize)

Advances the key state by amount steps without transforming any data.

Trait Implementations§

Source§

impl Clone for Rc4KeyState

Source§

fn clone(&self) -> Rc4KeyState

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Rc4KeyState

Source§

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

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.