Skip to content

tls: report negotiated TLS groups#64119

Merged
nodejs-github-bot merged 1 commit into
nodejs:mainfrom
panva:tls-report-negotiated-groups
Jul 1, 2026
Merged

tls: report negotiated TLS groups#64119
nodejs-github-bot merged 1 commit into
nodejs:mainfrom
panva:tls-report-negotiated-groups

Conversation

@panva

@panva panva commented Jun 24, 2026

Copy link
Copy Markdown
Member

tlsSocket.getEphemeralKeyInfo() currently returns an empty object for TLS 1.3 key agreement groups where OpenSSL does not expose a peer temporary key object, including ML-KEM and hybrid ML-KEM groups.

This updates the shared TLS helper to fall back to OpenSSL's negotiated TLS group name and return { type: 'TLSGroup', name: '<group>' }.

The existing DH and ECDH result shapes are unchanged and still take precedence when OpenSSL provides a recognizable temporary key. TLSGroup does not include size, because Node cannot derive a meaningful single key size for PQ or hybrid groups.

The TLS docs now describe TLSGroup, point users to the IANA TLS Supported Groups registry, and clarify that the historical ecdhCurve option also configures TLS Supported Groups for TLS 1.3.

Fixes: #59452

When OpenSSL reports no peer temporary key object for TLS key
agreement, fall back to the negotiated TLS Supported Group name.
This lets getEphemeralKeyInfo() identify PQ, hybrid, and other
group-based key agreement as TLSGroup without synthesizing a size.

Keep existing DH and ECDH results unchanged when OpenSSL provides
a recognizable temporary key.

Fixes: nodejs#59452
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

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

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Jun 24, 2026
@panva panva added the tls Issues and PRs related to the tls subsystem. label Jun 24, 2026
@addaleax addaleax added semver-minor PRs that contain new features and should be released in the next minor version. author ready PRs that have at least one approval, no pending requests for changes, and a CI started. request-ci Add this label to start a Jenkins CI on a PR. labels Jun 25, 2026
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 25, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@panva panva added the review wanted PRs that need reviews. label Jun 27, 2026
@panva panva added the commit-queue Add this label to land a pull request using GitHub Actions. label Jul 1, 2026
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Jul 1, 2026
@nodejs-github-bot nodejs-github-bot merged commit d3ed6c1 into nodejs:main Jul 1, 2026
93 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in d3ed6c1

@panva panva deleted the tls-report-negotiated-groups branch July 1, 2026 06:41
alexfernandez pushed a commit to alexfernandez/node that referenced this pull request Jul 1, 2026
When OpenSSL reports no peer temporary key object for TLS key
agreement, fall back to the negotiated TLS Supported Group name.
This lets getEphemeralKeyInfo() identify PQ, hybrid, and other
group-based key agreement as TLSGroup without synthesizing a size.

Keep existing DH and ECDH results unchanged when OpenSSL provides
a recognizable temporary key.

Fixes: nodejs#59452
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
PR-URL: nodejs#64119
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
richardlau pushed a commit that referenced this pull request Jul 3, 2026
When OpenSSL reports no peer temporary key object for TLS key
agreement, fall back to the negotiated TLS Supported Group name.
This lets getEphemeralKeyInfo() identify PQ, hybrid, and other
group-based key agreement as TLSGroup without synthesizing a size.

Keep existing DH and ECDH results unchanged when OpenSSL provides
a recognizable temporary key.

Fixes: #59452
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
PR-URL: #64119
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
nodejs-github-bot added a commit that referenced this pull request Jul 6, 2026
Notable changes:

buffer:
  * (SEMVER-MINOR) implement blob.textStream() (Matthew Aitken) #64036
esm:
  * (SEMVER-MINOR) add `--experimental-import-text` flag (Efe) #62300
perf_hooks:
  * (SEMVER-MINOR) sample delay per event loop iteration (Pablo Erhard) #62935
stream:
  * (SEMVER-MINOR) expose ReadableStreamTee (Matteo Collina) #64195
tls:
  * (SEMVER-MINOR) report negotiated TLS groups (Filip Skokan) #64119

PR-URL: #64329
richardlau pushed a commit that referenced this pull request Jul 6, 2026
Notable changes:

buffer:
  * (SEMVER-MINOR) implement blob.textStream() (Matthew Aitken) #64036
esm:
  * (SEMVER-MINOR) add `--experimental-import-text` flag (Efe) #62300
perf_hooks:
  * (SEMVER-MINOR) sample delay per event loop iteration (Pablo Erhard) #62935
stream:
  * (SEMVER-MINOR) expose ReadableStreamTee (Matteo Collina) #64195
tls:
  * (SEMVER-MINOR) report negotiated TLS groups (Filip Skokan) #64119

PR-URL: #64329
Signed-off-by: Richard Lau <richard.lau@ibm.com>
richardlau pushed a commit that referenced this pull request Jul 8, 2026
Notable changes:

buffer:
  * (SEMVER-MINOR) implement blob.textStream() (Matthew Aitken) #64036
esm:
  * (SEMVER-MINOR) add `--experimental-import-text` flag (Efe) #62300
perf_hooks:
  * (SEMVER-MINOR) sample delay per event loop iteration (Pablo Erhard) #62935
stream:
  * (SEMVER-MINOR) expose ReadableStreamTee (Matteo Collina) #64195
tls:
  * (SEMVER-MINOR) report negotiated TLS groups (Filip Skokan) #64119

PR-URL: #64329
Signed-off-by: Richard Lau <richard.lau@ibm.com>
aduh95 pushed a commit that referenced this pull request Jul 8, 2026
When OpenSSL reports no peer temporary key object for TLS key
agreement, fall back to the negotiated TLS Supported Group name.
This lets getEphemeralKeyInfo() identify PQ, hybrid, and other
group-based key agreement as TLSGroup without synthesizing a size.

Keep existing DH and ECDH results unchanged when OpenSSL provides
a recognizable temporary key.

Fixes: #59452
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
PR-URL: #64119
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author ready PRs that have at least one approval, no pending requests for changes, and a CI started. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. review wanted PRs that need reviews. semver-minor PRs that contain new features and should be released in the next minor version. tls Issues and PRs related to the tls subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

tlsSocket.getEphemeralKeyInfo() - doesn't display information for hybrid groups

4 participants