-pub fn decrypt(cypherdata: &[u8], iv: &[u8]) -> Vec<u8> {
- symm::decrypt(symm::AES_256_CBC, KEY_C, iv.to_vec(), cypherdata)
+pub fn decrypt(cypherdata: &[u8], iv: &[u8]) -> Option<Vec<u8>> {
+ let c = symm::Crypter::new(symm::AES_256_CBC);
+ c.init(symm::Decrypt, KEY_C, iv.to_vec());
+ c.pad(false); // Padding disabled!
+ let mut r = c.update(cypherdata);
+ let rest = c.finalize();
+ if rest.is_empty() {
+ Some(r)
+ } else {
+ None
+ }