+ let (plain_message_bytes, hash) =\r
+ if version == 1 {\r
+ let encrypted_message = &cipher_text_bytes[48..];\r
+ (\r
+ symm::decrypt(symm::Cipher::aes_128_cbc(), &key_as_bytes, Some(iv), encrypted_message)\r
+ .map_err(|_e| DecryptError::UnableToDecrypt)?,\r
+ cipher_text_bytes[16..48].to_vec()\r
+ )\r
+ } else {\r
+ let encrypted_message = &cipher_text_bytes[16..];\r
+ let plain_text =\r
+ symm::decrypt(symm::Cipher::aes_128_cbc(), &key_as_bytes, Some(iv), encrypted_message)\r
+ .map_err(|_e| DecryptError::UnableToDecrypt)?;\r
+ (\r
+ plain_text[32..].to_vec(),\r
+ plain_text[0..32].to_vec()\r
+ )\r
+ };\r
+\r
+ if sha256(&plain_message_bytes) != hash[..] { return Err(DecryptError::HashMismatch) }\r