Skip to content

feat(ci): Enable pq/t service run action option#3573

Merged
dmihalcik-virtru merged 6 commits into
mainfrom
DSPX-3456-actions
Jun 5, 2026
Merged

feat(ci): Enable pq/t service run action option#3573
dmihalcik-virtru merged 6 commits into
mainfrom
DSPX-3456-actions

Conversation

@dmihalcik-virtru
Copy link
Copy Markdown
Member

@dmihalcik-virtru dmihalcik-virtru commented Jun 5, 2026

Proposed Changes

  • Adds pqc-enabled boolean parameter to start-up-with-containers
    and start-additional-kas actions, which when set to true will enable
    the post-quantum and hybrid PQ/T wrapping option for TDFs
    in the KAS service.

Checklist

  • I have added or updated unit tests
  • I have added or updated integration tests (if appropriate)
  • I have added or updated documentation

Testing Instructions

Summary by CodeRabbit

New Features

  • Added support for post-quantum cryptography (PQC) configuration in KAS startup actions with a new pqc-enabled input option (default: false).
  • Enhanced input validation for cryptographic settings including the new PQC option.
  • KAS instances can now be configured to enable hybrid post-quantum/TDF wrapping.

Adds `pqc-enabled` boolean parameter to `start-up-with-containers`
and `start-additional-kas` actions, which when set to true will enable
the post-quantum and hybrid PQ/T wrapping option for TDFs
in the KAS service.
@dmihalcik-virtru dmihalcik-virtru requested a review from a team as a code owner June 5, 2026 12:12
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces the ability to enable post-quantum and hybrid PQ/T wrapping for TDFs within the KAS service. By adding a configurable input parameter to existing CI actions, it allows for easier testing and deployment of these cryptographic features in containerized environments.

Highlights

  • Configuration Updates: Added a new 'pqc-enabled' boolean input parameter to both 'start-additional-kas' and 'start-up-with-containers' GitHub Actions.
  • Service Integration: Updated the KAS service configuration logic to toggle 'hybrid_tdf_enabled' based on the new 'pqc-enabled' input, enabling post-quantum and hybrid PQ/T wrapping for TDFs.
New Features

🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.


The quantum threat is looming near, / But hybrid keys will make it clear. / With flags set true in YAML files, / We secure data across the miles.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 5, 2026

Review Change Stack

Warning

Review limit reached

@dmihalcik-virtru, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 40 minutes and 59 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2a1e2225-5cf9-49c1-a048-d4d96847b89a

📥 Commits

Reviewing files that changed from the base of the PR and between 58b5eb8 and 4fe3270.

📒 Files selected for processing (1)
  • test/start-additional-kas/action.yaml
📝 Walkthrough

Walkthrough

This PR adds post-quantum cryptography (PQC) support to two GitHub Actions that configure KAS test instances. Both actions introduce a new pqc-enabled input that gates conditional YAML configuration: when enabled, KAS keyring and crypto standard keys are extended with hybrid/post-quantum cryptography entries, and the configuration explicitly sets hybrid_tdf_enabled based on the flag.

Changes

Post-quantum cryptography support in KAS startup actions

Layer / File(s) Summary
PQC support in additional KAS action
test/start-additional-kas/action.yaml
Adds pqc-enabled input, validates it alongside ec-tdf-enabled with explicit true|false checks, exports PQC_ENABLED into the "Validate inputs" step environment, passes PQC_ENABLED to the KAS container step, and conditionally appends PQC keyring and crypto standard key entries to opentdf-dev.yaml when PQC_ENABLED is "true".
PQC support in main containers action
test/start-up-with-containers/action.yaml
Adds pqc-enabled input and expands the "Validate inputs" step to validate pqc-enabled as true|false alongside ec-tdf-enabled, platform-ref, extra-keys (JSON array), and logging inputs. Applies conditional ECC wrapping when ec-tdf-enabled == 'true' and conditional PQ wrapping when pqc-enabled == 'true', extending the KAS keyring with hpqt xwing/mlkem entries and their private/cert file mappings.

🎯 2 (Simple) | ⏱️ ~10 minutes

🐰 A quantum leap forward, though bits and hops don't mix,
Our KAS now dances with post-quantum kicks,
pqc-enabled flags the way so bright,
Hybrid wrapping shines through every night! 🌟

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding a new pqc-enabled option to CI service run actions for enabling PQ/T wrapping capabilities.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch DSPX-3456-actions

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions github-actions Bot added the size/s label Jun 5, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new pqc-enabled input to enable post-quantum and hybrid PQ/T wrapping for TDFs in both test/start-additional-kas/action.yaml and test/start-up-with-containers/action.yaml. Feedback on the changes highlights an issue where using env(PQC_ENABLED) in yq writes a string value instead of a boolean to the YAML configuration, and suggests using a boolean comparison to ensure correct type mapping.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread test/start-additional-kas/action.yaml Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 178.759339ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 94.670207ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 421.079709ms
Throughput 237.48 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 44.565051608s
Average Latency 444.048024ms
Throughput 112.20 requests/second

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the composite CI actions used to start the platform/KAS in tests by introducing a new pqc-enabled input to enable post-quantum / hybrid PQ/T wrapping behavior in KAS.

Changes:

  • Add pqc-enabled input to test/start-up-with-containers and wire it to KAS config.
  • Add pqc-enabled input to test/start-additional-kas and wire it to generated KAS config.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
test/start-up-with-containers/action.yaml Adds pqc-enabled input and a step intended to enable hybrid PQ/T wrapping in the main KAS config.
test/start-additional-kas/action.yaml Adds pqc-enabled input and passes it into the additional KAS config generation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/start-up-with-containers/action.yaml Outdated
Comment thread test/start-additional-kas/action.yaml Outdated
Expand input validation in start-additional-kas and start-up-with-containers
to cover every parameter, not just a subset. Unvalidated inputs were passed
directly into yq expressions and shell filenames, creating YAML-injection and
command-injection risk and producing confusing late failures.

- start-additional-kas: adds kas-port (numeric 1-65535), ec-tdf-enabled,
  pqc-enabled, and key-management boolean guards before the existing checks
- start-up-with-containers: renames step to "Validate inputs", adds
  platform-ref (safe-char regex), extra-keys (jq type check), ec-tdf-enabled,
  pqc-enabled, and provision-policy-fixtures boolean guards

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Dave Mihalcik <dmihalcik@virtru.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 172.811609ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 90.780837ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 434.712481ms
Throughput 230.04 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 42.765246935s
Average Latency 425.764432ms
Throughput 116.92 requests/second

dmihalcik-virtru and others added 2 commits June 5, 2026 08:31
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

X-Test Failure Report

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 172.802631ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 91.874529ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 440.095849ms
Throughput 227.22 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 42.155987086s
Average Latency 419.493176ms
Throughput 118.61 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 187.112963ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 92.712231ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 405.50536ms
Throughput 246.61 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 43.47650642s
Average Latency 433.455419ms
Throughput 115.00 requests/second

- start-up-with-containers: move Validate inputs to first step so
  invalid inputs are caught before checkout and yq mutations consume them
- start-up-with-containers: fix YAML structural bug where the PQC config
  block was injected as duplicate keys inside the Enable ECC wrapping step
  (YAML last-key-wins silently discarded the ECC if-condition and run
  block, so ECC wrapping never applied); promote it to a proper step and
  fix the ECC if-condition from bare value to == 'true'
- start-additional-kas: write ec_tdf_enabled as a boolean in yq
  ((env(EC_TDF_ENABLED) == "true")) consistent with hybrid_tdf_enabled

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Dave Mihalcik <dmihalcik@virtru.com>
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/start-additional-kas/action.yaml`:
- Line 157: The key_management value in the action YAML is being set from
env(KEY_MANAGEMENT) as a string; change it to the same boolean conversion used
for other flags (compare env(KEY_MANAGEMENT) == "true") so the generated YAML
emits a true/false boolean for the KASConfig.Preview.key_management field
(referenced by KASConfig.Preview in service/kas/access/provider.go) to keep
types consistent.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 16ca6667-a846-4e3b-a73b-dfbed3c7d90e

📥 Commits

Reviewing files that changed from the base of the PR and between 0de01df and 58b5eb8.

📒 Files selected for processing (2)
  • test/start-additional-kas/action.yaml
  • test/start-up-with-containers/action.yaml

Comment thread test/start-additional-kas/action.yaml Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 183.669851ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 98.984024ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 427.151617ms
Throughput 234.11 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 44.487186361s
Average Latency 443.446551ms
Throughput 112.39 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 151.563783ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 73.916032ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 337.550866ms
Throughput 296.25 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 34.116908965s
Average Latency 339.774797ms
Throughput 146.55 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

⚠️ Govulncheck found vulnerabilities ⚠️

The following modules have known vulnerabilities:

  • examples
  • otdfctl
  • sdk
  • service
  • lib/fixtures
  • tests-bdd

See the workflow run for details.

@dmihalcik-virtru dmihalcik-virtru added this pull request to the merge queue Jun 5, 2026
Merged via the queue into main with commit 626ce47 Jun 5, 2026
39 checks passed
@dmihalcik-virtru dmihalcik-virtru deleted the DSPX-3456-actions branch June 5, 2026 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants