diff --git a/Libraries/LibWeb/Crypto/SubtleCrypto.cpp b/Libraries/LibWeb/Crypto/SubtleCrypto.cpp index 9f66a56095f..cdd021a0808 100644 --- a/Libraries/LibWeb/Crypto/SubtleCrypto.cpp +++ b/Libraries/LibWeb/Crypto/SubtleCrypto.cpp @@ -88,6 +88,10 @@ WebIDL::ExceptionOr normalize_an_algorithm(JS:: // fetch the actual algorithm factory from the registeredAlgorithms map. auto initial_algorithm = TRY(algorithm.get>()->get("name")); + if (initial_algorithm.is_undefined()) { + return vm.throw_completion(JS::ErrorType::NotAnObjectOfType, "Algorithm"); + } + // 4. Let algName be the value of the name attribute of initialAlg. auto algorithm_name = TRY(initial_algorithm.to_string(vm)); diff --git a/Tests/LibWeb/Text/expected/wpt-import/WebCryptoAPI/generateKey/failures_ECDH.https.any.txt b/Tests/LibWeb/Text/expected/wpt-import/WebCryptoAPI/generateKey/failures_ECDH.https.any.txt index 92287251425..121644123bb 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/WebCryptoAPI/generateKey/failures_ECDH.https.any.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/WebCryptoAPI/generateKey/failures_ECDH.https.any.txt @@ -6,8 +6,8 @@ Rerun Found 476 tests -410 Pass -66 Fail +446 Pass +30 Fail Details Result Test Name MessagePass Bad algorithm: generateKey(AES, false, [decrypt]) Pass Bad algorithm: generateKey(AES, true, [decrypt]) @@ -333,42 +333,42 @@ Pass Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, s Pass Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Pass Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Pass Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -Fail Empty algorithm: generateKey({}, false, [decrypt]) -Fail Empty algorithm: generateKey({}, true, [decrypt]) -Fail Empty algorithm: generateKey({}, RED, [decrypt]) -Fail Empty algorithm: generateKey({}, 7, [decrypt]) -Fail Empty algorithm: generateKey({}, false, [sign, decrypt]) -Fail Empty algorithm: generateKey({}, true, [sign, decrypt]) -Fail Empty algorithm: generateKey({}, RED, [sign, decrypt]) -Fail Empty algorithm: generateKey({}, 7, [sign, decrypt]) -Fail Empty algorithm: generateKey({}, false, [deriveBits, sign, decrypt]) -Fail Empty algorithm: generateKey({}, true, [deriveBits, sign, decrypt]) -Fail Empty algorithm: generateKey({}, RED, [deriveBits, sign, decrypt]) -Fail Empty algorithm: generateKey({}, 7, [deriveBits, sign, decrypt]) -Fail Empty algorithm: generateKey({}, false, [deriveBits, decrypt]) -Fail Empty algorithm: generateKey({}, true, [deriveBits, decrypt]) -Fail Empty algorithm: generateKey({}, RED, [deriveBits, decrypt]) -Fail Empty algorithm: generateKey({}, 7, [deriveBits, decrypt]) -Fail Empty algorithm: generateKey({}, false, [sign]) -Fail Empty algorithm: generateKey({}, true, [sign]) -Fail Empty algorithm: generateKey({}, RED, [sign]) -Fail Empty algorithm: generateKey({}, 7, [sign]) -Fail Empty algorithm: generateKey({}, false, [deriveBits, sign]) -Fail Empty algorithm: generateKey({}, true, [deriveBits, sign]) -Fail Empty algorithm: generateKey({}, RED, [deriveBits, sign]) -Fail Empty algorithm: generateKey({}, 7, [deriveBits, sign]) -Fail Empty algorithm: generateKey({}, false, [deriveBits]) -Fail Empty algorithm: generateKey({}, true, [deriveBits]) -Fail Empty algorithm: generateKey({}, RED, [deriveBits]) -Fail Empty algorithm: generateKey({}, 7, [deriveBits]) -Fail Empty algorithm: generateKey({}, false, []) -Fail Empty algorithm: generateKey({}, true, []) -Fail Empty algorithm: generateKey({}, RED, []) -Fail Empty algorithm: generateKey({}, 7, []) -Fail Empty algorithm: generateKey({}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -Fail Empty algorithm: generateKey({}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -Fail Empty algorithm: generateKey({}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -Fail Empty algorithm: generateKey({}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +Pass Empty algorithm: generateKey({}, false, [decrypt]) +Pass Empty algorithm: generateKey({}, true, [decrypt]) +Pass Empty algorithm: generateKey({}, RED, [decrypt]) +Pass Empty algorithm: generateKey({}, 7, [decrypt]) +Pass Empty algorithm: generateKey({}, false, [sign, decrypt]) +Pass Empty algorithm: generateKey({}, true, [sign, decrypt]) +Pass Empty algorithm: generateKey({}, RED, [sign, decrypt]) +Pass Empty algorithm: generateKey({}, 7, [sign, decrypt]) +Pass Empty algorithm: generateKey({}, false, [deriveBits, sign, decrypt]) +Pass Empty algorithm: generateKey({}, true, [deriveBits, sign, decrypt]) +Pass Empty algorithm: generateKey({}, RED, [deriveBits, sign, decrypt]) +Pass Empty algorithm: generateKey({}, 7, [deriveBits, sign, decrypt]) +Pass Empty algorithm: generateKey({}, false, [deriveBits, decrypt]) +Pass Empty algorithm: generateKey({}, true, [deriveBits, decrypt]) +Pass Empty algorithm: generateKey({}, RED, [deriveBits, decrypt]) +Pass Empty algorithm: generateKey({}, 7, [deriveBits, decrypt]) +Pass Empty algorithm: generateKey({}, false, [sign]) +Pass Empty algorithm: generateKey({}, true, [sign]) +Pass Empty algorithm: generateKey({}, RED, [sign]) +Pass Empty algorithm: generateKey({}, 7, [sign]) +Pass Empty algorithm: generateKey({}, false, [deriveBits, sign]) +Pass Empty algorithm: generateKey({}, true, [deriveBits, sign]) +Pass Empty algorithm: generateKey({}, RED, [deriveBits, sign]) +Pass Empty algorithm: generateKey({}, 7, [deriveBits, sign]) +Pass Empty algorithm: generateKey({}, false, [deriveBits]) +Pass Empty algorithm: generateKey({}, true, [deriveBits]) +Pass Empty algorithm: generateKey({}, RED, [deriveBits]) +Pass Empty algorithm: generateKey({}, 7, [deriveBits]) +Pass Empty algorithm: generateKey({}, false, []) +Pass Empty algorithm: generateKey({}, true, []) +Pass Empty algorithm: generateKey({}, RED, []) +Pass Empty algorithm: generateKey({}, 7, []) +Pass Empty algorithm: generateKey({}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +Pass Empty algorithm: generateKey({}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +Pass Empty algorithm: generateKey({}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +Pass Empty algorithm: generateKey({}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) Pass Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [encrypt]) Pass Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, encrypt]) Pass Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, encrypt])