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}