From 71ceca0ffc4239b62431550b4d9952d909d342ec Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Mon, 22 Nov 2021 23:58:21 +0100 Subject: fix(ext/crypto): don't panic on decryption failure (#12840) --- ext/crypto/lib.rs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'ext/crypto/lib.rs') diff --git a/ext/crypto/lib.rs b/ext/crypto/lib.rs index b0cd7ef06..dcf03d64c 100644 --- a/ext/crypto/lib.rs +++ b/ext/crypto/lib.rs @@ -1603,7 +1603,12 @@ pub async fn op_crypto_decrypt_key( block_modes::Cbc; let cipher = Aes128Cbc::new_from_slices(key, &iv)?; - cipher.decrypt_vec(data)? + cipher.decrypt_vec(data).map_err(|_| { + custom_error( + "DOMExceptionOperationError", + "Decryption failed".to_string(), + ) + })? } 192 => { // Section 10.3 Step 2 of RFC 2315 https://www.rfc-editor.org/rfc/rfc2315 @@ -1611,7 +1616,12 @@ pub async fn op_crypto_decrypt_key( block_modes::Cbc; let cipher = Aes192Cbc::new_from_slices(key, &iv)?; - cipher.decrypt_vec(data)? + cipher.decrypt_vec(data).map_err(|_| { + custom_error( + "DOMExceptionOperationError", + "Decryption failed".to_string(), + ) + })? } 256 => { // Section 10.3 Step 2 of RFC 2315 https://www.rfc-editor.org/rfc/rfc2315 @@ -1619,7 +1629,12 @@ pub async fn op_crypto_decrypt_key( block_modes::Cbc; let cipher = Aes256Cbc::new_from_slices(key, &iv)?; - cipher.decrypt_vec(data)? + cipher.decrypt_vec(data).map_err(|_| { + custom_error( + "DOMExceptionOperationError", + "Decryption failed".to_string(), + ) + })? } _ => unreachable!(), }; -- cgit v1.2.3