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
parent 1d94d678b3
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

@@ -1,8 +1,8 @@
Harness status: OK
Found 244 tests
Found 281 tests
244 Pass
281 Pass
Pass setup
Pass Can wrap and unwrap RSA-OAEP public key keys using spki and RSA-OAEP
Pass Can wrap and unwrap RSA-OAEP public key keys using jwk and RSA-OAEP
@@ -56,6 +56,11 @@ Pass Can wrap and unwrap AES-GCM keys as non-extractable using raw and RSA-OAEP
Pass Can wrap and unwrap AES-GCM keys using jwk and RSA-OAEP
Pass Can wrap and unwrap AES-GCM keys as non-extractable using jwk and RSA-OAEP
Pass Can unwrap AES-GCM non-extractable keys using jwk and RSA-OAEP
Pass Can wrap and unwrap AES-KW keys using raw and RSA-OAEP
Pass Can wrap and unwrap AES-KW keys as non-extractable using raw and RSA-OAEP
Pass Can wrap and unwrap AES-KW keys using jwk and RSA-OAEP
Pass Can wrap and unwrap AES-KW keys as non-extractable using jwk and RSA-OAEP
Pass Can unwrap AES-KW non-extractable keys using jwk and RSA-OAEP
Pass Can wrap and unwrap HMAC keys using raw and RSA-OAEP
Pass Can wrap and unwrap HMAC keys as non-extractable using raw and RSA-OAEP
Pass Can wrap and unwrap HMAC keys using jwk and RSA-OAEP
@@ -118,6 +123,11 @@ Pass Can wrap and unwrap AES-GCM keys as non-extractable using raw and AES-CTR
Pass Can wrap and unwrap AES-GCM keys using jwk and AES-CTR
Pass Can wrap and unwrap AES-GCM keys as non-extractable using jwk and AES-CTR
Pass Can unwrap AES-GCM non-extractable keys using jwk and AES-CTR
Pass Can wrap and unwrap AES-KW keys using raw and AES-CTR
Pass Can wrap and unwrap AES-KW keys as non-extractable using raw and AES-CTR
Pass Can wrap and unwrap AES-KW keys using jwk and AES-CTR
Pass Can wrap and unwrap AES-KW keys as non-extractable using jwk and AES-CTR
Pass Can unwrap AES-KW non-extractable keys using jwk and AES-CTR
Pass Can wrap and unwrap HMAC keys using raw and AES-CTR
Pass Can wrap and unwrap HMAC keys as non-extractable using raw and AES-CTR
Pass Can wrap and unwrap HMAC keys using jwk and AES-CTR
@@ -180,6 +190,11 @@ Pass Can wrap and unwrap AES-GCM keys as non-extractable using raw and AES-CBC
Pass Can wrap and unwrap AES-GCM keys using jwk and AES-CBC
Pass Can wrap and unwrap AES-GCM keys as non-extractable using jwk and AES-CBC
Pass Can unwrap AES-GCM non-extractable keys using jwk and AES-CBC
Pass Can wrap and unwrap AES-KW keys using raw and AES-CBC
Pass Can wrap and unwrap AES-KW keys as non-extractable using raw and AES-CBC
Pass Can wrap and unwrap AES-KW keys using jwk and AES-CBC
Pass Can wrap and unwrap AES-KW keys as non-extractable using jwk and AES-CBC
Pass Can unwrap AES-KW non-extractable keys using jwk and AES-CBC
Pass Can wrap and unwrap HMAC keys using raw and AES-CBC
Pass Can wrap and unwrap HMAC keys as non-extractable using raw and AES-CBC
Pass Can wrap and unwrap HMAC keys using jwk and AES-CBC
@@ -242,8 +257,30 @@ Pass Can wrap and unwrap AES-GCM keys as non-extractable using raw and AES-GCM
Pass Can wrap and unwrap AES-GCM keys using jwk and AES-GCM
Pass Can wrap and unwrap AES-GCM keys as non-extractable using jwk and AES-GCM
Pass Can unwrap AES-GCM non-extractable keys using jwk and AES-GCM
Pass Can wrap and unwrap AES-KW keys using raw and AES-GCM
Pass Can wrap and unwrap AES-KW keys as non-extractable using raw and AES-GCM
Pass Can wrap and unwrap AES-KW keys using jwk and AES-GCM
Pass Can wrap and unwrap AES-KW keys as non-extractable using jwk and AES-GCM
Pass Can unwrap AES-KW non-extractable keys using jwk and AES-GCM
Pass Can wrap and unwrap HMAC keys using raw and AES-GCM
Pass Can wrap and unwrap HMAC keys as non-extractable using raw and AES-GCM
Pass Can wrap and unwrap HMAC keys using jwk and AES-GCM
Pass Can wrap and unwrap HMAC keys as non-extractable using jwk and AES-GCM
Pass Can unwrap HMAC non-extractable keys using jwk and AES-GCM
Pass Can unwrap HMAC non-extractable keys using jwk and AES-GCM
Pass Can wrap and unwrap RSA-OAEP public key keys using jwk and AES-KW
Pass Can wrap and unwrap Ed25519 private key keys using pkcs8 and AES-KW
Pass Can wrap and unwrap Ed25519 private key keys as non-extractable using pkcs8 and AES-KW
Pass Can wrap and unwrap X25519 private key keys using pkcs8 and AES-KW
Pass Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-KW
Pass Can wrap and unwrap X448 private key keys using pkcs8 and AES-KW
Pass Can wrap and unwrap X448 private key keys as non-extractable using pkcs8 and AES-KW
Pass Can wrap and unwrap AES-CTR keys using raw and AES-KW
Pass Can wrap and unwrap AES-CTR keys as non-extractable using raw and AES-KW
Pass Can wrap and unwrap AES-CBC keys using raw and AES-KW
Pass Can wrap and unwrap AES-CBC keys as non-extractable using raw and AES-KW
Pass Can wrap and unwrap AES-GCM keys using raw and AES-KW
Pass Can wrap and unwrap AES-GCM keys as non-extractable using raw and AES-KW
Pass Can wrap and unwrap AES-KW keys using raw and AES-KW
Pass Can wrap and unwrap AES-KW keys as non-extractable using raw and AES-KW
Pass Can wrap and unwrap HMAC keys using raw and AES-KW
Pass Can wrap and unwrap HMAC keys as non-extractable using raw and AES-KW