From e00bfecf960a7d1c60542e04d17c4e558083f8e9 Mon Sep 17 00:00:00 2001 From: upendra1997 Date: Thu, 11 Nov 2021 14:34:17 +0530 Subject: fix(crypto): handling large key length in HKDF (#12692) --- ext/crypto/lib.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'ext/crypto/lib.rs') diff --git a/ext/crypto/lib.rs b/ext/crypto/lib.rs index 2170e3c72..b0cd7ef06 100644 --- a/ext/crypto/lib.rs +++ b/ext/crypto/lib.rs @@ -876,10 +876,14 @@ pub async fn op_crypto_derive_bits( let salt = hkdf::Salt::new(algorithm, salt); let prk = salt.extract(&secret); let info = &[&*info]; - let okm = prk.expand(info, HkdfOutput(length))?; + let okm = prk.expand(info, HkdfOutput(length)).map_err(|_e| { + custom_error( + "DOMExceptionOperationError", + "The length provided for HKDF is too large", + ) + })?; let mut r = vec![0u8; length]; okm.fill(&mut r)?; - Ok(r.into()) } _ => Err(type_error("Unsupported algorithm".to_string())), -- cgit v1.2.3