Cipher

Struct Cipher 

Source
pub struct Cipher(/* private fields */);
Expand description

A symmetric cipher.

Implementations§

Source§

impl Cipher

Source

pub fn from_nid(nid: Nid) -> Option<&'static CipherRef>

Looks up the cipher for a certain nid.

This corresponds to EVP_get_cipherbynid.

Source

pub fn fetch( ctx: Option<&LibCtxRef>, algorithm: &str, properties: Option<&str>, ) -> Result<Self, ErrorStack>

Fetches a cipher object corresponding to the specified algorithm name and properties.

Requires OpenSSL 3.0.0 or newer.

This corresponds to EVP_CIPHER_fetch.

Source

pub fn aes_128_ecb() -> &'static CipherRef

Source

pub fn aes_128_cbc() -> &'static CipherRef

Source

pub fn aes_128_xts() -> &'static CipherRef

Source

pub fn aes_256_xts() -> &'static CipherRef

Source

pub fn aes_128_ctr() -> &'static CipherRef

Source

pub fn aes_128_cfb1() -> &'static CipherRef

Source

pub fn aes_128_cfb128() -> &'static CipherRef

Source

pub fn aes_128_cfb8() -> &'static CipherRef

Source

pub fn aes_128_gcm() -> &'static CipherRef

Source

pub fn aes_128_ccm() -> &'static CipherRef

Source

pub fn aes_128_ofb() -> &'static CipherRef

Source

pub fn aes_128_ocb() -> &'static CipherRef

Requires OpenSSL 1.1.0 or newer.

Source

pub fn aes_128_wrap() -> &'static CipherRef

Requires OpenSSL 1.0.2 or newer.

Source

pub fn aes_128_wrap_pad() -> &'static CipherRef

Requires OpenSSL 1.1.0 or newer.

Source

pub fn aes_192_ecb() -> &'static CipherRef

Source

pub fn aes_192_cbc() -> &'static CipherRef

Source

pub fn aes_192_ctr() -> &'static CipherRef

Source

pub fn aes_192_cfb1() -> &'static CipherRef

Source

pub fn aes_192_cfb128() -> &'static CipherRef

Source

pub fn aes_192_cfb8() -> &'static CipherRef

Source

pub fn aes_192_gcm() -> &'static CipherRef

Source

pub fn aes_192_ccm() -> &'static CipherRef

Source

pub fn aes_192_ofb() -> &'static CipherRef

Source

pub fn aes_192_ocb() -> &'static CipherRef

Requires OpenSSL 1.1.0 or newer.

Source

pub fn aes_192_wrap() -> &'static CipherRef

Requires OpenSSL 1.0.2 or newer.

Source

pub fn aes_192_wrap_pad() -> &'static CipherRef

Requires OpenSSL 1.1.0 or newer.

Source

pub fn aes_256_ecb() -> &'static CipherRef

Source

pub fn aes_256_cbc() -> &'static CipherRef

Source

pub fn aes_256_ctr() -> &'static CipherRef

Source

pub fn aes_256_cfb1() -> &'static CipherRef

Source

pub fn aes_256_cfb128() -> &'static CipherRef

Source

pub fn aes_256_cfb8() -> &'static CipherRef

Source

pub fn aes_256_gcm() -> &'static CipherRef

Source

pub fn aes_256_ccm() -> &'static CipherRef

Source

pub fn aes_256_ofb() -> &'static CipherRef

Source

pub fn aes_256_ocb() -> &'static CipherRef

Requires OpenSSL 1.1.0 or newer.

Source

pub fn aes_256_wrap() -> &'static CipherRef

Requires OpenSSL 1.0.2 or newer.

Source

pub fn aes_256_wrap_pad() -> &'static CipherRef

Requires OpenSSL 1.1.0 or newer.

Source

pub fn bf_cbc() -> &'static CipherRef

Source

pub fn bf_ecb() -> &'static CipherRef

Source

pub fn bf_cfb64() -> &'static CipherRef

Source

pub fn bf_ofb() -> &'static CipherRef

Source

pub fn des_cbc() -> &'static CipherRef

Source

pub fn des_ecb() -> &'static CipherRef

Source

pub fn des_ede3() -> &'static CipherRef

Source

pub fn des_ede3_ecb() -> &'static CipherRef

Source

pub fn des_ede3_cbc() -> &'static CipherRef

Source

pub fn des_ede3_cfb8() -> &'static CipherRef

Source

pub fn des_ede3_cfb64() -> &'static CipherRef

Source

pub fn des_ede3_ofb() -> &'static CipherRef

Source

pub fn rc4() -> &'static CipherRef

Source

pub fn cast5_cfb64() -> &'static CipherRef

Source

pub fn cast5_ecb() -> &'static CipherRef

Source

pub fn cast5_cbc() -> &'static CipherRef

Source

pub fn cast5_ofb() -> &'static CipherRef

Source

pub fn chacha20() -> &'static CipherRef

Source

pub fn chacha20_poly1305() -> &'static CipherRef

Source

pub fn sm4_ecb() -> &'static CipherRef

Source

pub fn sm4_cbc() -> &'static CipherRef

Source

pub fn sm4_ctr() -> &'static CipherRef

Source

pub fn sm4_cfb128() -> &'static CipherRef

Source

pub fn sm4_ofb() -> &'static CipherRef

Methods from Deref<Target = CipherRef>§

Source

pub fn nid(&self) -> Nid

Returns the cipher’s Nid.

This corresponds to EVP_CIPHER_nid.

Source

pub fn key_length(&self) -> usize

Returns the length of keys used with this cipher.

This corresponds to EVP_CIPHER_key_length.

Source

pub fn iv_length(&self) -> usize

Returns the length of the IV used with this cipher.

§Note

Ciphers that do not use an IV have an IV length of 0.

This corresponds to EVP_CIPHER_iv_length.

Source

pub fn block_size(&self) -> usize

Returns the block size of the cipher.

§Note

Stream ciphers have a block size of 1.

This corresponds to EVP_CIPHER_block_size.

Trait Implementations§

Source§

impl Deref for Cipher

Source§

type Target = CipherRef

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for Cipher

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl Drop for Cipher

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl ForeignType for Cipher

Source§

type CType = EVP_CIPHER

The raw C type.
Source§

type Ref = CipherRef

The type representing a reference to this type.
Source§

unsafe fn from_ptr(ptr: *mut Self::CType) -> Self

Constructs an instance of this type from its raw type.
Source§

fn as_ptr(&self) -> *mut Self::CType

Returns a raw pointer to the wrapped value.
Source§

impl Send for Cipher

Source§

impl Sync for Cipher

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes