LibWeb: Implement AES-KW in WebCryptoAPI

Add support for AES-KW for key wrapping/unwrapping. Very similar
implementation to other AES modes.

Added generic tests for symmetric import and specific AES-KW ones.

Adds ~400 test passes on WPT. Now we do better than Firefox in
`WebCryptoAPI/wrapKey_unwrapKey`!
This commit is contained in:
devgianlu 2024-12-16 19:38:10 +01:00 committed by Jelle Raaijmakers
commit 94374f0d19
Notes: github-actions[bot] 2024-12-17 10:01:25 +00:00
13 changed files with 1640 additions and 9 deletions

View file

@ -1130,12 +1130,12 @@ SupportedAlgorithmsMap const& supported_algorithms()
define_an_algorithm<AesGcm, AesDerivedKeyParams>("get key length"_string, "AES-GCM"_string);
// https://w3c.github.io/webcrypto/#aes-kw-registration
// FIXME: define_an_algorithm<AesKw>("wrapKey"_string, "AES-KW"_string);
// FIXME: define_an_algorithm<AesKw>("unwrapKey"_string, "AES-KW"_string);
// FIXME: define_an_algorithm<AesKw, AesKeyGenParams>("generateKey"_string, "AES-KW"_string);
// FIXME: define_an_algorithm<AesKw>("importKey"_string, "AES-KW"_string);
// FIXME: define_an_algorithm<AesKw>("exportKey"_string, "AES-KW"_string);
// FIXME: define_an_algorithm<AesKw, AesDerivedKeyParams>("get key length"_string, "AES-KW"_string);
define_an_algorithm<AesKw>("wrapKey"_string, "AES-KW"_string);
define_an_algorithm<AesKw>("unwrapKey"_string, "AES-KW"_string);
define_an_algorithm<AesKw, AesKeyGenParams>("generateKey"_string, "AES-KW"_string);
define_an_algorithm<AesKw>("importKey"_string, "AES-KW"_string);
define_an_algorithm<AesKw>("exportKey"_string, "AES-KW"_string);
define_an_algorithm<AesKw, AesDerivedKeyParams>("get key length"_string, "AES-KW"_string);
// https://w3c.github.io/webcrypto/#hmac-registration
define_an_algorithm<HMAC>("sign"_string, "HMAC"_string);