Function cbc_decryptor

Source
pub fn cbc_decryptor<X: PaddingProcessor + Send + 'static>(
    key_size: KeySize,
    key: &[u8],
    iv: &[u8],
    padding: X,
) -> Box<dyn Decryptor + 'static>
Expand description

Get the best implementation of a CbcDecryptor

Examples found in repository?
examples/symmetriccipher.rs (lines 83-87)
82fn decrypt(encrypted_data: &[u8], key: &[u8], iv: &[u8]) -> Result<Vec<u8>, symmetriccipher::SymmetricCipherError> {
83    let mut decryptor = aes::cbc_decryptor(
84            aes::KeySize::KeySize256,
85            key,
86            iv,
87            blockmodes::PkcsPadding);
88
89    let mut final_result = Vec::<u8>::new();
90    let mut read_buffer = buffer::RefReadBuffer::new(encrypted_data);
91    let mut buffer = [0; 4096];
92    let mut write_buffer = buffer::RefWriteBuffer::new(&mut buffer);
93
94    loop {
95        let result = try!(decryptor.decrypt(&mut read_buffer, &mut write_buffer, true));
96        final_result.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i));
97        match result {
98            BufferResult::BufferUnderflow => break,
99            BufferResult::BufferOverflow => { }
100        }
101    }
102
103    Ok(final_result)
104}