test: update WPT for WebCryptoAPI to b638c093cd

PR-URL: https://github.com/nodejs/node/pull/66689
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
Node.js GitHub Bot authored and GitHub committed 2026-10-14 21:09:57 +00:00
1 parent 4381c4730e
commit 782a3ac8ae
90 files changed
+310 -282

No files matched your search

+18 -1
View File
@@ -1 +1,18 @@
Directory for Crypto API tests
Tests for the Web Cryptography API are grouped by specification:
- Tests for [Web Cryptography API Level 2](https://w3c.github.io/webcrypto/)
are in this directory's existing operation subdirectories and root files.
- Tests for [Modern Algorithms in the Web Cryptography API](https://wicg.github.io/webcrypto-modern-algos/)
are in `modern-algos/`, including `supports()`, `getPublicKey()`, and key format extensions.
- Tests for [Secure Curves in the Web Cryptography API](https://wicg.github.io/webcrypto-secure-curves/)
are in `secure-curves/`. Ed25519 and X25519 are part of the core specification;
Ed448 and X448 are covered by the secure curves specification.
Each specification directory has a `META.yml` linking to its specification.
Helpers used across specifications remain in the shared operation directories
or `util/`; helpers specific to an extension are alongside that extension's tests.
Use `.tentative` only for assertions not yet required by a specification or that
contradict a specification, as described in the [file naming guidelines](../docs/writing-tests/file-names.md).
An algorithm being defined in an extension specification does not by itself make
its tests tentative.
@@ -1,6 +0,0 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=algorithm_registry.js
// META: script=failures.js
run_test(["AES-OCB"]);
@@ -1,6 +0,0 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=algorithm_registry.js
// META: script=failures.js
run_test(["Ed448"]);
@@ -1,6 +0,0 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=algorithm_registry.js
// META: script=failures.js
run_test(["ML-DSA-44", "ML-DSA-65", "ML-DSA-87"]);
@@ -1,6 +0,0 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=algorithm_registry.js
// META: script=failures.js
run_test(["ML-KEM-512", "ML-KEM-768", "ML-KEM-1024"]);
@@ -1,6 +0,0 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=algorithm_registry.js
// META: script=failures.js
run_test(["X448"]);
@@ -1,6 +0,0 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=algorithm_registry.js
// META: script=failures.js
run_test(["ChaCha20-Poly1305"]);
@@ -1,6 +0,0 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=algorithm_registry.js
// META: script=failures.js
run_test(["KMAC128", "KMAC256"]);
@@ -1,10 +0,0 @@
// META: title=WebCryptoAPI: importKey() for OKP keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../util/okp_key_fixtures.js
// META: script=okp_importKey_fixtures.js
// META: script=okp_importKey.js
// Test importKey and exportKey for OKP algorithms.
runTests("Ed448");
@@ -1,10 +0,0 @@
// META: title=WebCryptoAPI: importKey() for OKP keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../util/okp_key_fixtures.js
// META: script=okp_importKey_fixtures.js
// META: script=okp_importKey.js
// Test importKey and exportKey for OKP algorithms.
runTests("X448");
@@ -1,9 +0,0 @@
// META: title=WebCryptoAPI: importKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../util/okp_key_fixtures.js
// META: script=okp_importKey_failures_fixtures.js
// META: script=importKey_failures.js
run_test(["Ed448"]);
@@ -1,9 +0,0 @@
// META: title=WebCryptoAPI: importKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../util/okp_key_fixtures.js
// META: script=okp_importKey_failures_fixtures.js
// META: script=importKey_failures.js
run_test(["X448"]);
+1
View File
@@ -0,0 +1 @@
spec: https://wicg.github.io/webcrypto-modern-algos/
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: deriveBits() Using Argon2
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=argon2_vectors.js
// META: script=argon2.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: digest() cSHAKE algorithms
// META: script=../util/helpers.js
// META: script=digest_test_data.js
// META: script=digest.js
// META: script=../../util/helpers.js
// META: script=../../digest/digest_test_data.js
// META: script=../../digest/digest.js
// META: timeout=long
var subtle = crypto.subtle; // Change to test prefixed implementations
@@ -1,5 +1,5 @@
// META: title=WebCryptoAPI: digest() KangarooTwelve algorithms
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=xof_digest.js
// META: timeout=long
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: digest() SHA-3 algorithms
// META: script=../util/helpers.js
// META: script=digest_test_data.js
// META: script=digest.js
// META: script=../../util/helpers.js
// META: script=../../digest/digest_test_data.js
// META: script=../../digest/digest.js
// META: timeout=long
var subtle = crypto.subtle; // Change to test prefixed implementations
@@ -1,5 +1,5 @@
// META: title=WebCryptoAPI: digest() TurboSHAKE algorithms
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=xof_digest.js
// META: timeout=long
@@ -1,5 +1,5 @@
// META: title=WebCryptoAPI: KEM encapsulateBits() and decapsulateBits() tests
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=ml_kem_vectors.js
// META: script=hybrid_kem_vectors.js
// META: timeout=long
@@ -1,5 +1,5 @@
// META: title=WebCryptoAPI: KEM encapsulateKey() and decapsulateKey() tests
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=ml_kem_vectors.js
// META: script=hybrid_kem_vectors.js
// META: timeout=long
@@ -1,9 +1,9 @@
// META: title=WebCryptoAPI: encrypt() Using AES-OCB w/ 120-bit iv
// META: script=../util/helpers.js
// META: script=aes_common_fixtures.js
// META: script=../../util/helpers.js
// META: script=../../encrypt_decrypt/aes_common_fixtures.js
// META: script=aes_ocb_fixtures.js
// META: script=aes_ocb_vectors.js
// META: script=aes.js
// META: script=../../encrypt_decrypt/aes.js
// META: timeout=long
run_test();
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: encrypt()/decrypt() ChaCha20-Poly1305
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
var subtle = crypto.subtle; // Change to test prefixed implementations
@@ -0,0 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/failures.js
run_test(["AES-OCB"]);
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../util/helpers.js
// META: script=algorithm_registry.js
// META: script=failures.js
// META: script=../../util/helpers.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/failures.js
run_test(["MLKEM768-P256", "MLKEM768-X25519", "MLKEM1024-P384"]);
@@ -0,0 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/failures.js
run_test(["ML-DSA-44", "ML-DSA-65", "ML-DSA-87"]);
@@ -0,0 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/failures.js
run_test(["ML-KEM-512", "ML-KEM-768", "ML-KEM-1024"]);
@@ -0,0 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/failures.js
run_test(["ChaCha20-Poly1305"]);
@@ -0,0 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/failures.js
run_test(["KMAC128", "KMAC256"]);
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=algorithm_registry.js
// META: script=successes.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/successes.js
run_test(["AES-OCB"]);
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=algorithm_registry.js
// META: script=successes.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/successes.js
run_test(["MLKEM768-P256", "MLKEM768-X25519", "MLKEM1024-P384"]);
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=algorithm_registry.js
// META: script=successes.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/successes.js
run_test(["ML-DSA-44", "ML-DSA-65", "ML-DSA-87"]);
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=algorithm_registry.js
// META: script=successes.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/successes.js
run_test(["ML-KEM-512", "ML-KEM-768", "ML-KEM-1024"]);
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=algorithm_registry.js
// META: script=successes.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/successes.js
run_test(["ChaCha20-Poly1305"]);
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=algorithm_registry.js
// META: script=successes.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/successes.js
run_test(["KMAC128", "KMAC256"]);
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: getPublicKey() method
// META: timeout=long
// META: script=util/helpers.js
// META: script=../util/helpers.js
"use strict";
@@ -2,12 +2,11 @@
// META: script=/resources/idlharness.js
// META: timeout=long
// https://wicg.github.io/webcrypto-secure-curves/
// https://wicg.github.io/webcrypto-modern-algos/
idl_test(
['webcrypto', 'webcrypto-secure-curves', 'webcrypto-modern-algos'],
['html', 'dom'],
['webcrypto-modern-algos'],
['webcrypto', 'html', 'dom'],
idl_array => {
idl_array.add_objects({
Crypto: ['crypto'],
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=symmetric_importKey.js
// META: script=../../util/helpers.js
// META: script=../../import_export/symmetric_importKey.js
runTests("AES-OCB");
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=symmetric_importKey.js
// META: script=../../util/helpers.js
// META: script=../../import_export/symmetric_importKey.js
runTests("Argon2i");
runTests("Argon2d");
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=symmetric_importKey.js
// META: script=../../util/helpers.js
// META: script=../../import_export/symmetric_importKey.js
runTests("ChaCha20-Poly1305");
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for Hybrid KEM keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=Hybrid-KEM_importKey_fixtures.js
// META: script=ml_importKey.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=symmetric_importKey.js
// META: script=../../util/helpers.js
// META: script=../../import_export/symmetric_importKey.js
runTests("KMAC128");
runTests("KMAC256");
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for ML-DSA keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=../util/mldsa_key_fixtures.js
// META: script=ML-DSA_importKey_fixtures.js
// META: script=ml_importKey.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for ML-KEM keys
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=ML-KEM_importKey_fixtures.js
// META: script=ml_importKey.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: raw-secret and raw-public importKey() format aliases
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// For all existing symmetric algorithms in WebCrypto, "raw-secret" acts as an
// alias of "raw". For all existing asymmetric algorithms in WebCrypto,
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
// META: script=../util/helpers.js
// META: script=serialization.js
// META: script=../../util/helpers.js
// META: script=../../serialization/serialization.js
run_test([
{
name: 'AES-OCB',
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
// META: script=../util/helpers.js
// META: script=serialization.js
// META: script=../../util/helpers.js
// META: script=../../serialization/serialization.js
run_test([
{
name: 'ChaCha20-Poly1305',
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: Hybrid KEM CryptoKey serialization
// META: script=../util/helpers.js
// META: script=serialization.js
// META: script=../../util/helpers.js
// META: script=../../serialization/serialization.js
run_test([
{
name: 'MLKEM768-P256',
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
// META: script=../util/helpers.js
// META: script=serialization.js
// META: script=../../util/helpers.js
// META: script=../../serialization/serialization.js
run_test([
{
name: 'KMAC128',
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
// META: script=../util/helpers.js
// META: script=serialization.js
// META: script=../../util/helpers.js
// META: script=../../serialization/serialization.js
run_test([
{
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
// META: script=../util/helpers.js
// META: script=serialization.js
// META: script=../../util/helpers.js
// META: script=../../serialization/serialization.js
run_test([
{
name: 'ML-KEM-512',
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: sign() and verify() Using KMAC
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=kmac_vectors.js
// META: script=mac.js
// META: script=../../sign_verify/mac.js
// META: script=kmac.js
// META: timeout=long
@@ -1,8 +1,8 @@
// META: title=WebCryptoAPI: sign() and verify() Using ML-DSA
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=../util/mldsa_key_fixtures.js
// META: script=mldsa_vectors.js
// META: script=signature.js
// META: script=../../sign_verify/signature.js
// META: script=mldsa.js
// META: timeout=long
@@ -1,5 +1,5 @@
// META: title=WebCrypto API: supports method tests for algorithms in https://wicg.github.io/webcrypto-modern-algos/
// META: script=util/helpers.js
// META: script=../util/helpers.js
// META: script=util/supports.js
'use strict';
@@ -1,5 +1,5 @@
// META: title=WebCrypto API: supports method tests
// META: script=util/helpers.js
// META: script=../util/helpers.js
// META: script=util/supports.js
'use strict';
+1
View File
@@ -0,0 +1 @@
spec: https://wicg.github.io/webcrypto-secure-curves/
@@ -1,9 +1,9 @@
// META: title=WebCryptoAPI: deriveKey() Using ECDH with CFRG Elliptic Curves
// META: script=../util/helpers.js
// META: script=cfrg_curves_bits_fixtures.js
// META: script=derive.js
// META: script=cfrg_curves.js
// META: script=cfrg_curves_bits.js
// META: script=../../util/helpers.js
// META: script=../../derive_bits_keys/cfrg_curves_bits_fixtures.js
// META: script=../../derive_bits_keys/derive.js
// META: script=../../derive_bits_keys/cfrg_curves.js
// META: script=../../derive_bits_keys/cfrg_curves_bits.js
// Define subtests from a `promise_test` to ensure the harness does not
// complete before the subtests are available. `explicit_done` cannot be used
@@ -1,9 +1,9 @@
// META: title=WebCryptoAPI: deriveKey() Using ECDH with CFRG Elliptic Curves
// META: script=../util/helpers.js
// META: script=cfrg_curves_bits_fixtures.js
// META: script=derive.js
// META: script=cfrg_curves.js
// META: script=cfrg_curves_keys.js
// META: script=../../util/helpers.js
// META: script=../../derive_bits_keys/cfrg_curves_bits_fixtures.js
// META: script=../../derive_bits_keys/derive.js
// META: script=../../derive_bits_keys/cfrg_curves.js
// META: script=../../derive_bits_keys/cfrg_curves_keys.js
// Define subtests from a `promise_test` to ensure the harness does not
// complete before the subtests are available. `explicit_done` cannot be used
@@ -0,0 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/failures.js
run_test(["Ed448"]);
@@ -0,0 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/failures.js
run_test(["X448"]);
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=algorithm_registry.js
// META: script=successes.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/successes.js
run_test(["Ed448"]);
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
// META: script=../util/helpers.js
// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=algorithm_registry.js
// META: script=successes.js
// META: script=../../generateKey/algorithm_registry.js
// META: script=../../generateKey/successes.js
run_test(["X448"]);
@@ -0,0 +1,10 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
// META: timeout=long
// https://wicg.github.io/webcrypto-secure-curves/
idl_test(
['webcrypto-secure-curves'],
['webcrypto']
);
@@ -0,0 +1,10 @@
// META: title=WebCryptoAPI: importKey() for OKP keys
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../util/okp_key_fixtures.js
// META: script=../../import_export/okp_importKey_fixtures.js
// META: script=../../import_export/okp_importKey.js
// Test importKey and exportKey for OKP algorithms.
runTests("Ed448");
@@ -0,0 +1,10 @@
// META: title=WebCryptoAPI: importKey() for OKP keys
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../util/okp_key_fixtures.js
// META: script=../../import_export/okp_importKey_fixtures.js
// META: script=../../import_export/okp_importKey.js
// Test importKey and exportKey for OKP algorithms.
runTests("X448");
@@ -0,0 +1,9 @@
// META: title=WebCryptoAPI: importKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../util/okp_key_fixtures.js
// META: script=../../import_export/okp_importKey_failures_fixtures.js
// META: script=../../import_export/importKey_failures.js
run_test(["Ed448"]);
@@ -0,0 +1,9 @@
// META: title=WebCryptoAPI: importKey() for Failures
// META: timeout=long
// META: script=../../util/helpers.js
// META: script=../../util/okp_key_fixtures.js
// META: script=../../import_export/okp_importKey_failures_fixtures.js
// META: script=../../import_export/importKey_failures.js
run_test(["X448"]);
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
// META: script=../util/helpers.js
// META: script=serialization.js
// META: script=../../util/helpers.js
// META: script=../../serialization/serialization.js
run_test([
{
name: 'Ed448',
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
// META: script=../util/helpers.js
// META: script=serialization.js
// META: script=../../util/helpers.js
// META: script=../../serialization/serialization.js
run_test([
{
name: 'X448',
@@ -0,0 +1,8 @@
// META: title=WebCryptoAPI: sign() and verify() Using EdDSA
// META: script=../../util/helpers.js
// META: script=../../sign_verify/eddsa_vectors.js
// META: script=../../sign_verify/signature.js
// META: script=../../sign_verify/eddsa.js
// META: timeout=long
run_test("Ed448");
@@ -1,8 +0,0 @@
// META: title=WebCryptoAPI: sign() and verify() Using EdDSA
// META: script=../util/helpers.js
// META: script=eddsa_vectors.js
// META: script=signature.js
// META: script=eddsa.js
// META: timeout=long
run_test("Ed448");
+1 -1
View File
@@ -100,7 +100,7 @@
"path": "web-locks"
},
"WebCryptoAPI": {
"commit": "3127c3a492e63578ed2bf76e3d4bda805183b5a3",
"commit": "b638c093cd3e1849715130bcd99041f79980bb12",
"path": "WebCryptoAPI"
},
"webidl": {
+15 -15
View File
@@ -38,7 +38,7 @@ assert.deepStrictEqual(getUnexpectedPasses(flakySpecs, {}), []);
const specs = WPTTestSpec.from(
'WebCryptoAPI',
'getPublicKey.tentative.https.any.js',
'modern-algos/getPublicKey.https.any.js',
[],
);
@@ -47,11 +47,11 @@ assert.deepStrictEqual(specs.map((spec) => ({
isWebWorkerTest: spec.isWebWorkerTest(),
})), [
{
testPath: 'WebCryptoAPI/getPublicKey.tentative.https.any.html',
testPath: 'WebCryptoAPI/modern-algos/getPublicKey.https.any.html',
isWebWorkerTest: false,
},
{
testPath: 'WebCryptoAPI/getPublicKey.tentative.https.any.worker.html',
testPath: 'WebCryptoAPI/modern-algos/getPublicKey.https.any.worker.html',
isWebWorkerTest: true,
},
]);
@@ -90,7 +90,7 @@ assert.deepStrictEqual(
const skippedSpecs = WPTTestSpec.from(
'WebCryptoAPI',
'getPublicKey.tentative.https.any.js',
'modern-algos/getPublicKey.https.any.js',
[{ requires: [], skip: 'unsupported' }],
);
assert.deepStrictEqual(
@@ -100,7 +100,7 @@ assert.deepStrictEqual(
const skippedSubtestSpecs = WPTTestSpec.from(
'WebCryptoAPI',
'getPublicKey.tentative.https.any.js',
'modern-algos/getPublicKey.https.any.js',
[{ requires: [], skipTests: [/getPublicKey method/] }],
);
assert.ok(skippedSubtestSpecs.every(
@@ -108,7 +108,7 @@ assert.ok(skippedSubtestSpecs.every(
const scopedSpecs = WPTTestSpec.from(
'WebCryptoAPI',
'getPublicKey.tentative.https.any.js',
'modern-algos/getPublicKey.https.any.js',
[],
(spec) => (spec.getStatusKey().endsWith('.any.worker.html') ?
[{ requires: [], skip: 'worker only' }] : []),
@@ -119,26 +119,26 @@ assert.deepStrictEqual(
);
const sourceRule = {
key: 'getPublicKey.tentative.https.any.js',
key: 'modern-algos/getPublicKey.https.any.js',
requires: [],
fail: { expected: ['shared failure'] },
};
const workerRule = {
key: 'getPublicKey.tentative.https.any.worker.html',
key: 'modern-algos/getPublicKey.https.any.worker.html',
requires: [],
fail: { expected: ['worker failure'] },
};
const expectedFailureSpecs = WPTTestSpec.from(
'WebCryptoAPI',
'getPublicKey.tentative.https.any.js',
'modern-algos/getPublicKey.https.any.js',
[sourceRule],
(spec) => (spec.isWebWorkerTest() ? [workerRule] : []),
);
const expectedResults = {
'getPublicKey.tentative.https.any.html': {
'modern-algos/getPublicKey.https.any.html': {
fail: { expected: ['shared failure'] },
},
'getPublicKey.tentative.https.any.worker.html': {
'modern-algos/getPublicKey.https.any.worker.html': {
fail: { expected: ['shared failure', 'worker failure'] },
},
};
@@ -147,15 +147,15 @@ assert.deepStrictEqual(
getUnexpectedPasses(expectedFailureSpecs, expectedResults),
[],
);
expectedResults['getPublicKey.tentative.https.any.worker.html'].fail.expected =
expectedResults['modern-algos/getPublicKey.https.any.worker.html'].fail.expected =
['worker failure'];
assert.deepStrictEqual(
getUnexpectedPasses(expectedFailureSpecs, expectedResults),
['getPublicKey.tentative.https.any.worker.html:shared failure'],
['modern-algos/getPublicKey.https.any.worker.html:shared failure'],
);
expectedResults['getPublicKey.tentative.https.any.worker.html'].fail.expected =
expectedResults['modern-algos/getPublicKey.https.any.worker.html'].fail.expected =
['shared failure'];
assert.deepStrictEqual(
getUnexpectedPasses(expectedFailureSpecs, expectedResults),
['getPublicKey.tentative.https.any.worker.html:worker failure'],
['modern-algos/getPublicKey.https.any.worker.html:worker failure'],
);
+87 -87
View File
@@ -32,99 +32,99 @@ function skipSubtests(...entries) {
if (!hasOpenSSL(3, 0)) {
skip(
'encrypt_decrypt/aes_ocb.tentative.https.any.js',
'generateKey/failures_AES-OCB.tentative.https.any.js',
'generateKey/failures_kmac.tentative.https.any.js',
'generateKey/successes_AES-OCB.tentative.https.any.js',
'generateKey/successes_kmac.tentative.https.any.js',
'import_export/AES-OCB_importKey.tentative.https.any.js',
'import_export/KMAC_importKey.tentative.https.any.js',
'serialization/aes-ocb.tentative.https.any.js',
'serialization/kmac.tentative.https.any.js',
'sign_verify/kmac.tentative.https.any.js');
'modern-algos/encrypt_decrypt/aes_ocb.https.any.js',
'modern-algos/generateKey/failures_AES-OCB.https.any.js',
'modern-algos/generateKey/failures_kmac.https.any.js',
'modern-algos/generateKey/successes_AES-OCB.https.any.js',
'modern-algos/generateKey/successes_kmac.https.any.js',
'modern-algos/import_export/AES-OCB_importKey.https.any.js',
'modern-algos/import_export/KMAC_importKey.https.any.js',
'modern-algos/serialization/aes-ocb.https.any.js',
'modern-algos/serialization/kmac.https.any.js',
'modern-algos/sign_verify/kmac.https.any.js');
}
if (!hasOpenSSL(3, 2) || hasFIPS(3)) {
skip(
'derive_bits_keys/argon2.tentative.https.any.js',
'import_export/Argon2_importKey.tentative.https.any.js');
'modern-algos/derive_bits_keys/argon2.https.any.js',
'modern-algos/import_export/Argon2_importKey.https.any.js');
}
if (!hasOpenSSL(3, 5) && !isBoringSSL) {
skip(
'encap_decap/encap_decap_bits.tentative.https.any.js',
'encap_decap/encap_decap_keys.tentative.https.any.js',
'generateKey/failures_Hybrid-KEM.tentative.https.any.js',
'generateKey/failures_ML-DSA.tentative.https.any.js',
'generateKey/failures_ML-KEM.tentative.https.any.js',
'generateKey/successes_Hybrid-KEM.tentative.https.any.js',
'generateKey/successes_ML-DSA.tentative.https.any.js',
'generateKey/successes_ML-KEM.tentative.https.any.js',
'import_export/Hybrid-KEM_importKey.tentative.https.any.js',
'import_export/ML-DSA_importKey.tentative.https.any.js',
'import_export/ML-KEM_importKey.tentative.https.any.js',
'serialization/hybridkem.tentative.https.window.js',
'serialization/mldsa.tentative.https.any.js',
'serialization/mlkem.tentative.https.any.js',
'sign_verify/mldsa.tentative.https.any.js');
'modern-algos/encap_decap/encap_decap_bits.https.any.js',
'modern-algos/encap_decap/encap_decap_keys.https.any.js',
'modern-algos/generateKey/failures_Hybrid-KEM.https.any.js',
'modern-algos/generateKey/failures_ML-DSA.https.any.js',
'modern-algos/generateKey/failures_ML-KEM.https.any.js',
'modern-algos/generateKey/successes_Hybrid-KEM.https.any.js',
'modern-algos/generateKey/successes_ML-DSA.https.any.js',
'modern-algos/generateKey/successes_ML-KEM.https.any.js',
'modern-algos/import_export/Hybrid-KEM_importKey.https.any.js',
'modern-algos/import_export/ML-DSA_importKey.https.any.js',
'modern-algos/import_export/ML-KEM_importKey.https.any.js',
'modern-algos/serialization/hybridkem.https.window.js',
'modern-algos/serialization/mldsa.https.any.js',
'modern-algos/serialization/mlkem.https.any.js',
'modern-algos/sign_verify/mldsa.https.any.js');
skipSubtests(
['getPublicKey.tentative.https.any.js', /ml-?(?:kem|dsa)/i],
['modern-algos/getPublicKey.https.any.js', /ml-?(?:kem|dsa)/i],
[
'supports-modern.tentative.https.any.js',
'modern-algos/supports-modern.https.any.js',
/(?:ml-?(?:kem|dsa)|(?:en|de)capsulateKey)/i,
]);
}
if (isBoringSSL) {
skip(
'derive_bits_keys/cfrg_curves_bits_curve448.tentative.https.any.js',
'derive_bits_keys/cfrg_curves_keys_curve448.tentative.https.any.js',
'digest/cshake.tentative.https.any.js',
'digest/sha3.tentative.https.any.js',
'generateKey/failures_Ed448.tentative.https.any.js',
'generateKey/failures_Hybrid-KEM.tentative.https.any.js',
'generateKey/failures_X448.tentative.https.any.js',
'generateKey/successes_Ed448.tentative.https.any.js',
'generateKey/successes_Hybrid-KEM.tentative.https.any.js',
'generateKey/successes_X448.tentative.https.any.js',
'import_export/Hybrid-KEM_importKey.tentative.https.any.js',
'import_export/okp_importKey_Ed448.tentative.https.any.js',
'import_export/okp_importKey_failures_Ed448.tentative.https.any.js',
'import_export/okp_importKey_failures_X448.tentative.https.any.js',
'import_export/okp_importKey_X448.tentative.https.any.js',
'serialization/ed448.tentative.https.any.js',
'serialization/hybridkem.tentative.https.window.js',
'serialization/x448.tentative.https.any.js',
'sign_verify/eddsa_curve448.tentative.https.any.js');
'secure-curves/derive_bits_keys/cfrg_curves_bits_curve448.https.any.js',
'secure-curves/derive_bits_keys/cfrg_curves_keys_curve448.https.any.js',
'modern-algos/digest/cshake.https.any.js',
'modern-algos/digest/sha3.https.any.js',
'secure-curves/generateKey/failures_Ed448.https.any.js',
'modern-algos/generateKey/failures_Hybrid-KEM.https.any.js',
'secure-curves/generateKey/failures_X448.https.any.js',
'secure-curves/generateKey/successes_Ed448.https.any.js',
'modern-algos/generateKey/successes_Hybrid-KEM.https.any.js',
'secure-curves/generateKey/successes_X448.https.any.js',
'modern-algos/import_export/Hybrid-KEM_importKey.https.any.js',
'secure-curves/import_export/okp_importKey_Ed448.https.any.js',
'secure-curves/import_export/okp_importKey_failures_Ed448.https.any.js',
'secure-curves/import_export/okp_importKey_failures_X448.https.any.js',
'secure-curves/import_export/okp_importKey_X448.https.any.js',
'secure-curves/serialization/ed448.https.any.js',
'modern-algos/serialization/hybridkem.https.window.js',
'secure-curves/serialization/x448.https.any.js',
'secure-curves/sign_verify/eddsa_curve448.https.any.js');
skipSubtests(
['encap_decap/encap_decap_bits.tentative.https.any.js', /(?:ml-kem-512|mlkem)/i],
['encap_decap/encap_decap_keys.tentative.https.any.js', /(?:ml-kem-512|mlkem)/i],
['generateKey/failures_ML-KEM.tentative.https.any.js', /ml-kem-512/i],
['generateKey/successes_ML-KEM.tentative.https.any.js', /ml-kem-512/i],
['getPublicKey.tentative.https.any.js', /(?:ed448|x448|ml-kem-512|mlkem)/i],
['import_export/ML-KEM_importKey.tentative.https.any.js', /ml-kem-512/i],
['serialization/mlkem.tentative.https.any.js', /ml-kem-512/i],
['supports-modern.tentative.https.any.js', /(?:ml-kem-512|mlkem)/i]);
['modern-algos/encap_decap/encap_decap_bits.https.any.js', /(?:ml-kem-512|mlkem)/i],
['modern-algos/encap_decap/encap_decap_keys.https.any.js', /(?:ml-kem-512|mlkem)/i],
['modern-algos/generateKey/failures_ML-KEM.https.any.js', /ml-kem-512/i],
['modern-algos/generateKey/successes_ML-KEM.https.any.js', /ml-kem-512/i],
['modern-algos/getPublicKey.https.any.js', /(?:ed448|x448|ml-kem-512|mlkem)/i],
['modern-algos/import_export/ML-KEM_importKey.https.any.js', /ml-kem-512/i],
['modern-algos/serialization/mlkem.https.any.js', /ml-kem-512/i],
['modern-algos/supports-modern.https.any.js', /(?:ml-kem-512|mlkem)/i]);
}
if (hasFIPS(3)) {
skip(
'encrypt_decrypt/aes_ocb.tentative.https.any.js',
'encrypt_decrypt/chacha20_poly1305.tentative.https.any.js',
'generateKey/failures_AES-OCB.tentative.https.any.js',
'generateKey/failures_chacha20_poly1305.tentative.https.any.js',
'generateKey/successes_AES-OCB.tentative.https.any.js',
'generateKey/successes_chacha20_poly1305.tentative.https.any.js',
'import_export/AES-OCB_importKey.tentative.https.any.js',
'import_export/ChaCha20-Poly1305_importKey.tentative.https.any.js',
'serialization/aes-ocb.tentative.https.any.js',
'serialization/chacha20-poly1305.tentative.https.any.js');
'modern-algos/encrypt_decrypt/aes_ocb.https.any.js',
'modern-algos/encrypt_decrypt/chacha20_poly1305.https.any.js',
'modern-algos/generateKey/failures_AES-OCB.https.any.js',
'modern-algos/generateKey/failures_chacha20_poly1305.https.any.js',
'modern-algos/generateKey/successes_AES-OCB.https.any.js',
'modern-algos/generateKey/successes_chacha20_poly1305.https.any.js',
'modern-algos/import_export/AES-OCB_importKey.https.any.js',
'modern-algos/import_export/ChaCha20-Poly1305_importKey.https.any.js',
'modern-algos/serialization/aes-ocb.https.any.js',
'modern-algos/serialization/chacha20-poly1305.https.any.js');
skipSubtests(
[
'supports-modern.tentative.https.any.js',
'modern-algos/supports-modern.https.any.js',
/(?:ChaCha20-Poly1305|^supports returns (?:true|false) for algorithm objects with (?:valid|invalid) parameters$)/,
],
[
@@ -135,8 +135,8 @@ if (hasFIPS(3)) {
if (hasFIPS()) {
skip(
'digest/kangarootwelve.tentative.https.any.js',
'digest/turboshake.tentative.https.any.js');
'modern-algos/digest/kangarootwelve.https.any.js',
'modern-algos/digest/turboshake.https.any.js');
}
// OpenSSL 3.0 through 3.3 reject SHA-1 signature generation in FIPS mode.
@@ -153,39 +153,39 @@ if (hasFIPS(3) && !hasOpenSSL(3, 4)) {
if (hasFIPS(3, 5)) {
skip(
'derive_bits_keys/cfrg_curves_bits_curve25519.https.any.js',
'derive_bits_keys/cfrg_curves_bits_curve448.tentative.https.any.js',
'secure-curves/derive_bits_keys/cfrg_curves_bits_curve448.https.any.js',
'derive_bits_keys/cfrg_curves_keys_curve25519.https.any.js',
'derive_bits_keys/cfrg_curves_keys_curve448.tentative.https.any.js',
'generateKey/failures_Hybrid-KEM.tentative.https.any.js',
'secure-curves/derive_bits_keys/cfrg_curves_keys_curve448.https.any.js',
'modern-algos/generateKey/failures_Hybrid-KEM.https.any.js',
'generateKey/failures_X25519.https.any.js',
'generateKey/failures_X448.tentative.https.any.js',
'generateKey/successes_Hybrid-KEM.tentative.https.any.js',
'secure-curves/generateKey/failures_X448.https.any.js',
'modern-algos/generateKey/successes_Hybrid-KEM.https.any.js',
'generateKey/successes_X25519.https.any.js',
'generateKey/successes_X448.tentative.https.any.js',
'import_export/Hybrid-KEM_importKey.tentative.https.any.js',
'secure-curves/generateKey/successes_X448.https.any.js',
'modern-algos/import_export/Hybrid-KEM_importKey.https.any.js',
'import_export/okp_importKey_X25519.https.any.js',
'import_export/okp_importKey_X448.tentative.https.any.js',
'secure-curves/import_export/okp_importKey_X448.https.any.js',
'import_export/okp_importKey_failures_X25519.https.any.js',
'import_export/okp_importKey_failures_X448.tentative.https.any.js',
'serialization/hybridkem.tentative.https.window.js',
'secure-curves/import_export/okp_importKey_failures_X448.https.any.js',
'modern-algos/serialization/hybridkem.https.window.js',
'serialization/x25519.https.any.js',
'serialization/x448.tentative.https.any.js');
'secure-curves/serialization/x448.https.any.js');
skipSubtests(
[
'derive_bits_keys/derived_bits_length.https.any.js',
/^X25519 derivation/,
],
['encap_decap/encap_decap_bits.tentative.https.any.js', /mlkem/i],
['encap_decap/encap_decap_keys.tentative.https.any.js', /mlkem/i],
['getPublicKey.tentative.https.any.js', /(?:X25519|X448|MLKEM)/],
['modern-algos/encap_decap/encap_decap_bits.https.any.js', /mlkem/i],
['modern-algos/encap_decap/encap_decap_keys.https.any.js', /mlkem/i],
['modern-algos/getPublicKey.https.any.js', /(?:X25519|X448|MLKEM)/],
[
'import_export/raw_format_aliases.tentative.https.any.js',
'modern-algos/import_export/raw_format_aliases.https.any.js',
/(?:X25519|X448)/,
],
['supports-modern.tentative.https.any.js', /mlkem/i],
['modern-algos/supports-modern.https.any.js', /mlkem/i],
[
'supports.tentative.https.any.js',
'modern-algos/supports.https.any.js',
/(?:X25519|^deriveKey promise tests|^supports validates the ECDH public key$)/,
],
[
@@ -245,7 +245,7 @@ if (hasFIPS(4)) {
if (!hasFIPS()) {
skipSubtests(
['digest/kangarootwelve.tentative.https.any.js', /C=(?:\d{4,}|5(?:1[3-9]|[2-9]\d)|[6-9]\d{2}) bytes/]);
['modern-algos/digest/kangarootwelve.https.any.js', /C=(?:\d{4,}|5(?:1[3-9]|[2-9]\d)|[6-9]\d{2}) bytes/]);
}
function assertNoOverlap(fileSkips, subtestSkips) {