Skip to content

crypto: use names for asymmetric key algorithms - #65966

Open
panva wants to merge 1 commit into
nodejs:mainfrom
panva:nid-cleanup
Open

crypto: use names for asymmetric key algorithms#65966
panva wants to merge 1 commit into
nodejs:mainfrom
panva:nid-cleanup

Conversation

@panva

@panva panva commented Sep 10, 2026

Copy link
Copy Markdown
Member

Provider-backed keys can have no numeric OpenSSL ID. Identify and construct asymmetric keys by algorithm name, replacing the custom PQC name-to-NID substitution with provider-aware matching in ncrypto.

Centralize known algorithm names, public key-type names, capabilities, and backend compatibility in ncrypto. Use named key generation jobs and remove asymmetric EVP_PKEY constants from the internal JavaScript binding.

Assisted-by: Codex

Provider-backed keys can have no numeric OpenSSL ID. Identify and
construct asymmetric keys by algorithm name, replacing the custom PQC
name-to-NID substitution with provider-aware matching in ncrypto.

Centralize known algorithm names, public key-type names, capabilities,
and backend compatibility in ncrypto. Use named key generation jobs and
remove asymmetric EVP_PKEY constants from the internal JavaScript
binding.

Signed-off-by: Filip Skokan <panva.ip@gmail.com>
Assisted-by: Codex
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/crypto
  • @nodejs/performance
  • @nodejs/security-wg

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run. labels Sep 10, 2026
@panva

panva commented Sep 10, 2026

Copy link
Copy Markdown
Member Author

Benchmark GHA (crypto / keyobject): https://github.com/nodejs/node/actions/runs/34348821454

Results

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.

Benchmark results:

                                                                                                                              confidence improvement accuracy (*)    (**)   (***)
crypto/create-keyobject.js n=1000 keyFormat='der-pkcs8' keyType='ec'                                                                         -1.19 %       ±8.48% ±11.18% ±14.34%
crypto/create-keyobject.js n=1000 keyFormat='der-pkcs8' keyType='ed25519'                                                                    -0.05 %       ±6.85%  ±9.04% ±11.59%
crypto/create-keyobject.js n=1000 keyFormat='der-pkcs8' keyType='ml-dsa-44'                                                                  -1.42 %       ±6.44%  ±8.49% ±10.89%
crypto/create-keyobject.js n=1000 keyFormat='der-pkcs8' keyType='rsa'                                                                        -0.10 %       ±8.34% ±10.99% ±14.11%
crypto/create-keyobject.js n=1000 keyFormat='der-spki' keyType='ec'                                                                           0.20 %       ±9.14% ±12.04% ±15.45%
crypto/create-keyobject.js n=1000 keyFormat='der-spki' keyType='ed25519'                                                                      1.05 %       ±8.84% ±11.65% ±14.95%
crypto/create-keyobject.js n=1000 keyFormat='der-spki' keyType='ml-dsa-44'                                                                    0.49 %      ±10.07% ±13.28% ±17.04%
crypto/create-keyobject.js n=1000 keyFormat='der-spki' keyType='rsa'                                                                          3.08 %       ±9.22% ±12.15% ±15.59%
crypto/create-keyobject.js n=1000 keyFormat='jwk-private' keyType='ec'                                                                       -0.47 %       ±6.90%  ±9.10% ±11.68%
crypto/create-keyobject.js n=1000 keyFormat='jwk-private' keyType='ed25519'                                                                   1.59 %       ±6.46%  ±8.52% ±10.93%
crypto/create-keyobject.js n=1000 keyFormat='jwk-private' keyType='ml-dsa-44'                                                                -2.82 %       ±5.88%  ±7.75%  ±9.94%
crypto/create-keyobject.js n=1000 keyFormat='jwk-private' keyType='rsa'                                                                       0.66 %       ±6.70%  ±8.83% ±11.33%
crypto/create-keyobject.js n=1000 keyFormat='jwk-public' keyType='ec'                                                                         0.29 %       ±7.61% ±10.03% ±12.87%
crypto/create-keyobject.js n=1000 keyFormat='jwk-public' keyType='ed25519'                                                                   -0.11 %       ±8.39% ±11.06% ±14.19%
crypto/create-keyobject.js n=1000 keyFormat='jwk-public' keyType='ml-dsa-44'                                                                 -3.46 %       ±8.91% ±11.74% ±15.07%
crypto/create-keyobject.js n=1000 keyFormat='jwk-public' keyType='rsa'                                                                        0.77 %       ±8.06% ±10.62% ±13.63%
crypto/create-keyobject.js n=1000 keyFormat='pkcs8' keyType='ec'                                                                              0.70 %       ±8.97% ±11.82% ±15.17%
crypto/create-keyobject.js n=1000 keyFormat='pkcs8' keyType='ed25519'                                                                         1.30 %       ±6.71%  ±8.85% ±11.35%
crypto/create-keyobject.js n=1000 keyFormat='pkcs8' keyType='ml-dsa-44'                                                                       0.85 %       ±6.67%  ±8.80% ±11.29%
crypto/create-keyobject.js n=1000 keyFormat='pkcs8' keyType='rsa'                                                                            -0.32 %       ±7.70% ±10.15% ±13.03%
crypto/create-keyobject.js n=1000 keyFormat='raw-private' keyType='ec'                                                                        2.27 %       ±7.14%  ±9.41% ±12.08%
crypto/create-keyobject.js n=1000 keyFormat='raw-private' keyType='ed25519'                                                                  -0.07 %       ±6.36%  ±8.38% ±10.75%
crypto/create-keyobject.js n=1000 keyFormat='raw-public' keyType='ec'                                                                         2.84 %       ±7.81% ±10.29% ±13.20%
crypto/create-keyobject.js n=1000 keyFormat='raw-public' keyType='ed25519'                                                                    2.83 %       ±8.59% ±11.33% ±14.53%
crypto/create-keyobject.js n=1000 keyFormat='raw-public' keyType='ml-dsa-44'                                                                 -1.07 %       ±9.68% ±12.76% ±16.37%
crypto/create-keyobject.js n=1000 keyFormat='raw-seed' keyType='ml-dsa-44'                                                                    0.96 %       ±6.13%  ±8.08% ±10.37%
crypto/create-keyobject.js n=1000 keyFormat='spki' keyType='ec'                                                                               2.45 %       ±9.53% ±12.56% ±16.12%
crypto/create-keyobject.js n=1000 keyFormat='spki' keyType='ed25519'                                                                          0.59 %       ±8.94% ±11.79% ±15.13%
crypto/create-keyobject.js n=1000 keyFormat='spki' keyType='ml-dsa-44'                                                                        1.66 %       ±8.82% ±11.62% ±14.91%
crypto/create-keyobject.js n=1000 keyFormat='spki' keyType='rsa'                                                                             -0.12 %       ±8.67% ±11.42% ±14.66%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='ed25519'                                   -0.99 %       ±8.56% ±11.29% ±14.48%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='ed448'                                     -1.39 %       ±8.59% ±11.32% ±14.53%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='ml-dsa-44'                                 -0.18 %       ±8.47% ±11.16% ±14.32%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='ml-dsa-87'                                 -1.22 %       ±8.57% ±11.29% ±14.49%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='ml-kem-1024'                               -1.07 %       ±8.44% ±11.13% ±14.28%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='ml-kem-768'                                 0.32 %       ±8.39% ±11.06% ±14.19%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='p-256'                                     -0.08 %       ±7.81% ±10.30% ±13.21%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='p-384'                                     -2.42 %      ±13.61% ±17.94% ±23.01%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='p-521'                                     -1.87 %      ±12.91% ±17.02% ±21.84%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='rsa-multiprime'                            -0.60 %       ±8.08% ±10.65% ±13.67%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='rsa-pss'                                   -0.37 %       ±7.68% ±10.12% ±12.99%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='rsa'                                       -0.36 %       ±7.86% ±10.36% ±13.30%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='slh-dsa-sha2-128s'                          0.45 %       ±8.46% ±11.15% ±14.30%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='slh-dsa-shake-256s'                        -0.37 %       ±8.64% ±11.39% ±14.62%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='x25519'                                    -1.90 %       ±8.48% ±11.18% ±14.35%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='export' keyType='x448'                                      -0.07 %       ±8.77% ±11.56% ±14.84%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='ed25519'                                   -0.86 %       ±7.35%  ±9.69% ±12.43%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='ed448'                                     -1.02 %      ±15.31% ±20.18% ±25.89%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='ml-dsa-44'                                  0.14 %       ±6.87%  ±9.05% ±11.61%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='ml-dsa-87'                                 -0.97 %       ±6.39%  ±8.43% ±10.81%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='ml-kem-1024'                               -0.74 %       ±7.67% ±10.11% ±12.97%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='ml-kem-768'                                -0.64 %       ±7.98% ±10.51% ±13.49%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='p-256'                                     -0.47 %       ±9.39% ±12.38% ±15.89%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='p-384'                                     -1.14 %       ±7.81% ±10.29% ±13.21%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='p-521'                                     -0.47 %       ±7.45%  ±9.82% ±12.60%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='rsa-multiprime'                             0.14 %       ±9.22% ±12.15% ±15.59%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='rsa-pss'                                   -1.17 %       ±8.91% ±11.75% ±15.08%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='rsa'                                       -0.47 %       ±9.05% ±11.93% ±15.30%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='slh-dsa-sha2-128s'                         -1.16 %       ±9.36% ±12.34% ±15.84%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='slh-dsa-shake-256s'                         0.01 %       ±9.30% ±12.26% ±15.73%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='x25519'                                    -0.95 %       ±7.28%  ±9.60% ±12.32%
crypto/keyobject-serialization.js n=10000 type='private' format='der' operation='import' keyType='x448'                                      -4.32 %      ±15.19% ±20.03% ±25.70%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='ed25519'                                   -1.03 %       ±7.87% ±10.38% ±13.32%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='ed448'                                      1.81 %       ±7.78% ±10.25% ±13.16%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='ml-dsa-44'                                  1.07 %       ±7.60% ±10.02% ±12.86%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='ml-dsa-87'                                 -2.16 %       ±7.45%  ±9.83% ±12.61%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='ml-kem-1024'                               -0.35 %       ±6.03%  ±7.95% ±10.21%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='ml-kem-768'                                -0.83 %       ±6.23%  ±8.22% ±10.54%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='p-256'                                     -1.64 %       ±5.57%  ±7.35%  ±9.43%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='p-384'                                     -3.02 %      ±18.05% ±23.79% ±30.53%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='p-521'                                      0.19 %      ±16.39% ±21.60% ±27.71%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='rsa-multiprime'                            -0.69 %       ±5.04%  ±6.64%  ±8.52%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='rsa'                                        0.71 %       ±4.76%  ±6.28%  ±8.06%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='slh-dsa-sha2-128s'                         -0.22 %       ±7.78% ±10.25% ±13.15%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='slh-dsa-shake-256s'                        -7.58 %       ±7.62% ±10.05% ±12.90%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='x25519'                                     0.19 %       ±7.84% ±10.34% ±13.26%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='export' keyType='x448'                                      -1.76 %       ±7.67% ±10.11% ±12.97%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='ed25519'                                   -1.06 %       ±6.74%  ±8.89% ±11.40%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='ed448'                                     -0.53 %      ±15.55% ±20.49% ±26.30%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='ml-dsa-44'                                 -0.97 %       ±6.69%  ±8.82% ±11.31%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='ml-dsa-87'                                 -1.20 %       ±6.22%  ±8.20% ±10.52%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='ml-kem-1024'                               -0.75 %       ±6.39%  ±8.43% ±10.81%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='ml-kem-768'                                -2.10 %       ±6.68%  ±8.81% ±11.30%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='p-256'                                     -0.68 %       ±7.56%  ±9.97% ±12.79%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='p-384'                                      0.85 %      ±11.17% ±14.72% ±18.89%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='p-521'                                      0.11 %      ±18.80% ±24.79% ±31.80%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='rsa-multiprime'                             0.74 %       ±7.90% ±10.41% ±13.36%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='rsa'                                        1.20 %       ±7.44%  ±9.81% ±12.58%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='slh-dsa-sha2-128s'                         -7.03 %       ±8.31% ±10.95% ±14.06%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='slh-dsa-shake-256s'                        -5.22 %       ±8.40% ±11.07% ±14.20%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='x25519'                                    -0.94 %       ±6.80%  ±8.96% ±11.49%
crypto/keyobject-serialization.js n=10000 type='private' format='jwk' operation='import' keyType='x448'                                      -2.27 %      ±15.46% ±20.38% ±26.16%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='ed25519'                                   -1.09 %       ±8.43% ±11.11% ±14.26%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='ed448'                                     -1.87 %       ±8.40% ±11.08% ±14.21%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='ml-dsa-44'                                  0.90 %       ±8.44% ±11.12% ±14.27%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='ml-dsa-87'                                 -0.98 %       ±8.27% ±10.90% ±13.99%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='ml-kem-1024'                               -0.22 %       ±8.16% ±10.75% ±13.80%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='ml-kem-768'                                 0.97 %       ±8.33% ±10.98% ±14.09%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='p-256'                                     -1.11 %       ±7.59% ±10.00% ±12.84%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='p-384'                                     -0.98 %      ±13.71% ±18.07% ±23.19%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='p-521'                                      0.18 %      ±12.92% ±17.03% ±21.86%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='rsa-multiprime'                            -1.63 %       ±7.40%  ±9.75% ±12.52%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='rsa-pss'                                    0.37 %       ±7.12%  ±9.39% ±12.05%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='rsa'                                        0.49 %       ±7.40%  ±9.76% ±12.52%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='slh-dsa-sha2-128s'                          0.88 %       ±8.28% ±10.92% ±14.01%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='slh-dsa-shake-256s'                        -1.60 %       ±8.41% ±11.09% ±14.23%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='x25519'                                    -1.58 %       ±8.33% ±10.97% ±14.08%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='export' keyType='x448'                                      -0.82 %       ±8.29% ±10.93% ±14.03%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='ed25519'                                   -1.09 %       ±7.17%  ±9.45% ±12.13%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='ed448'                                     -0.88 %      ±14.86% ±19.59% ±25.14%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='ml-dsa-44'                                  0.30 %       ±7.09%  ±9.35% ±12.00%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='ml-dsa-87'                                 -0.07 %       ±6.57%  ±8.66% ±11.11%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='ml-kem-1024'                               -0.47 %       ±7.76% ±10.23% ±13.12%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='ml-kem-768'                                 0.72 %       ±8.33% ±10.98% ±14.08%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='p-256'                                     -1.70 %       ±9.25% ±12.19% ±15.65%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='p-384'                                     -3.23 %       ±8.21% ±10.83% ±13.89%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='p-521'                                     -0.90 %       ±8.00% ±10.54% ±13.52%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='rsa-multiprime'                            -0.96 %       ±8.78% ±11.57% ±14.85%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='rsa-pss'                                   -1.56 %       ±8.45% ±11.14% ±14.30%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='rsa'                                        0.32 %       ±8.68% ±11.44% ±14.67%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='slh-dsa-sha2-128s'                         -0.61 %       ±9.18% ±12.10% ±15.53%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='slh-dsa-shake-256s'                         0.27 %       ±9.30% ±12.26% ±15.73%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='x25519'                                    -0.63 %       ±7.13%  ±9.40% ±12.06%
crypto/keyobject-serialization.js n=10000 type='private' format='pem' operation='import' keyType='x448'                                       0.12 %      ±14.99% ±19.76% ±25.36%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='ed25519'                           -3.44 %       ±8.27% ±10.90% ±13.98%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='ed448'                             -2.17 %       ±8.75% ±11.53% ±14.79%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='p-256'                             -2.70 %       ±6.05%  ±7.97% ±10.23%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='p-384'                             -2.87 %      ±16.46% ±21.70% ±27.84%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='p-521'                             -0.86 %      ±14.57% ±19.20% ±24.64%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='slh-dsa-sha2-128s'                 -2.72 %       ±8.11% ±10.69% ±13.72%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='slh-dsa-shake-256s'                -4.46 %       ±8.32% ±10.97% ±14.08%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='x25519'                            -5.00 %       ±8.24% ±10.86% ±13.94%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='export' keyType='x448'                              -4.38 %       ±8.56% ±11.28% ±14.48%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='ed25519'                           -0.32 %       ±6.76%  ±8.91% ±11.43%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='ed448'                             -0.89 %      ±15.71% ±20.70% ±26.56%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='p-256'                              2.34 %       ±8.18% ±10.79% ±13.84%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='p-384'                              2.12 %      ±14.29% ±18.83% ±24.17%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='p-521'                              0.98 %      ±20.55% ±27.08% ±34.75%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='slh-dsa-sha2-128s'                  7.89 %       ±9.34% ±12.31% ±15.80%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='slh-dsa-shake-256s'        ***     47.14 %      ±11.49% ±15.15% ±19.44%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='x25519'                            -0.26 %       ±6.70%  ±8.83% ±11.33%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-private' operation='import' keyType='x448'                              -2.09 %      ±15.70% ±20.70% ±26.56%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-seed' operation='export' keyType='ml-dsa-44'                            -2.34 %       ±8.94% ±11.78% ±15.11%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-seed' operation='export' keyType='ml-dsa-87'                            -5.08 %       ±8.88% ±11.71% ±15.03%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-seed' operation='export' keyType='ml-kem-1024'                          -0.15 %       ±9.75% ±12.86% ±16.50%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-seed' operation='export' keyType='ml-kem-768'                           -2.27 %       ±9.44% ±12.45% ±15.97%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-seed' operation='import' keyType='ml-dsa-44'                             0.01 %       ±6.58%  ±8.68% ±11.13%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-seed' operation='import' keyType='ml-dsa-87'                            -0.50 %       ±6.28%  ±8.27% ±10.61%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-seed' operation='import' keyType='ml-kem-1024'                           0.26 %       ±6.46%  ±8.51% ±10.92%
crypto/keyobject-serialization.js n=10000 type='private' format='raw-seed' operation='import' keyType='ml-kem-768'                           -1.00 %       ±6.92%  ±9.13% ±11.71%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='ed25519'                                    -2.10 %       ±8.40% ±11.08% ±14.21%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='ed448'                                      -1.74 %       ±8.63% ±11.37% ±14.59%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='ml-dsa-44'                                  -0.61 %       ±8.51% ±11.22% ±14.39%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='ml-dsa-87'                                  -1.01 %       ±8.51% ±11.21% ±14.39%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='ml-kem-1024'                                 0.38 %       ±8.31% ±10.96% ±14.06%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='ml-kem-768'                                  0.43 %       ±8.31% ±10.95% ±14.05%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='p-256'                                      -1.33 %       ±7.02%  ±9.25% ±11.87%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='p-384'                                      -1.95 %      ±15.91% ±20.97% ±26.91%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='p-521'                                      -1.65 %      ±14.38% ±18.96% ±24.33%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='rsa-multiprime'                             -1.34 %       ±8.33% ±10.98% ±14.10%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='rsa-pss'                                    -0.72 %       ±8.14% ±10.73% ±13.76%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='rsa'                                        -0.58 %       ±8.20% ±10.81% ±13.87%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='slh-dsa-sha2-128s'                           0.23 %       ±8.41% ±11.09% ±14.23%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='slh-dsa-shake-256s'                         -1.18 %       ±8.45% ±11.13% ±14.28%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='x25519'                                     -2.01 %       ±8.56% ±11.28% ±14.47%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='export' keyType='x448'                                       -1.58 %       ±8.60% ±11.34% ±14.55%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='ed25519'                                    -0.62 %       ±9.11% ±12.00% ±15.40%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='ed448'                                       0.39 %       ±9.41% ±12.41% ±15.92%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='ml-dsa-44'                                   1.24 %       ±9.85% ±12.99% ±16.67%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='ml-dsa-87'                                  -1.91 %       ±9.73% ±12.82% ±16.45%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='ml-kem-1024'                                -0.54 %       ±7.85% ±10.34% ±13.27%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='ml-kem-768'                                 -0.71 %       ±8.52% ±11.23% ±14.40%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='p-256'                                      -1.06 %       ±9.52% ±12.54% ±16.09%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='p-384'                                      -2.59 %       ±7.87% ±10.38% ±13.32%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='p-521'                                      -0.57 %       ±7.72% ±10.17% ±13.05%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='rsa-multiprime'                              1.40 %       ±9.68% ±12.76% ±16.37%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='rsa-pss'                                    -0.76 %       ±9.27% ±12.21% ±15.67%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='rsa'                                         0.22 %       ±9.38% ±12.36% ±15.86%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='slh-dsa-sha2-128s'                          -1.22 %       ±9.18% ±12.10% ±15.52%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='slh-dsa-shake-256s'                         -1.04 %       ±9.29% ±12.25% ±15.71%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='x25519'                                     -1.53 %       ±9.20% ±12.13% ±15.57%
crypto/keyobject-serialization.js n=10000 type='public' format='der' operation='import' keyType='x448'                                       -2.67 %       ±9.48% ±12.50% ±16.04%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='ed25519'                                    -2.67 %       ±7.69% ±10.13% ±13.00%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='ed448'                                      -2.91 %       ±7.34%  ±9.68% ±12.41%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='ml-dsa-44'                                  -5.24 %       ±7.41%  ±9.77% ±12.54%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='ml-dsa-87'                            *     -7.88 %       ±7.23%  ±9.54% ±12.24%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='ml-kem-1024'                                -2.62 %       ±5.51%  ±7.26%  ±9.32%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='ml-kem-768'                                 -4.15 %       ±6.02%  ±7.94% ±10.19%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='p-256'                                      -1.98 %       ±5.79%  ±7.63%  ±9.79%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='p-384'                                      -3.13 %      ±18.14% ±23.91% ±30.68%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='p-521'                                      -0.78 %      ±16.50% ±21.75% ±27.91%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='rsa-multiprime'                             -0.21 %       ±4.71%  ±6.21%  ±7.97%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='rsa'                                        -1.35 %       ±4.57%  ±6.02%  ±7.72%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='slh-dsa-sha2-128s'                          -6.93 %       ±7.38%  ±9.72% ±12.48%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='slh-dsa-shake-256s'                 ***    -12.90 %       ±7.56%  ±9.96% ±12.78%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='x25519'                                     -0.88 %       ±7.76% ±10.22% ±13.12%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='export' keyType='x448'                                       -6.48 %       ±7.36%  ±9.70% ±12.45%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='ed25519'                                    -2.04 %       ±8.53% ±11.25% ±14.43%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='ed448'                                      -1.22 %       ±8.47% ±11.16% ±14.32%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='ml-dsa-44'                                  -4.89 %       ±8.96% ±11.81% ±15.15%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='ml-dsa-87'                                  -3.63 %       ±7.99% ±10.53% ±13.51%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='ml-kem-1024'                                -3.82 %       ±7.17%  ±9.46% ±12.13%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='ml-kem-768'                                 -5.92 %       ±7.63% ±10.05% ±12.90%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='p-256'                                      -0.99 %       ±8.52% ±11.22% ±14.40%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='p-384'                                      -2.74 %      ±10.32% ±13.61% ±17.46%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='p-521'                                      -2.34 %       ±8.66% ±11.42% ±14.65%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='rsa-multiprime'                             -1.35 %       ±8.66% ±11.41% ±14.64%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='rsa'                                         1.25 %       ±8.52% ±11.24% ±14.42%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='slh-dsa-sha2-128s'                    *     -8.85 %       ±8.36% ±11.02% ±14.14%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='slh-dsa-shake-256s'                         -7.03 %       ±8.28% ±10.91% ±14.00%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='x25519'                                     -2.01 %       ±8.80% ±11.59% ±14.88%
crypto/keyobject-serialization.js n=10000 type='public' format='jwk' operation='import' keyType='x448'                                       -3.20 %       ±8.70% ±11.47% ±14.72%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='ed25519'                                    -2.11 %       ±8.93% ±11.77% ±15.11%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='ed448'                                      -2.46 %       ±8.83% ±11.63% ±14.93%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='ml-dsa-44'                                  -0.84 %       ±8.58% ±11.31% ±14.51%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='ml-dsa-87'                                  -1.29 %       ±8.55% ±11.27% ±14.46%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='ml-kem-1024'                                -0.31 %       ±7.65% ±10.09% ±12.94%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='ml-kem-768'                                 -0.76 %       ±8.01% ±10.55% ±13.54%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='p-256'                                      -0.32 %       ±8.08% ±10.64% ±13.66%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='p-384'                                      -2.17 %      ±13.80% ±18.19% ±23.35%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='p-521'                                       0.64 %      ±12.32% ±16.25% ±20.85%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='rsa-multiprime'                             -1.27 %       ±8.97% ±11.82% ±15.17%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='rsa-pss'                                    -1.73 %       ±8.76% ±11.54% ±14.81%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='rsa'                                        -0.59 %       ±8.75% ±11.53% ±14.79%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='slh-dsa-sha2-128s'                           0.31 %       ±8.90% ±11.74% ±15.06%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='slh-dsa-shake-256s'                         -0.64 %       ±9.01% ±11.88% ±15.24%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='x25519'                                     -1.50 %       ±8.98% ±11.83% ±15.18%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='export' keyType='x448'                                       -1.16 %       ±8.96% ±11.81% ±15.15%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='ed25519'                                    -3.10 %       ±9.39% ±12.38% ±15.89%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='ed448'                                      -1.61 %       ±9.31% ±12.27% ±15.74%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='ml-dsa-44'                                  -0.84 %       ±8.98% ±11.83% ±15.18%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='ml-dsa-87'                                  -1.57 %       ±8.54% ±11.25% ±14.44%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='ml-kem-1024'                                -1.46 %       ±7.84% ±10.34% ±13.26%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='ml-kem-768'                                 -0.13 %       ±8.50% ±11.21% ±14.38%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='p-256'                                      -1.45 %       ±9.76% ±12.86% ±16.50%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='p-384'                                      -2.69 %       ±8.33% ±10.98% ±14.09%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='p-521'                                       0.23 %       ±8.00% ±10.54% ±13.53%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='rsa-multiprime'                             -0.97 %       ±9.37% ±12.35% ±15.84%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='rsa-pss'                                    -1.61 %       ±9.33% ±12.30% ±15.78%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='rsa'                                        -0.72 %       ±9.39% ±12.38% ±15.89%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='slh-dsa-sha2-128s'                          -0.68 %       ±9.46% ±12.47% ±16.00%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='slh-dsa-shake-256s'                         -0.83 %       ±9.36% ±12.34% ±15.83%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='x25519'                                     -1.10 %       ±9.31% ±12.27% ±15.75%
crypto/keyobject-serialization.js n=10000 type='public' format='pem' operation='import' keyType='x448'                                       -2.17 %       ±9.55% ±12.59% ±16.16%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='ed25519'                             -1.95 %       ±8.47% ±11.16% ±14.32%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='ed448'                               -3.46 %       ±8.59% ±11.33% ±14.53%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='ml-dsa-44'                           -2.87 %      ±11.53% ±15.20% ±19.51%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='ml-dsa-87'                           -5.67 %      ±13.60% ±17.92% ±23.00%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='ml-kem-1024'                         -1.55 %       ±7.90% ±10.41% ±13.36%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='ml-kem-768'                          -2.39 %       ±7.09%  ±9.35% ±12.00%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='p-256'                               -1.81 %       ±5.52%  ±7.28%  ±9.34%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='p-384'                               -3.58 %      ±18.22% ±24.01% ±30.81%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='p-521'                               -1.08 %      ±16.65% ±21.94% ±28.16%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='slh-dsa-sha2-128s'                   -3.28 %       ±8.39% ±11.06% ±14.19%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='slh-dsa-shake-256s'                  -4.00 %       ±8.47% ±11.17% ±14.33%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='x25519'                              -5.40 %       ±8.38% ±11.04% ±14.17%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='export' keyType='x448'                                -2.26 %       ±8.84% ±11.65% ±14.95%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='ed25519'                              3.61 %       ±8.95% ±11.80% ±15.15%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='ed448'                                2.98 %       ±9.03% ±11.91% ±15.28%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='ml-dsa-44'                           -1.50 %       ±9.30% ±12.26% ±15.73%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='ml-dsa-87'                           -0.39 %       ±9.71% ±12.80% ±16.43%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='ml-kem-1024'                          0.82 %       ±7.68% ±10.13% ±13.00%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='ml-kem-768'                          -0.34 %       ±7.85% ±10.35% ±13.28%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='p-256'                                2.55 %       ±8.52% ±11.24% ±14.42%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='p-384'                               -0.03 %      ±10.44% ±13.76% ±17.65%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='p-521'                                1.41 %       ±8.68% ±11.45% ±14.69%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='slh-dsa-sha2-128s'                    9.21 %       ±9.43% ±12.42% ±15.94%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='slh-dsa-shake-256s'          ***     51.61 %      ±11.82% ±15.58% ±20.00%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='x25519'                               2.29 %       ±8.85% ±11.66% ±14.96%
crypto/keyobject-serialization.js n=10000 type='public' format='raw-public' operation='import' keyType='x448'                                 1.97 %       ±8.93% ±11.77% ±15.10%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 270 comparisons, you can thus
expect the following amount of false-positive results:
  13.50 false positives, when considering a   5% risk acceptance (*, **, ***),
  2.70 false positives, when considering a   1% risk acceptance (**, ***),
  0.27 false positives, when considering a 0.1% risk acceptance (***)

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.


Benchmark GHA (crypto / oneshot-sign.js): https://github.com/nodejs/node/actions/runs/34348824410

Results

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.

Benchmark results:

                                                                                                     confidence improvement accuracy (*)    (**)   (***)
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='async-parallel' keyType='ec'                                     0.15 %       ±9.48% ±12.50% ±16.04%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='async-parallel' keyType='ed25519'                               -0.57 %       ±7.35%  ±9.68% ±12.42%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='async-parallel' keyType='ml-dsa-44'                             -0.28 %       ±7.70% ±10.15% ±13.02%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='async-parallel' keyType='rsa'                                   -1.61 %       ±5.37%  ±7.08%  ±9.09%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='async' keyType='ec'                                             -2.18 %       ±8.09% ±10.67% ±13.69%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='async' keyType='ed25519'                                        -0.43 %       ±6.89%  ±9.08% ±11.65%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='async' keyType='ml-dsa-44'                                       0.46 %       ±6.27%  ±8.26% ±10.61%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='async' keyType='rsa'                                            -1.29 %       ±3.11%  ±4.10%  ±5.26%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='sync' keyType='ec'                                              -2.23 %       ±8.28% ±10.91% ±14.00%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='sync' keyType='ed25519'                                         -2.03 %       ±7.03%  ±9.26% ±11.88%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='sync' keyType='ml-dsa-44'                                       -0.02 %       ±5.82%  ±7.67%  ±9.85%
crypto/oneshot-sign.js n=1000 keyFormat='der' mode='sync' keyType='rsa'                                             -0.44 %       ±2.65%  ±3.49%  ±4.48%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='async-parallel' keyType='ec'                                    -0.87 %       ±7.20%  ±9.49% ±12.17%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='async-parallel' keyType='ed25519'                               -1.59 %       ±7.43%  ±9.80% ±12.57%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='async-parallel' keyType='ml-dsa-44'                             -0.92 %       ±7.65% ±10.08% ±12.94%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='async-parallel' keyType='rsa'                                   -0.52 %       ±5.18%  ±6.82%  ±8.76%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='async' keyType='ec'                                             -1.62 %       ±7.41%  ±9.76% ±12.53%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='async' keyType='ed25519'                                        -0.67 %       ±6.86%  ±9.05% ±11.61%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='async' keyType='ml-dsa-44'                                      -1.34 %       ±6.21%  ±8.19% ±10.51%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='async' keyType='rsa'                                            -1.29 %       ±3.23%  ±4.25%  ±5.46%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='sync' keyType='ec'                                              -1.20 %       ±7.15%  ±9.42% ±12.09%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='sync' keyType='ed25519'                                         -2.04 %       ±6.87%  ±9.06% ±11.62%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='sync' keyType='ml-dsa-44'                                       -0.25 %       ±5.62%  ±7.40%  ±9.50%
crypto/oneshot-sign.js n=1000 keyFormat='jwk' mode='sync' keyType='rsa'                                             -0.32 %       ±2.76%  ±3.63%  ±4.66%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject.unique' mode='async-parallel' keyType='ec'                       -1.11 %       ±7.22%  ±9.52% ±12.21%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject.unique' mode='async-parallel' keyType='ed25519'                  -0.63 %       ±8.43% ±11.12% ±14.26%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject.unique' mode='async-parallel' keyType='ml-dsa-44'                -1.85 %       ±7.32%  ±9.65% ±12.38%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject.unique' mode='async-parallel' keyType='rsa'                      -0.47 %       ±5.61%  ±7.40%  ±9.49%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='async-parallel' keyType='ec'                              -1.12 %       ±7.74% ±10.20% ±13.08%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='async-parallel' keyType='ed25519'                         -0.20 %       ±8.60% ±11.33% ±14.54%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='async-parallel' keyType='ml-dsa-44'                        0.24 %       ±7.53%  ±9.93% ±12.74%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='async-parallel' keyType='rsa'                              0.28 %       ±6.18%  ±8.14% ±10.45%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='async' keyType='ec'                                       -1.43 %       ±7.80% ±10.28% ±13.19%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='async' keyType='ed25519'                                  -0.27 %       ±7.97% ±10.50% ±13.47%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='async' keyType='ml-dsa-44'                                -0.80 %       ±6.14%  ±8.09% ±10.38%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='async' keyType='rsa'                                      -1.44 %       ±2.92%  ±3.85%  ±4.94%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='sync' keyType='ec'                                        -1.99 %       ±6.28%  ±8.27% ±10.62%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='sync' keyType='ed25519'                                   -0.77 %       ±6.66%  ±8.78% ±11.27%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='sync' keyType='ml-dsa-44'                                  0.35 %       ±5.64%  ±7.43%  ±9.54%
crypto/oneshot-sign.js n=1000 keyFormat='keyObject' mode='sync' keyType='rsa'                                       -0.60 %       ±2.89%  ±3.81%  ±4.89%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='async-parallel' keyType='ec'                                    -2.49 %       ±9.55% ±12.59% ±16.15%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='async-parallel' keyType='ed25519'                               -0.49 %       ±6.80%  ±8.96% ±11.50%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='async-parallel' keyType='ml-dsa-44'                              0.28 %       ±8.06% ±10.63% ±13.63%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='async-parallel' keyType='rsa'                                   -0.93 %       ±5.28%  ±6.96%  ±8.93%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='async' keyType='ec'                                             -0.91 %       ±8.19% ±10.79% ±13.85%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='async' keyType='ed25519'                                        -0.61 %       ±6.96%  ±9.17% ±11.77%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='async' keyType='ml-dsa-44'                                      -0.32 %       ±6.40%  ±8.44% ±10.82%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='async' keyType='rsa'                                            -0.26 %       ±3.41%  ±4.49%  ±5.76%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='sync' keyType='ec'                                              -1.73 %       ±8.36% ±11.01% ±14.13%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='sync' keyType='ed25519'                                         -0.93 %       ±6.63%  ±8.74% ±11.21%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='sync' keyType='ml-dsa-44'                                       -0.85 %       ±5.86%  ±7.73%  ±9.92%
crypto/oneshot-sign.js n=1000 keyFormat='pem' mode='sync' keyType='rsa'                                             -0.11 %       ±2.83%  ±3.72%  ±4.78%
crypto/oneshot-sign.js n=1000 keyFormat='raw-private' mode='async-parallel' keyType='ec'                             0.55 %       ±8.54% ±11.26% ±14.45%
crypto/oneshot-sign.js n=1000 keyFormat='raw-private' mode='async-parallel' keyType='ed25519'                        0.07 %       ±7.42%  ±9.78% ±12.55%
crypto/oneshot-sign.js n=1000 keyFormat='raw-private' mode='async' keyType='ec'                                      1.65 %       ±7.88% ±10.39% ±13.33%
crypto/oneshot-sign.js n=1000 keyFormat='raw-private' mode='async' keyType='ed25519'                                -0.50 %       ±6.91%  ±9.11% ±11.69%
crypto/oneshot-sign.js n=1000 keyFormat='raw-private' mode='sync' keyType='ec'                                      -0.25 %       ±7.31%  ±9.64% ±12.37%
crypto/oneshot-sign.js n=1000 keyFormat='raw-private' mode='sync' keyType='ed25519'                                 -1.17 %       ±6.56%  ±8.65% ±11.10%
crypto/oneshot-sign.js n=1000 keyFormat='raw-seed' mode='async-parallel' keyType='ml-dsa-44'                         0.78 %       ±7.51%  ±9.90% ±12.70%
crypto/oneshot-sign.js n=1000 keyFormat='raw-seed' mode='async' keyType='ml-dsa-44'                                 -0.15 %       ±6.23%  ±8.21% ±10.53%
crypto/oneshot-sign.js n=1000 keyFormat='raw-seed' mode='sync' keyType='ml-dsa-44'                                  -0.21 %       ±5.77%  ±7.61%  ±9.76%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 61 comparisons, you can thus
expect the following amount of false-positive results:
  3.05 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.61 false positives, when considering a   1% risk acceptance (**, ***),
  0.06 false positives, when considering a 0.1% risk acceptance (***)

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.


Benchmark GHA (crypto / oneshot-verify.js): https://github.com/nodejs/node/actions/runs/34348827543

Results

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.

Benchmark results:

                                                                                                       confidence improvement accuracy (*)    (**)   (***)
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='async-parallel' keyType='ec'                                    -1.12 %       ±9.65% ±12.72% ±16.32%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='async-parallel' keyType='ed25519'                                0.81 %      ±10.42% ±13.74% ±17.63%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='async-parallel' keyType='ml-dsa-44'                              1.07 %       ±9.09% ±11.98% ±15.37%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='async-parallel' keyType='rsa'                                    0.85 %      ±11.62% ±15.32% ±19.66%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='async' keyType='ec'                                             -0.64 %       ±7.16%  ±9.44% ±12.12%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='async' keyType='ed25519'                                         0.27 %       ±6.77%  ±8.92% ±11.45%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='async' keyType='ml-dsa-44'                                       0.51 %       ±8.19% ±10.80% ±13.86%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='async' keyType='rsa'                                            -0.78 %       ±8.24% ±10.87% ±13.94%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='sync' keyType='ec'                                               0.51 %       ±5.36%  ±7.06%  ±9.06%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='sync' keyType='ed25519'                                         -1.11 %       ±5.81%  ±7.65%  ±9.82%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='sync' keyType='ml-dsa-44'                                       -0.67 %       ±7.43%  ±9.79% ±12.56%
crypto/oneshot-verify.js n=1000 keyFormat='der' mode='sync' keyType='rsa'                                             -1.07 %       ±6.92%  ±9.12% ±11.70%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='async-parallel' keyType='ec'                                     1.23 %       ±9.83% ±12.96% ±16.62%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='async-parallel' keyType='ed25519'                               -2.39 %       ±9.63% ±12.70% ±16.29%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='async-parallel' keyType='ml-dsa-44'                             -0.52 %       ±8.84% ±11.65% ±14.95%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='async-parallel' keyType='rsa'                                    0.10 %      ±11.64% ±15.35% ±19.69%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='async' keyType='ec'                                             -0.67 %       ±7.02%  ±9.25% ±11.87%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='async' keyType='ed25519'                                         0.65 %       ±6.82%  ±8.99% ±11.53%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='async' keyType='ml-dsa-44'                                      -0.43 %       ±7.93% ±10.46% ±13.42%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='async' keyType='rsa'                                             0.25 %       ±8.08% ±10.65% ±13.67%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='sync' keyType='ec'                                              -0.50 %       ±4.89%  ±6.44%  ±8.26%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='sync' keyType='ed25519'                                          0.13 %       ±5.86%  ±7.73%  ±9.92%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='sync' keyType='ml-dsa-44'                                       -0.70 %       ±7.12%  ±9.38% ±12.04%
crypto/oneshot-verify.js n=1000 keyFormat='jwk' mode='sync' keyType='rsa'                                             -0.98 %       ±6.07%  ±8.00% ±10.26%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject.unique' mode='async-parallel' keyType='ec'                       -0.33 %       ±6.42%  ±8.46% ±10.86%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject.unique' mode='async-parallel' keyType='ed25519'                  -0.18 %       ±9.53% ±12.56% ±16.12%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject.unique' mode='async-parallel' keyType='ml-dsa-44'                -1.17 %       ±8.13% ±10.71% ±13.75%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject.unique' mode='async-parallel' keyType='rsa'                      -0.53 %       ±8.97% ±11.83% ±15.18%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='async-parallel' keyType='ec'                               1.25 %       ±6.34%  ±8.35% ±10.72%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='async-parallel' keyType='ed25519'                          0.26 %       ±9.56% ±12.61% ±16.18%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='async-parallel' keyType='ml-dsa-44'                        0.83 %       ±8.23% ±10.85% ±13.92%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='async-parallel' keyType='rsa'                              0.09 %       ±8.90% ±11.73% ±15.06%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='async' keyType='ec'                                       -1.10 %       ±6.49%  ±8.56% ±10.98%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='async' keyType='ed25519'                                  -0.44 %       ±6.75%  ±8.90% ±11.41%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='async' keyType='ml-dsa-44'                                 1.31 %       ±7.68% ±10.12% ±12.99%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='async' keyType='rsa'                                      -1.27 %       ±7.74% ±10.21% ±13.09%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='sync' keyType='ec'                                        -0.90 %       ±3.51%  ±4.62%  ±5.93%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='sync' keyType='ed25519'                                   -0.19 %       ±5.69%  ±7.50%  ±9.62%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='sync' keyType='ml-dsa-44'                                  0.38 %       ±6.85%  ±9.03% ±11.59%
crypto/oneshot-verify.js n=1000 keyFormat='keyObject' mode='sync' keyType='rsa'                                       -0.50 %       ±5.37%  ±7.08%  ±9.08%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='async-parallel' keyType='ec'                                    -3.39 %      ±10.17% ±13.41% ±17.20%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='async-parallel' keyType='ed25519'                               -0.27 %      ±10.81% ±14.25% ±18.28%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='async-parallel' keyType='ml-dsa-44'                             -0.27 %       ±9.36% ±12.33% ±15.83%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='async-parallel' keyType='rsa'                                   -0.50 %      ±10.77% ±14.20% ±18.22%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='async' keyType='ec'                                             -0.46 %       ±7.15%  ±9.42% ±12.09%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='async' keyType='ed25519'                                         0.98 %       ±6.92%  ±9.13% ±11.71%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='async' keyType='ml-dsa-44'                                       2.08 %       ±8.12% ±10.71% ±13.74%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='async' keyType='rsa'                                             1.11 %       ±8.29% ±10.92% ±14.01%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='sync' keyType='ec'                                               0.26 %       ±5.30%  ±6.98%  ±8.96%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='sync' keyType='ed25519'                                         -0.26 %       ±6.04%  ±7.97% ±10.22%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='sync' keyType='ml-dsa-44'                                        1.03 %       ±7.54%  ±9.93% ±12.75%
crypto/oneshot-verify.js n=1000 keyFormat='pem' mode='sync' keyType='rsa'                                              0.28 %       ±7.25%  ±9.56% ±12.27%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='async-parallel' keyType='ec'                              0.98 %       ±9.68% ±12.75% ±16.37%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='async-parallel' keyType='ed25519'                        -1.70 %       ±9.20% ±12.12% ±15.56%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='async-parallel' keyType='ml-dsa-44'                      -1.57 %       ±8.77% ±11.56% ±14.83%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='async' keyType='ec'                                       0.94 %       ±7.12%  ±9.38% ±12.03%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='async' keyType='ed25519'                                 -0.36 %       ±6.83%  ±9.01% ±11.56%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='async' keyType='ml-dsa-44'                                0.20 %       ±7.98% ±10.51% ±13.49%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='sync' keyType='ec'                                        0.09 %       ±4.74%  ±6.25%  ±8.02%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='sync' keyType='ed25519'                                   0.20 %       ±5.76%  ±7.60%  ±9.75%
crypto/oneshot-verify.js n=1000 keyFormat='raw-public' mode='sync' keyType='ml-dsa-44'                                 0.63 %       ±7.35%  ±9.69% ±12.43%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 61 comparisons, you can thus
expect the following amount of false-positive results:
  3.05 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.61 false positives, when considering a   1% risk acceptance (**, ***),
  0.06 false positives, when considering a 0.1% risk acceptance (***)

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.


Benchmark GHA (crypto / webcrypto-sign.js): https://github.com/nodejs/node/actions/runs/34348830291

Results

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.

Benchmark results:

                                                                                              confidence improvement accuracy (*)    (**)   (***)
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='parallel' keyType='ec'                               -3.25 %       ±6.50%  ±8.56% ±10.99%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='parallel' keyType='ed25519'                          -1.05 %       ±7.44%  ±9.81% ±12.58%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='parallel' keyType='ml-dsa-44'                         0.51 %       ±7.70% ±10.15% ±13.03%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='parallel' keyType='rsa-pss'                          -0.61 %       ±6.54%  ±8.63% ±11.07%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='parallel' keyType='rsassa-pkcs1-v1_5'                -1.13 %       ±6.82%  ±8.98% ±11.53%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='serial' keyType='ec'                                 -1.09 %       ±7.62% ±10.05% ±12.89%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='serial' keyType='ed25519'                            -0.01 %       ±6.73%  ±8.87% ±11.39%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='serial' keyType='ml-dsa-44'                          -0.29 %       ±6.04%  ±7.97% ±10.22%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='serial' keyType='rsa-pss'                             0.33 %       ±2.94%  ±3.88%  ±4.98%
crypto/webcrypto-sign.js n=1000 keyReuse='shared' mode='serial' keyType='rsassa-pkcs1-v1_5'                  -1.38 %       ±2.86%  ±3.77%  ±4.84%
crypto/webcrypto-sign.js n=1000 keyReuse='unique' mode='parallel' keyType='ec'                               -2.80 %       ±6.38%  ±8.41% ±10.79%
crypto/webcrypto-sign.js n=1000 keyReuse='unique' mode='parallel' keyType='ed25519'                           1.25 %       ±7.13%  ±9.40% ±12.06%
crypto/webcrypto-sign.js n=1000 keyReuse='unique' mode='parallel' keyType='ml-dsa-44'                         2.14 %       ±7.91% ±10.42% ±13.38%
crypto/webcrypto-sign.js n=1000 keyReuse='unique' mode='parallel' keyType='rsa-pss'                           0.54 %       ±5.64%  ±7.44%  ±9.54%
crypto/webcrypto-sign.js n=1000 keyReuse='unique' mode='parallel' keyType='rsassa-pkcs1-v1_5'                -2.17 %       ±5.79%  ±7.63%  ±9.79%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 15 comparisons, you can thus
expect the following amount of false-positive results:
  0.75 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.15 false positives, when considering a   1% risk acceptance (**, ***),
  0.01 false positives, when considering a 0.1% risk acceptance (***)

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.


Benchmark GHA (crypto / webcrypto-verify.js): https://github.com/nodejs/node/actions/runs/34348833659

Results

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.

Benchmark results:

                                                                                                confidence improvement accuracy (*)    (**)   (***)
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='parallel' keyType='ec'                                0.64 %       ±9.46% ±12.47% ±16.00%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='parallel' keyType='ed25519'                          -1.10 %      ±10.08% ±13.29% ±17.06%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='parallel' keyType='ml-dsa-44'                         0.56 %       ±8.19% ±10.79% ±13.84%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='parallel' keyType='rsa-pss'                           2.56 %      ±11.33% ±14.94% ±19.17%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='parallel' keyType='rsassa-pkcs1-v1_5'                 0.83 %      ±10.85% ±14.30% ±18.34%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='serial' keyType='ec'                                  0.01 %       ±7.75% ±10.21% ±13.10%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='serial' keyType='ed25519'                             0.10 %       ±8.08% ±10.65% ±13.67%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='serial' keyType='ml-dsa-44'                          -0.00 %       ±8.71% ±11.48% ±14.72%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='serial' keyType='rsa-pss'                            -0.63 %       ±9.42% ±12.41% ±15.93%
crypto/webcrypto-verify.js n=1000 keyReuse='shared' mode='serial' keyType='rsassa-pkcs1-v1_5'                  -1.08 %       ±9.43% ±12.43% ±15.95%
crypto/webcrypto-verify.js n=1000 keyReuse='unique' mode='parallel' keyType='ec'                               -2.58 %       ±9.46% ±12.47% ±16.00%
crypto/webcrypto-verify.js n=1000 keyReuse='unique' mode='parallel' keyType='ed25519'                          -0.71 %      ±10.17% ±13.40% ±17.19%
crypto/webcrypto-verify.js n=1000 keyReuse='unique' mode='parallel' keyType='ml-dsa-44'                         0.28 %       ±7.97% ±10.50% ±13.47%
crypto/webcrypto-verify.js n=1000 keyReuse='unique' mode='parallel' keyType='rsa-pss'                           1.50 %      ±10.12% ±13.34% ±17.12%
crypto/webcrypto-verify.js n=1000 keyReuse='unique' mode='parallel' keyType='rsassa-pkcs1-v1_5'                -0.83 %       ±9.53% ±12.57% ±16.12%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 15 comparisons, you can thus
expect the following amount of false-positive results:
  0.75 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.15 false positives, when considering a   1% risk acceptance (**, ***),
  0.01 false positives, when considering a 0.1% risk acceptance (***)

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.


Benchmark GHA (crypto / keygen.js): https://github.com/nodejs/node/actions/runs/34348840314

Results

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.

Benchmark results:

                                         confidence improvement accuracy (*)    (**)   (***)
crypto/keygen.js n=100 method='dsaAsync'                 1.60 %       ±6.95%  ±9.16% ±11.75%
crypto/keygen.js n=100 method='dsaSync'                  0.92 %       ±2.96%  ±3.90%  ±5.00%
crypto/keygen.js n=100 method='rsaAsync'                -0.88 %       ±9.51% ±12.54% ±16.09%
crypto/keygen.js n=100 method='rsaSync'                 -1.34 %       ±4.31%  ±5.68%  ±7.29%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 4 comparisons, you can thus
expect the following amount of false-positive results:
  0.20 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.04 false positives, when considering a   1% risk acceptance (**, ***),
  0.00 false positives, when considering a 0.1% risk acceptance (***)

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.


Benchmark GHA (crypto / rsa-encrypt-decrypt-throughput.js): https://github.com/nodejs/node/actions/runs/34348843444

Results

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.

Benchmark results:

                                                                    confidence improvement accuracy (*)   (**)  (***)
crypto/rsa-encrypt-decrypt-throughput.js len=16 keylen='2048' n=500                 0.38 %       ±4.41% ±5.81% ±7.46%
crypto/rsa-encrypt-decrypt-throughput.js len=16 keylen='4096' n=500                 0.90 %       ±3.54% ±4.67% ±5.99%
crypto/rsa-encrypt-decrypt-throughput.js len=32 keylen='2048' n=500                 1.09 %       ±4.26% ±5.62% ±7.21%
crypto/rsa-encrypt-decrypt-throughput.js len=32 keylen='4096' n=500                 0.40 %       ±3.60% ±4.75% ±6.09%
crypto/rsa-encrypt-decrypt-throughput.js len=64 keylen='2048' n=500                 0.80 %       ±4.27% ±5.63% ±7.23%
crypto/rsa-encrypt-decrypt-throughput.js len=64 keylen='4096' n=500                -0.28 %       ±3.60% ±4.74% ±6.08%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 6 comparisons, you can thus
expect the following amount of false-positive results:
  0.30 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.06 false positives, when considering a   1% risk acceptance (**, ***),
  0.01 false positives, when considering a 0.1% risk acceptance (***)

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.


Benchmark GHA (tls / tls-connect.js): https://github.com/nodejs/node/actions/runs/34348846429

Results

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.

Benchmark results:

                                        confidence improvement accuracy (*)   (**)   (***)
tls/tls-connect.js dur=5 concurrency=1                  0.64 %       ±6.33% ±8.34% ±10.71%
tls/tls-connect.js dur=5 concurrency=10                -0.30 %       ±6.09% ±8.02% ±10.29%

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 2 comparisons, you can thus
expect the following amount of false-positive results:
  0.10 false positives, when considering a   5% risk acceptance (*, **, ***),
  0.02 false positives, when considering a   1% risk acceptance (**, ***),
  0.00 false positives, when considering a 0.1% risk acceptance (***)

[!WARNING]
Do not take GHA benchmark results as face value, always confirm them
using a dedicated machine, e.g. Jenkins CI.


@codecov

codecov Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.95318% with 42 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.21%. Comparing base (313b834) to head (4308fdf).
⚠️ Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
src/crypto/crypto_keys.cc 88.55% 2 Missing and 17 partials ⚠️
src/crypto/crypto_ec.cc 42.85% 5 Missing and 7 partials ⚠️
src/crypto/crypto_sig.cc 75.00% 0 Missing and 4 partials ⚠️
src/crypto/crypto_common.cc 80.00% 0 Missing and 3 partials ⚠️
src/crypto/crypto_keygen.cc 77.77% 0 Missing and 2 partials ⚠️
src/crypto/crypto_keygen.h 50.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #65966      +/-   ##
==========================================
- Coverage   92.41%   90.21%   -2.21%     
==========================================
  Files         417      771     +354     
  Lines      189029   265161   +76132     
  Branches    28953    50392   +21439     
==========================================
+ Hits       174685   239203   +64518     
- Misses      14011    16977    +2966     
- Partials      333     8981    +8648     
Files with missing lines Coverage Δ
lib/internal/crypto/cfrg.js 95.69% <100.00%> (-0.22%) ⬇️
lib/internal/crypto/kem_hybrids.js 98.38% <100.00%> (+<0.01%) ⬆️
lib/internal/crypto/keygen.js 92.94% <100.00%> (-0.56%) ⬇️
lib/internal/crypto/ml_dsa.js 97.29% <100.00%> (-0.10%) ⬇️
lib/internal/crypto/ml_kem.js 95.19% <100.00%> (-0.17%) ⬇️
lib/internal/crypto/util.js 97.39% <100.00%> (+0.80%) ⬆️
src/crypto/crypto_context.cc 71.66% <100.00%> (ø)
src/crypto/crypto_dh.cc 65.68% <100.00%> (ø)
src/crypto/crypto_dsa.cc 81.25% <100.00%> (ø)
src/crypto/crypto_ec.h 44.44% <100.00%> (ø)
... and 10 more

... and 467 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@panva
panva requested a review from jasnell September 11, 2026 08:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants