Skip to content

LOG-9077: Support TLS group (curve preference) configuration for PQC readiness - #3391

Draft
jcantrill wants to merge 1 commit into
openshift:masterfrom
jcantrill:fix-LOG-9077
Draft

LOG-9077: Support TLS group (curve preference) configuration for PQC readiness#3391
jcantrill wants to merge 1 commit into
openshift:masterfrom
jcantrill:fix-LOG-9077

Conversation

@jcantrill

@jcantrill jcantrill commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Update openshift/api dependency to pick up the new Groups field on TLSProfileSpec and TLSGroup constants (openshift/api PR LOG-5721: Refactor functional metrics tests #2583)
  • Add TLS group (curve preference) support throughout the operator: core TLS helpers, Vector config generation, and the log-file-metric-exporter
  • Default curve preferences are now derived from the upstream Intermediate TLS profile (Mozilla SSL config v5.8) rather than being hardcoded
  • Vector configs get a new curves field with colon-separated OpenSSL curve names (e.g. X25519MLKEM768:X25519:prime256v1:secp384r1)
  • The operator metrics server sets CurvePreferences on tls.Config from the profile
  • LFME receives curve preferences via -groups= CLI argument

Details

Core TLS (internal/tls/tls.go)

  • TLSGroupToID(): maps configv1.TLSGroup to Go crypto/tls.CurveID (including X25519MLKEM768 from Go 1.25)
  • TLSGroupsToOpenSSL(): converts groups to colon-separated OpenSSL names (handles secp256r1prime256v1 mapping)
  • TLSConfigFromProfile(): now sets CurvePreferences on the returned tls.Config
  • DefaultTLSGroups: derived from upstream profile instead of hardcoded

Vector Config Generation

  • New Groups framework option threaded through TLSProfileInfo()SetTLSProfileOptionsFrom()SetTLSProfile()transport.TLS.Curves
  • All TOML fixtures updated with curves field and Mozilla v5.8 cipher changes (DHE suites removed)

Log-File-Metric-Exporter

  • -groups= CLI argument added to LFME container command

Test plan

  • All existing unit tests pass (make test-unit)
  • New tests for TLSGroupToID (valid groups, unsupported group error)
  • New tests for TLSGroupsToOpenSSL (conversion, empty input, skip unknown)
  • New tests for CurvePreferences in TLSConfigFromProfile
  • Updated TLSProfileInfo tests verify groups return value
  • E2E: Validate TLS 1.3 and ML-KEM with tls-scanner (separate ticket)

🤖 Generated with Claude Code via /jira:solve [LOG-9077](https://redhat.atlassian.net/browse/LOG-9077)

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Aug 7, 2026
@openshift-ci

openshift-ci Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci-robot

openshift-ci-robot commented Aug 7, 2026

Copy link
Copy Markdown

@jcantrill: This pull request references LOG-9077 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target either version "4.8." or "openshift-4.8.", but it targets "Logging 6.7.0" instead.

Details

In response to this:

Summary

  • Update openshift/api dependency to pick up the new Groups field on TLSProfileSpec and TLSGroup constants (openshift/api PR LOG-5721: Refactor functional metrics tests #2583)
  • Add TLS group (curve preference) support throughout the operator: core TLS helpers, Vector config generation, and the log-file-metric-exporter
  • Default curve preferences are now derived from the upstream Intermediate TLS profile (Mozilla SSL config v5.8) rather than being hardcoded
  • Vector configs get a new curves field with colon-separated OpenSSL curve names (e.g. X25519MLKEM768:X25519:prime256v1:secp384r1)
  • The operator metrics server sets CurvePreferences on tls.Config from the profile
  • LFME receives curve preferences via -groups= CLI argument

Details

Core TLS (internal/tls/tls.go)

  • TLSGroupToID(): maps configv1.TLSGroup to Go crypto/tls.CurveID (including X25519MLKEM768 from Go 1.25)
  • TLSGroupsToOpenSSL(): converts groups to colon-separated OpenSSL names (handles secp256r1prime256v1 mapping)
  • TLSConfigFromProfile(): now sets CurvePreferences on the returned tls.Config
  • DefaultTLSGroups: derived from upstream profile instead of hardcoded

Vector Config Generation

  • New Groups framework option threaded through TLSProfileInfo()SetTLSProfileOptionsFrom()SetTLSProfile()transport.TLS.Curves
  • All TOML fixtures updated with curves field and Mozilla v5.8 cipher changes (DHE suites removed)

Log-File-Metric-Exporter

  • -groups= CLI argument added to LFME container command

Test plan

  • All existing unit tests pass (make test-unit)
  • New tests for TLSGroupToID (valid groups, unsupported group error)
  • New tests for TLSGroupsToOpenSSL (conversion, empty input, skip unknown)
  • New tests for CurvePreferences in TLSConfigFromProfile
  • Updated TLSProfileInfo tests verify groups return value
  • E2E: Validate TLS 1.3 and ML-KEM with tls-scanner (separate ticket)

🤖 Generated with Claude Code via /jira:solve [LOG-9077](https://redhat.atlassian.net/browse/LOG-9077)

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Aug 7, 2026
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: f8e96ac3-0d69-4efd-87e3-91946afe5aac

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@openshift-ci

openshift-ci Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jcantrill

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 7, 2026
Add TLS curve preference support throughout the operator for
Post-Quantum Cryptography readiness.

Update openshift/api to pick up the Groups field on TLSProfileSpec
and TLSGroup constants (openshift/api PR openshift#2583). Default groups are
now derived from the upstream Intermediate TLS profile (Mozilla SSL
config v5.8) rather than hardcoded.

Core changes:
- TLSGroupToID maps configv1.TLSGroup to crypto/tls.CurveID
- TLSGroupsToOpenSSL converts groups to colon-separated OpenSSL names
- TLSConfigFromProfile sets CurvePreferences on tls.Config
- Vector configs get a curves field via the framework options pipeline
- LFME receives groups via -groups= CLI argument

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. release/6.7

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants