Skip to content

fix(policy)!: Make legacy flag optional #2647

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed

Conversation

c-r33d
Copy link
Contributor

@c-r33d c-r33d commented Aug 20, 2025

Proposed Changes

1.) Make legacy flag optional within AsymmetricKey.

Doing this because a field of type bool with a value of false will be omitted from a JSON response, when using omitempty.

Important

Currently not used within any downstream clients.
Only located within release v0.7 protocol/go
Plan on backporting.

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

@c-r33d c-r33d requested review from a team as code owners August 20, 2025 13:53
@github-actions github-actions bot added comp:policy Policy Configuration ( attributes, subject mappings, resource mappings, kas registry) docs Documentation size/xs labels Aug 20, 2025
Copy link
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.

Summary of Changes

Hello @c-r33d, 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 modifies the AsymmetricKey structure to make the legacy flag optional. This change involves updating the Protocol Buffer definition to explicitly mark the legacy field as optional, adjusting the corresponding gRPC documentation, and updating existing Go test cases to correctly handle the legacy field as a pointer to a boolean, reflecting its new optional nature. The change aims to provide more flexibility for this flag, which is noted as not currently being used by downstream clients.

Highlights

  • Protocol Buffer Definition Update: The legacy field in the CreateKeyRequest message within key_access_server_registry.proto has been changed from a required bool to an optional bool.
  • Documentation Update: The gRPC documentation (docs/grpc/index.html) has been updated to reflect that the legacy field is now optional.
  • Test Case Adaptations: Existing Go test cases in service/integration/kas_registry_key_test.go and service/policy/kasregistry/key_access_server_registry_keys_test.go have been updated to use a pointer to a boolean (&legacyTrue) for the Legacy field, aligning with its new optional status.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize 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 counter productive. 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.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


Optional field, Now a choice, not a must, Code adapts with grace.

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.

Copy link
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 makes the legacy flag in AsymmetricKey optional. The changes correctly update the protobuf definition, the generated documentation, and the test files to reflect this change. The use of optional in the proto file and pointers to booleans in the Go test code is appropriate for making the field optional.

My main feedback is on a minor code style point in the tests to improve readability and maintainability by avoiding a new package-level variable. Overall, the changes are well-implemented and achieve the stated goal.

Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 350.112566ms
Throughput 285.62 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.930999669s
Average Latency 367.695212ms
Throughput 135.39 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.594945636s
Average Latency 254.546828ms
Throughput 195.35 requests/second

@c-r33d c-r33d force-pushed the fix/make-bool-optional branch from d9c8d9a to c69a054 Compare August 20, 2025 14:13
@c-r33d c-r33d requested a review from a team as a code owner August 20, 2025 14:13
Copy link
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

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

Benchmark authorization.v2.GetMultiResourceDecision Results:

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

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 363.817485ms
Throughput 274.86 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 37.663226971s
Average Latency 374.444878ms
Throughput 132.76 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.729566414s
Average Latency 256.133422ms
Throughput 194.33 requests/second

@c-r33d
Copy link
Contributor Author

c-r33d commented Aug 20, 2025

/gemini review

Copy link
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 correctly makes the legacy flag in the AsymmetricKey message optional. The change is consistently applied across the Protobuf definitions, database layer, tests, and documentation. The implementation is sound and achieves the stated goal. I have one minor suggestion to improve code conciseness in the database access layer.

@c-r33d c-r33d changed the title fix(policy): Make legacy flag optional fix(policy)!: Make legacy flag optional Aug 20, 2025
@c-r33d c-r33d closed this Aug 20, 2025
@c-r33d
Copy link
Contributor Author

c-r33d commented Aug 20, 2025

Closing because we decided it was fine to have the field omitted when false.

@c-r33d c-r33d deleted the fix/make-bool-optional branch August 20, 2025 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp:policy Policy Configuration ( attributes, subject mappings, resource mappings, kas registry) docs Documentation size/xs
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant