[−][src]Struct shadowsocks::crypto::openssl::OpenSSLCipher
The Cipher binding for OpenSSL's libcrypto.
It should be noticed that the decipher needs to read the iv (initialization vector)
from the first call of decrypt. So the cipher will have to insert the iv into
the front of the encrypted data.
Note: This behavior works just the same as the official version of shadowsocks.
use shadowsocks::crypto::{openssl::OpenSSLCipher, CipherType, CryptoMode, StreamCipher}; let method = CipherType::Aes128Cfb; let key = method.bytes_to_key(b"password"); let iv = method.gen_init_vec(); let mut enc = OpenSSLCipher::new(method, &key[0..], &iv[0..], CryptoMode::Encrypt); let mut dec = OpenSSLCipher::new(method, &key[0..], &iv[0..], CryptoMode::Decrypt); let message = "hello world"; let mut encrypted_message = Vec::new(); enc.update(message.as_bytes(), &mut encrypted_message).unwrap(); let mut decrypted_message = Vec::new(); dec.update(&encrypted_message[..], &mut decrypted_message).unwrap(); assert!(&decrypted_message[..] == message.as_bytes());
Implementations
impl OpenSSLCipher[src]
pub fn new(
cipher_type: CipherType,
key: &[u8],
iv: &[u8],
mode: CryptoMode
) -> OpenSSLCipher[src]
cipher_type: CipherType,
key: &[u8],
iv: &[u8],
mode: CryptoMode
) -> OpenSSLCipher
Creates by type
Trait Implementations
impl Send for OpenSSLCipher[src]
impl StreamCipher for OpenSSLCipher[src]
Auto Trait Implementations
impl RefUnwindSafe for OpenSSLCipher
impl Sync for OpenSSLCipher
impl Unpin for OpenSSLCipher
impl UnwindSafe for OpenSSLCipher
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T> Instrument for T[src]
fn instrument(self, span: Span) -> Instrumented<Self>[src]
fn in_current_span(self) -> Instrumented<Self>[src]
impl<T> Instrument for T[src]
fn instrument(self, span: Span) -> Instrumented<Self>[src]
fn in_current_span(self) -> Instrumented<Self>[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> Same<T> for T[src]
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T> UnsafeAny for T where
T: Any,
T: Any,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,