Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
52ab64e
tools: bump @eslint/plugin-kit from 0.3.3 to 0.3.4 in /tools/eslint
dependabot[bot] Aug 11, 2025
9a12f71
lib: simplify IPv6 checks in isLoopback()
pckrishnadas88 Aug 6, 2025
b35041c
inspector: prevent propagation of promise hooks to noPromise hooks
islandryu Aug 12, 2025
f54ace6
worker: add worker name to report
theanarkh Aug 12, 2025
823dce3
src: update OpenSSL pqc checks
panva Aug 12, 2025
64ffde6
src: add Intel CET properties to large_pages.S
tjuhaszrh Aug 13, 2025
6ae202f
http: add Agent.agentKeepAliveTimeoutBuffer option
haramj Aug 13, 2025
9a7700d
test: skip test-watch-mode inspect when no inspector
jasnell Aug 13, 2025
eb8b193
test_runner: fix isSkipped check in junit
mete0rfish Aug 13, 2025
9ff71a6
test: fix typos
wlgh1553 Aug 13, 2025
8d28236
tools: fix return value of try_check_compiler
theanarkh Aug 13, 2025
852b8e4
src: remove duplicate assignment of `O_EXCL` in node_constants.cc
Tango992 Aug 13, 2025
c38b7cf
worker: fix worker name with \0
theanarkh Aug 13, 2025
dd5f835
doc: add RafaelGSS as performance strategic lead
RafaelGSS Aug 13, 2025
b56d8af
esm: sync-ify module translation
joyeecheung Aug 14, 2025
f4722b1
test: refactor error checks to use assert.ifError/mustSucceed
KimSH39 Aug 15, 2025
7dee3ff
benchmark: reflect current OpenSSL in crypto key benchmarks
panva Aug 15, 2025
f87836f
src: internalize `v8::ConvertableToTraceFormat` in traces
legendecas Apr 13, 2025
c0f0845
src: iterate metadata version entries with std::array
legendecas Aug 15, 2025
7880978
module: correctly detect top-level await in ambiguous contexts
islandryu Aug 15, 2025
c022c1f
src: add internal GetOptionsAsFlags
pmarchini Aug 16, 2025
3780911
test: add missing hasPostData in test-inspector-emit-protocol-event
islandryu Aug 16, 2025
61c3bcd
crypto: support ML-KEM KeyObject
panva Aug 16, 2025
c38988c
crypto: fix EVPKeyCtxPointer::publicCheck()
tniessen Aug 16, 2025
3e1551d
src: move shared_ptr objects in KeyObjectData
tniessen Aug 16, 2025
7f457f8
test: use case-insensitive path checking on Windows in fs.cpSync tests
joyeecheung Aug 16, 2025
b7ea39d
http2: report sent headers object in client stream dcs
RaisinTen Aug 17, 2025
c6e3d5d
sea: support execArgv in sea config
joyeecheung Aug 17, 2025
9b69baf
deps: V8: cherry-pick 59d52e311bb1
May 28, 2025
b3af17c
deps: V8: cherry-pick 7b91e3e2cbaf
May 29, 2025
0930c21
test: deflake connection refused proxy tests
joyeecheung Aug 14, 2025
3462b46
src: use simdjson::pad
0hmX Aug 17, 2025
44a8ecf
src: assert memory calc for max-old-space-size-percentage
Asaf-Federman Aug 18, 2025
9a6a8e3
tools: update coverage GitHub Actions to fixed version
Trott Aug 18, 2025
65c870e
node-api: clarify enum value ABI stability
legendecas Aug 18, 2025
99e4a12
sqlite: avoid useless call to FromMaybe()
tniessen Aug 18, 2025
716750f
src: fix order of CHECK_NOT_NULL/dereference
tniessen Aug 18, 2025
0ecd821
test: split test-wasi.js
joyeecheung Aug 15, 2025
ca7856e
test: mark test-wasi-pthread as flaky
joyeecheung Aug 15, 2025
9e76089
doc: clarify glob's exclude option behavior
hotpineapple Aug 18, 2025
8f8960c
doc: fix the version tls.DEFAULT_CIPHERS was added
mureinik Aug 18, 2025
e7809d6
test: make test-debug-process locale-independent
Amemome Aug 19, 2025
2b7a7a5
doc,crypto: add supported asymmetric key types section
panva Aug 19, 2025
e076f78
test_runner: add option to rerun only failed tests
MoLow Aug 19, 2025
15ae21b
util: add some additional error classes to `wellKnownPrototypes`
erights Aug 19, 2025
ebe9272
inspector: initial support websocket inspection
islandryu Aug 19, 2025
b68e0d1
util: fix error's namespaced node_modules highlighting using inspect
BridgeAR Aug 19, 2025
a553822
crypto: support ML-DSA in Web Cryptography
panva Jul 30, 2025
f4fbcca
crypto: add SubtleCrypto.supports feature detection in Web Cryptography
panva Mar 2, 2025
247d017
crypto: add SHAKE Web Cryptography digest algorithms
panva Mar 4, 2025
76cde76
crypto: add SHA-3 Web Cryptography digest algorithms
panva Aug 28, 2024
6fcce90
crypto: add subtle.getPublicKey() utility function in Web Cryptography
panva Aug 1, 2025
5598baf
test: cleanup test-webcrypto-supports
panva Aug 1, 2025
a6a31cb
doc: compress Web Cryptography Algorithm matrix
panva Aug 1, 2025
16afd10
test: add Web Cryptography wrap/unwrap vectors
panva Aug 8, 2025
3f47a2f
crypto: add ChaCha20-Poly1305 Web Cryptography algorithm
panva Aug 8, 2025
a95386f
crypto: subject some algorithms in Web Cryptography on BoringSSL absence
panva Aug 9, 2025
93fc80a
lib: refactor kSupportedAlgorithms
panva Aug 9, 2025
4fe383e
crypto: support ML-DSA spki/pkcs8 key formats in Web Cryptography
panva Aug 11, 2025
e13de45
child_process: remove unsafe array iteration
hotpineapple Aug 19, 2025
3109297
test: update WPT for WebCryptoAPI to ff26d9b307
nodejs-github-bot Aug 19, 2025
e6a6cdb
doc: add missing Zstd strategy constants
Annaick Aug 19, 2025
d3afc63
crypto: add argon2() and argon2Sync() methods
ranisalt Aug 19, 2025
b962560
doc: clarify maxRSS unit in `process.resourceUsage()`
himself65 Aug 20, 2025
e517792
test: add parseTestMetadata support
pmarchini Aug 20, 2025
027b861
benchmark, test: replace CRLF variable with string literal
wlgh1553 Aug 20, 2025
b4a23d6
http: trim off brackets from IPv6 addresses with string operations
pckrishnadas88 Aug 20, 2025
89dd770
build: do not set `-mminimal-toc` with `clang`
richardlau Aug 20, 2025
1474153
crypto: support ML-KEM, DHKEM, and RSASVE key encapsulation mechanisms
panva Aug 20, 2025
5347c49
esm: show race error message for inner module job race
joyeecheung Aug 18, 2025
2fafe4c
esm: link modules synchronously when no async loader hooks are used
joyeecheung Aug 18, 2025
1784c35
doc: add security incident reponse plan
RafaelGSS Aug 20, 2025
fe86bc6
test: fix `test-setproctitle` status when `ps` is not available
aduh95 Aug 20, 2025
99da7fb
tools: avoid parsing test files twice
pmarchini Aug 20, 2025
ed33958
test: lazy-load internalTTy
pmarchini Aug 20, 2025
8dc6f5b
stream: add brotli support to CompressionStream and DecompressionStream
KhafraDev Aug 21, 2025
dafee05
http2: add support for raw header arrays in h2Stream.respond()
pimterry Aug 21, 2025
0821b44
deps: update undici to 7.14.0
nodejs-github-bot Aug 21, 2025
4276516
crypto: normalize RsaHashedKeyParams publicExponent
panva Aug 19, 2025
207ffbe
crypto: use CryptoKey internal slots in Web Cryptography
panva Aug 19, 2025
2d05c04
crypto: return cached copies from CryptoKey algorithm and usages getters
panva Aug 19, 2025
4bf6ed0
doc: fix typos in `environment_variables.md`
phistuck Aug 21, 2025
0e8bc2c
test: rename test-net-server-drop-connections-in-cluster.js to -http-
nektro Aug 21, 2025
baa2289
typings: add missing URLBinding methods
whsung0330 Aug 21, 2025
cf84fff
doc: link to `TypedArray.from()` in signature
avivkeller Aug 21, 2025
f78f47c
test: support standalone env comment in tests
pmarchini Aug 22, 2025
99128d9
node-api: link to other programming language bindings
legendecas Aug 22, 2025
93a368d
src: use simdjson to parse --snapshot-config
joyeecheung Aug 22, 2025
e2b6bdc
sqlite: handle ?NNN parameters as positional
geeksilva97 Aug 22, 2025
389a24b
module: allow overriding linked requests for a ModuleWrap
legendecas Aug 22, 2025
b738318
crypto: fix subtle.getPublicKey error for secret type key inputs
panva Aug 22, 2025
e3ad5cc
test: skip sea tests on Linux ppc64le
richardlau Aug 22, 2025
b2b8383
test: use mustSucceed in test-repl-tab-complete-import
KimSH39 Aug 23, 2025
72937e5
crypto: require HMAC key length with SHA-3 hashes in Web Cryptography
panva Aug 23, 2025
566fb04
meta: update devcontainer to the latest schema
avivkeller Aug 23, 2025
18a2ee5
crypto: support ML-KEM in Web Cryptography
panva Aug 21, 2025
e964c43
test_runner: do not error when getting `fullName` of root context
Renegade334 Aug 23, 2025
e7084df
sqlite: add sqlite-type symbol for DatabaseSync
himself65 Aug 23, 2025
c6c4183
crypto: update root certificates to NSS 3.114
nodejs-github-bot Aug 23, 2025
152c5ef
crypto: add AES-OCB Web Cryptography algorithm
panva Aug 24, 2025
dfd4962
src: enforce assumptions in FIXED_ONE_BYTE_STRING
tniessen Aug 24, 2025
8ebd4f4
benchmark: calibrate length of util.diff
RafaelGSS Aug 24, 2025
f5ece45
benchmark: reduce readfile-permission-enabled config
RafaelGSS Aug 24, 2025
40b217a
doc: clarify experimental platform vulnerability policy
mcollina Aug 25, 2025
89fe635
crypto: load system CA certificates off thread
joyeecheung Aug 25, 2025
352d635
sea: implement execArgvExtension
joyeecheung Aug 25, 2025
0fa22cb
benchmark: calibrate config v8/serialize.js
RafaelGSS Aug 25, 2025
b4f202c
doc: improve `sqlite.backup()` progress/fulfillment documentation
Renegade334 Aug 25, 2025
4e02ea1
tools: update gyp-next to 0.20.3
nodejs-github-bot Aug 26, 2025
fe7176d
lib: do not modify prototype deprecated asyncResource (encore)
slagiewka Aug 18, 2025
d795edb
2025-08-27, Version 24.7.0 (Current)
nodejs-github-bot Aug 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 25 additions & 0 deletions .devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "Node.js Core Developer Environment",
"runArgs": [
"--platform=linux/amd64"
],
"customizations": {
"vscode": {
"extensions": [
"github.vscode-pull-request-github",
"ms-vsliveshare.vsliveshare",
"vscode-icons-team.vscode-icons",
"visualstudioexptteam.vscodeintellicode"
],
"settings": {
"terminal.integrated.profiles.linux": {
"zsh (login)": {
"path": "zsh",
"args": ["-l"]
}
}
}
}
},
"image": "nodejs/devcontainer:nightly"
}
18 changes: 0 additions & 18 deletions .devcontainer/devcontainer.json

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/coverage-linux-without-intl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,6 @@ jobs:
- name: Clean tmp
run: rm -rf coverage/tmp && rm -rf out
- name: Upload
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+
with:
directory: ./coverage
2 changes: 1 addition & 1 deletion .github/workflows/coverage-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,6 @@ jobs:
- name: Clean tmp
run: rm -rf coverage/tmp && rm -rf out
- name: Upload
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+
with:
directory: ./coverage
2 changes: 1 addition & 1 deletion .github/workflows/coverage-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,6 @@ jobs:
- name: Clean tmp
run: npx rimraf ./coverage/tmp
- name: Upload
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+
with:
directory: ./coverage
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
.*
# Exclude specific dotfiles that we want to track.
!deps/**/.*
!.devcontainer/
!.devcontainer/.devcontainer.json
!.devcontainer.json
!test/fixtures/**/.*
!.clang-format
!.cpplint
Expand Down
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V24.md#24.6.0">24.6.0</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V24.md#24.7.0">24.7.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V24.md#24.6.0">24.6.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V24.md#24.5.0">24.5.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V24.md#24.4.1">24.4.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V24.md#24.4.0">24.4.0</a><br/>
Expand Down
21 changes: 21 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,22 @@ vulnerability in the context of the Node.js threat model. In other
words, it cannot assume that a trusted element (such as the operating
system) has been compromised.

### Experimental platforms

Node.js maintains a tier-based support system for operating systems and
hardware combinations (Tier 1, Tier 2, and Experimental). For platforms
classified as "Experimental" in the [supported platforms](BUILDING.md#supported-platforms)
documentation:

* Security vulnerabilities that only affect experimental platforms will **not** be accepted as valid security issues.
* Any issues on experimental platforms will be treated as normal bugs.
* No CVEs will be issued for issues that only affect experimental platforms
* Bug bounty rewards are not available for experimental platform-specific issues

This policy recognizes that experimental platforms may not compile, may not
pass the test suite, and do not have the same level of testing and support
infrastructure as Tier 1 and Tier 2 platforms.

Being able to cause the following through control of the elements that Node.js
does not trust is considered a vulnerability:

Expand Down Expand Up @@ -284,3 +300,8 @@ Security notifications will be distributed via the following methods.
If you have suggestions on how this process could be improved, please visit
the [nodejs/security-wg](https://github.com/nodejs/security-wg)
repository.

## Incident Response Plan

In the event of a security incident, please refer to the
[Security Incident Response Plan](https://github.com/nodejs/security-wg/blob/main/INCIDENT_RESPONSE_PLAN.md).
3 changes: 3 additions & 0 deletions benchmark/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ class Benchmark {
if (typeof value === 'number') {
if (key === 'dur' || key === 'duration') {
value = 0.05;
} else if (key === 'memory') {
// minimum Argon2 memcost with 1 lane is 8
value = 8;
} else if (value > 1) {
value = 1;
}
Expand Down
53 changes: 53 additions & 0 deletions benchmark/crypto/argon2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
'use strict';

const common = require('../common.js');
const { hasOpenSSL } = require('../../test/common/crypto.js');
const assert = require('node:assert');
const {
argon2,
argon2Sync,
randomBytes,
} = require('node:crypto');

if (!hasOpenSSL(3, 2)) {
console.log('Skipping: Argon2 requires OpenSSL >= 3.2');
process.exit(0);
}

const bench = common.createBenchmark(main, {
mode: ['sync', 'async'],
algorithm: ['argon2d', 'argon2i', 'argon2id'],
passes: [1, 3],
parallelism: [2, 4, 8],
memory: [2 ** 11, 2 ** 16, 2 ** 21],
n: [50],
});

function measureSync(n, algorithm, message, nonce, options) {
bench.start();
for (let i = 0; i < n; ++i)
argon2Sync(algorithm, { ...options, message, nonce, tagLength: 64 });
bench.end(n);
}

function measureAsync(n, algorithm, message, nonce, options) {
let remaining = n;
function done(err) {
assert.ifError(err);
if (--remaining === 0)
bench.end(n);
}
bench.start();
for (let i = 0; i < n; ++i)
argon2(algorithm, { ...options, message, nonce, tagLength: 64 }, done);
}

function main({ n, mode, algorithm, ...options }) {
// Message, nonce, secret, associated data & tag length do not affect performance
const message = randomBytes(32);
const nonce = randomBytes(16);
if (mode === 'sync')
measureSync(n, algorithm, message, nonce, options);
else
measureAsync(n, algorithm, message, nonce, options);
}
8 changes: 6 additions & 2 deletions benchmark/crypto/create-keyobject.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict';

const common = require('../common.js');
const { hasOpenSSL } = require('../../test/common/crypto.js');
const crypto = require('crypto');
const fs = require('fs');
const path = require('path');
Expand All @@ -21,11 +22,14 @@ const keyFixtures = {
'ec': readKeyPair('ec_p256_public', 'ec_p256_private'),
'rsa': readKeyPair('rsa_public_2048', 'rsa_private_2048'),
'ed25519': readKeyPair('ed25519_public', 'ed25519_private'),
'ml-dsa-44': readKeyPair('ml_dsa_44_public', 'ml_dsa_44_private'),
};

if (hasOpenSSL(3, 5)) {
keyFixtures['ml-dsa-44'] = readKeyPair('ml_dsa_44_public', 'ml_dsa_44_private');
}

const bench = common.createBenchmark(main, {
keyType: ['rsa', 'ec', 'ed25519', 'ml-dsa-44'],
keyType: Object.keys(keyFixtures),
keyFormat: ['pkcs8', 'spki', 'der-pkcs8', 'der-spki', 'jwk-public', 'jwk-private'],
n: [1e3],
});
Expand Down
140 changes: 140 additions & 0 deletions benchmark/crypto/kem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
'use strict';

const common = require('../common.js');
const { hasOpenSSL } = require('../../test/common/crypto.js');
const crypto = require('crypto');
const fs = require('fs');
const path = require('path');
const fixtures_keydir = path.resolve(__dirname, '../../test/fixtures/keys/');

function readKey(name) {
return fs.readFileSync(`${fixtures_keydir}/${name}.pem`, 'utf8');
}

const keyFixtures = {};

if (hasOpenSSL(3, 5)) {
keyFixtures['ml-kem-512'] = readKey('ml_kem_512_private');
keyFixtures['ml-kem-768'] = readKey('ml_kem_768_private');
keyFixtures['ml-kem-1024'] = readKey('ml_kem_1024_private');
}
if (hasOpenSSL(3, 2)) {
keyFixtures['p-256'] = readKey('ec_p256_private');
keyFixtures['p-384'] = readKey('ec_p384_private');
keyFixtures['p-521'] = readKey('ec_p521_private');
keyFixtures.x25519 = readKey('x25519_private');
keyFixtures.x448 = readKey('x448_private');
}
if (hasOpenSSL(3, 0)) {
keyFixtures.rsa = readKey('rsa_private_2048');
}

if (Object.keys(keyFixtures).length === 0) {
console.log('no supported key types available for this OpenSSL version');
process.exit(0);
}

const bench = common.createBenchmark(main, {
keyType: Object.keys(keyFixtures),
mode: ['sync', 'async', 'async-parallel'],
keyFormat: ['keyObject', 'keyObject.unique'],
op: ['encapsulate', 'decapsulate'],
n: [1e3],
}, {
combinationFilter(p) {
// "keyObject.unique" allows to compare the result with "keyObject" to
// assess whether mutexes over the key material impact the operation
return p.keyFormat !== 'keyObject.unique' ||
(p.keyFormat === 'keyObject.unique' && p.mode === 'async-parallel');
},
});

function measureSync(n, op, privateKey, keys, ciphertexts) {
bench.start();
for (let i = 0; i < n; ++i) {
const key = privateKey || keys[i];
if (op === 'encapsulate') {
crypto.encapsulate(key);
} else {
crypto.decapsulate(key, ciphertexts[i]);
}
}
bench.end(n);
}

function measureAsync(n, op, privateKey, keys, ciphertexts) {
let remaining = n;
function done() {
if (--remaining === 0)
bench.end(n);
else
one();
}

function one() {
const key = privateKey || keys[n - remaining];
if (op === 'encapsulate') {
crypto.encapsulate(key, done);
} else {
crypto.decapsulate(key, ciphertexts[n - remaining], done);
}
}
bench.start();
one();
}

function measureAsyncParallel(n, op, privateKey, keys, ciphertexts) {
let remaining = n;
function done() {
if (--remaining === 0)
bench.end(n);
}
bench.start();
for (let i = 0; i < n; ++i) {
const key = privateKey || keys[i];
if (op === 'encapsulate') {
crypto.encapsulate(key, done);
} else {
crypto.decapsulate(key, ciphertexts[i], done);
}
}
}

function main({ n, mode, keyFormat, keyType, op }) {
const pems = [...Buffer.alloc(n)].map(() => keyFixtures[keyType]);
const keyObjects = pems.map(crypto.createPrivateKey);

let privateKey, keys, ciphertexts;

switch (keyFormat) {
case 'keyObject':
privateKey = keyObjects[0];
break;
case 'keyObject.unique':
keys = keyObjects;
break;
default:
throw new Error('not implemented');
}

// Pre-generate ciphertexts for decapsulate operations
if (op === 'decapsulate') {
if (privateKey) {
ciphertexts = [...Buffer.alloc(n)].map(() => crypto.encapsulate(privateKey).ciphertext);
} else {
ciphertexts = keys.map((key) => crypto.encapsulate(key).ciphertext);
}
}

switch (mode) {
case 'sync':
measureSync(n, op, privateKey, keys, ciphertexts);
break;
case 'async':
measureAsync(n, op, privateKey, keys, ciphertexts);
break;
case 'async-parallel':
measureAsyncParallel(n, op, privateKey, keys, ciphertexts);
break;
}
}
8 changes: 6 additions & 2 deletions benchmark/crypto/oneshot-sign.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict';

const common = require('../common.js');
const { hasOpenSSL } = require('../../test/common/crypto.js');
const crypto = require('crypto');
const fs = require('fs');
const path = require('path');
Expand All @@ -14,16 +15,19 @@ const keyFixtures = {
'ec': readKey('ec_p256_private'),
'rsa': readKey('rsa_private_2048'),
'ed25519': readKey('ed25519_private'),
'ml-dsa-44': readKey('ml_dsa_44_private'),
};

if (hasOpenSSL(3, 5)) {
keyFixtures['ml-dsa-44'] = readKey('ml_dsa_44_private');
}

const data = crypto.randomBytes(256);

let pems;
let keyObjects;

const bench = common.createBenchmark(main, {
keyType: ['rsa', 'ec', 'ed25519', 'ml-dsa-44'],
keyType: Object.keys(keyFixtures),
mode: ['sync', 'async', 'async-parallel'],
keyFormat: ['pem', 'der', 'jwk', 'keyObject', 'keyObject.unique'],
n: [1e3],
Expand Down
Loading
Loading