From e1e7a0c5bc94e3fc4523e37c67d8a907ceb6ddbe Mon Sep 17 00:00:00 2001 From: Moonchild Date: Wed, 5 Feb 2025 22:53:05 +0100 Subject: [PATCH] Issue #2690 - Allow 0-length keys/empty passwords for PBKDF2. --- dom/crypto/WebCryptoTask.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/dom/crypto/WebCryptoTask.cpp b/dom/crypto/WebCryptoTask.cpp index 644afaf6f3..eab16fd1d2 100644 --- a/dom/crypto/WebCryptoTask.cpp +++ b/dom/crypto/WebCryptoTask.cpp @@ -1544,7 +1544,8 @@ public: } // Check that we have valid key data. - if (mKeyData.Length() == 0) { + // Zero-length key is allowed for PBKDF2 since it will be padded. + if (mKeyData.Length() == 0 && !mAlgName.EqualsLiteral(WEBCRYPTO_ALG_PBKDF2)) { return NS_ERROR_DOM_DATA_ERR; } @@ -2741,12 +2742,6 @@ public: { CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_PBKDF2); - // Check that we got a symmetric key - if (mSymKey.Length() == 0) { - mEarlyRv = NS_ERROR_DOM_INVALID_ACCESS_ERR; - return; - } - RootedDictionary params(aCx); mEarlyRv = Coerce(aCx, params, aAlgorithm); if (NS_FAILED(mEarlyRv)) { @@ -2754,9 +2749,9 @@ public: return; } - // length must be a multiple of 8 bigger than zero. + // Length must be a multiple of 8 bigger than zero. if (aLength == 0 || aLength % 8) { - mEarlyRv = NS_ERROR_DOM_DATA_ERR; + mEarlyRv = NS_ERROR_DOM_OPERATION_ERR; return; }