Skip to content

Commit c483dd4

Browse files
committed
Squashed commit of the following:
commit 3a9aa86 Author: Chris Reed <[email protected]> Date: Tue Aug 12 07:44:59 2025 -0500 fix(policy): Update key management docs. (#141) 1.) Update documentation around key management. Removing the idea that a root key is needed with keys of mode **remote**. --------- Co-authored-by: Jp Ayyappan <[email protected]> commit b685b63 Author: Mike Jensen <[email protected]> Date: Mon Aug 11 18:44:54 2025 -0600 LICENSE as CC-BY-SA 4.0 (#137) After legal review it was determined we want to use the Creative Commons Attribution 4.0 license. This updates the license file from the template example here: https://github.com/jslicense/CC-BY-SA-4.0/blob/main/CC-BY-SA-4.0 Once approved and merged, the current plan is to remove the prior LICENSE commit through a force push of a squashed commit, this will prevent having the prior history of the docs being incorrectly licensed. commit 9f4e7b9 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Aug 7 11:52:03 2025 -0600 chore(deps): bump form-data from 4.0.0 to 4.0.4 (#139) Bumps [form-data](https://github.com/form-data/form-data) from 4.0.0 to 4.0.4. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/form-data/form-data/releases">form-data's releases</a>.</em></p> <blockquote> <h2>v4.0.4</h2> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4">v4.0.4</a> - 2025-07-16</h2> <h3>Commits</h3> <ul> <li>[meta] add <code>auto-changelog</code> <a href="https://github.com/form-data/form-data/commit/811f68282fab0315209d0e2d1c44b6c32ea0d479"><code>811f682</code></a></li> <li>[Tests] handle predict-v8-randomness failures in node &lt; 17 and node &gt; 23 <a href="https://github.com/form-data/form-data/commit/1d11a76434d101f22fdb26b8aef8615f28b98402"><code>1d11a76</code></a></li> <li>[Fix] Switch to using <code>crypto</code> random for boundary values <a href="https://github.com/form-data/form-data/commit/3d1723080e6577a66f17f163ecd345a21d8d0fd0"><code>3d17230</code></a></li> <li>[Tests] fix linting errors <a href="https://github.com/form-data/form-data/commit/5e340800b5f8914213e4e0378c084aae71cfd73a"><code>5e34080</code></a></li> <li>[meta] actually ensure the readme backup isn’t published <a href="https://github.com/form-data/form-data/commit/316c82ba93fd4985af757b771b9a1f26d3b709ef"><code>316c82b</code></a></li> <li>[Dev Deps] update <code>@ljharb/eslint-config</code> <a href="https://github.com/form-data/form-data/commit/58c25d76406a5b0dfdf54045cf252563f2bbda8d"><code>58c25d7</code></a></li> <li>[meta] fix readme capitalization <a href="https://github.com/form-data/form-data/commit/2300ca19595b0ee96431e868fe2a40db79e41c61"><code>2300ca1</code></a></li> </ul> <h2>v4.0.3</h2> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.2...v4.0.3">v4.0.3</a> - 2025-06-05</h2> <h3>Fixed</h3> <ul> <li>[Fix] <code>append</code>: avoid a crash on nullish values <a href="https://redirect.github.com/form-data/form-data/issues/577"><code>[#577](https://github.com/form-data/form-data/issues/577)</code></a></li> </ul> <h3>Commits</h3> <ul> <li>[eslint] use a shared config <a href="https://github.com/form-data/form-data/commit/426ba9ac440f95d1998dac9a5cd8d738043b048f"><code>426ba9a</code></a></li> <li>[eslint] fix some spacing issues <a href="https://github.com/form-data/form-data/commit/20941917f0e9487e68c564ebc3157e23609e2939"><code>2094191</code></a></li> <li>[Refactor] use <code>hasown</code> <a href="https://github.com/form-data/form-data/commit/81ab41b46fdf34f5d89d7ff30b513b0925febfaa"><code>81ab41b</code></a></li> <li>[Fix] validate boundary type in <code>setBoundary()</code> method <a href="https://github.com/form-data/form-data/commit/8d8e4693093519f7f18e3c597d1e8df8c493de9e"><code>8d8e469</code></a></li> <li>[Tests] add tests to check the behavior of <code>getBoundary</code> with non-strings <a href="https://github.com/form-data/form-data/commit/837b8a1f7562bfb8bda74f3fc538adb7a5858995"><code>837b8a1</code></a></li> <li>[Dev Deps] remove unused deps <a href="https://github.com/form-data/form-data/commit/870e4e665935e701bf983a051244ab928e62d58e"><code>870e4e6</code></a></li> <li>[meta] remove local commit hooks <a href="https://github.com/form-data/form-data/commit/e6e83ccb545a5619ed6cd04f31d5c2f655eb633e"><code>e6e83cc</code></a></li> <li>[Dev Deps] update <code>eslint</code> <a href="https://github.com/form-data/form-data/commit/4066fd6f65992b62fa324a6474a9292a4f88c916"><code>4066fd6</code></a></li> <li>[meta] fix scripts to use prepublishOnly <a href="https://github.com/form-data/form-data/commit/c4bbb13c0ef669916657bc129341301b1d331d75"><code>c4bbb13</code></a></li> </ul> <h2>v4.0.2</h2> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.1...v4.0.2">v4.0.2</a> - 2025-02-14</h2> <h3>Merged</h3> <ul> <li>[Fix] set <code>Symbol.toStringTag</code> when available <a href="https://redirect.github.com/form-data/form-data/pull/573"><code>[#573](https://github.com/form-data/form-data/issues/573)</code></a></li> <li>[Fix] set <code>Symbol.toStringTag</code> when available <a href="https://redirect.github.com/form-data/form-data/pull/573"><code>[#573](https://github.com/form-data/form-data/issues/573)</code></a></li> <li>fix (npmignore): ignore temporary build files <a href="https://redirect.github.com/form-data/form-data/pull/532"><code>[#532](https://github.com/form-data/form-data/issues/532)</code></a></li> <li>fix (npmignore): ignore temporary build files <a href="https://redirect.github.com/form-data/form-data/pull/532"><code>[#532](https://github.com/form-data/form-data/issues/532)</code></a></li> </ul> <h3>Fixed</h3> <ul> <li>[Fix] set <code>Symbol.toStringTag</code> when available (<a href="https://redirect.github.com/form-data/form-data/issues/573">#573</a>) <a href="https://redirect.github.com/form-data/form-data/issues/396"><code>[#396](https://github.com/form-data/form-data/issues/396)</code></a></li> <li>[Fix] set <code>Symbol.toStringTag</code> when available (<a href="https://redirect.github.com/form-data/form-data/issues/573">#573</a>) <a href="https://redirect.github.com/form-data/form-data/issues/396"><code>[#396](https://github.com/form-data/form-data/issues/396)</code></a></li> <li>[Fix] set <code>Symbol.toStringTag</code> when available <a href="https://redirect.github.com/form-data/form-data/issues/396"><code>[#396](https://github.com/form-data/form-data/issues/396)</code></a></li> </ul> <h3>Commits</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/form-data/form-data/blob/master/CHANGELOG.md">form-data's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4">v4.0.4</a> - 2025-07-16</h2> <h3>Commits</h3> <ul> <li>[meta] add <code>auto-changelog</code> <a href="https://github.com/form-data/form-data/commit/811f68282fab0315209d0e2d1c44b6c32ea0d479"><code>811f682</code></a></li> <li>[Tests] handle predict-v8-randomness failures in node &lt; 17 and node &gt; 23 <a href="https://github.com/form-data/form-data/commit/1d11a76434d101f22fdb26b8aef8615f28b98402"><code>1d11a76</code></a></li> <li>[Fix] Switch to using <code>crypto</code> random for boundary values <a href="https://github.com/form-data/form-data/commit/3d1723080e6577a66f17f163ecd345a21d8d0fd0"><code>3d17230</code></a></li> <li>[Tests] fix linting errors <a href="https://github.com/form-data/form-data/commit/5e340800b5f8914213e4e0378c084aae71cfd73a"><code>5e34080</code></a></li> <li>[meta] actually ensure the readme backup isn’t published <a href="https://github.com/form-data/form-data/commit/316c82ba93fd4985af757b771b9a1f26d3b709ef"><code>316c82b</code></a></li> <li>[Dev Deps] update <code>@ljharb/eslint-config</code> <a href="https://github.com/form-data/form-data/commit/58c25d76406a5b0dfdf54045cf252563f2bbda8d"><code>58c25d7</code></a></li> <li>[meta] fix readme capitalization <a href="https://github.com/form-data/form-data/commit/2300ca19595b0ee96431e868fe2a40db79e41c61"><code>2300ca1</code></a></li> </ul> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.2...v4.0.3">v4.0.3</a> - 2025-06-05</h2> <h3>Fixed</h3> <ul> <li>[Fix] <code>append</code>: avoid a crash on nullish values <a href="https://redirect.github.com/form-data/form-data/issues/577"><code>[#577](https://github.com/form-data/form-data/issues/577)</code></a></li> </ul> <h3>Commits</h3> <ul> <li>[eslint] use a shared config <a href="https://github.com/form-data/form-data/commit/426ba9ac440f95d1998dac9a5cd8d738043b048f"><code>426ba9a</code></a></li> <li>[eslint] fix some spacing issues <a href="https://github.com/form-data/form-data/commit/20941917f0e9487e68c564ebc3157e23609e2939"><code>2094191</code></a></li> <li>[Refactor] use <code>hasown</code> <a href="https://github.com/form-data/form-data/commit/81ab41b46fdf34f5d89d7ff30b513b0925febfaa"><code>81ab41b</code></a></li> <li>[Fix] validate boundary type in <code>setBoundary()</code> method <a href="https://github.com/form-data/form-data/commit/8d8e4693093519f7f18e3c597d1e8df8c493de9e"><code>8d8e469</code></a></li> <li>[Tests] add tests to check the behavior of <code>getBoundary</code> with non-strings <a href="https://github.com/form-data/form-data/commit/837b8a1f7562bfb8bda74f3fc538adb7a5858995"><code>837b8a1</code></a></li> <li>[Dev Deps] remove unused deps <a href="https://github.com/form-data/form-data/commit/870e4e665935e701bf983a051244ab928e62d58e"><code>870e4e6</code></a></li> <li>[meta] remove local commit hooks <a href="https://github.com/form-data/form-data/commit/e6e83ccb545a5619ed6cd04f31d5c2f655eb633e"><code>e6e83cc</code></a></li> <li>[Dev Deps] update <code>eslint</code> <a href="https://github.com/form-data/form-data/commit/4066fd6f65992b62fa324a6474a9292a4f88c916"><code>4066fd6</code></a></li> <li>[meta] fix scripts to use prepublishOnly <a href="https://github.com/form-data/form-data/commit/c4bbb13c0ef669916657bc129341301b1d331d75"><code>c4bbb13</code></a></li> </ul> <h2><a href="https://github.com/form-data/form-data/compare/v4.0.1...v4.0.2">v4.0.2</a> - 2025-02-14</h2> <h3>Merged</h3> <ul> <li>[Fix] set <code>Symbol.toStringTag</code> when available <a href="https://redirect.github.com/form-data/form-data/pull/573"><code>[#573](https://github.com/form-data/form-data/issues/573)</code></a></li> <li>[Fix] set <code>Symbol.toStringTag</code> when available <a href="https://redirect.github.com/form-data/form-data/pull/573"><code>[#573](https://github.com/form-data/form-data/issues/573)</code></a></li> <li>fix (npmignore): ignore temporary build files <a href="https://redirect.github.com/form-data/form-data/pull/532"><code>[#532](https://github.com/form-data/form-data/issues/532)</code></a></li> <li>fix (npmignore): ignore temporary build files <a href="https://redirect.github.com/form-data/form-data/pull/532"><code>[#532](https://github.com/form-data/form-data/issues/532)</code></a></li> </ul> <h3>Fixed</h3> <ul> <li>[Fix] set <code>Symbol.toStringTag</code> when available (<a href="https://redirect.github.com/form-data/form-data/issues/573">#573</a>) <a href="https://redirect.github.com/form-data/form-data/issues/396"><code>[#396](https://github.com/form-data/form-data/issues/396)</code></a></li> <li>[Fix] set <code>Symbol.toStringTag</code> when available (<a href="https://redirect.github.com/form-data/form-data/issues/573">#573</a>) <a href="https://redirect.github.com/form-data/form-data/issues/396"><code>[#396](https://github.com/form-data/form-data/issues/396)</code></a></li> <li>[Fix] set <code>Symbol.toStringTag</code> when available <a href="https://redirect.github.com/form-data/form-data/issues/396"><code>[#396](https://github.com/form-data/form-data/issues/396)</code></a></li> </ul> <h3>Commits</h3> <ul> <li>Merge tags v2.5.3 and v3.0.3 <a href="https://github.com/form-data/form-data/commit/92613b9208556eb4ebc482fdf599fae111626fb6"><code>92613b9</code></a></li> <li>[Tests] migrate from travis to GHA <a href="https://github.com/form-data/form-data/commit/806eda77740e6e3c67c7815afb216f2e1f187ba5"><code>806eda7</code></a></li> <li>[Tests] migrate from travis to GHA <a href="https://github.com/form-data/form-data/commit/8fdb3bc6b5d001f8909a9fca391d1d1d97ef1d79"><code>8fdb3bc</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/form-data/form-data/commit/41996f5ac73a867046d48512cab62e64fc846dad"><code>41996f5</code></a> v4.0.4</li> <li><a href="https://github.com/form-data/form-data/commit/316c82ba93fd4985af757b771b9a1f26d3b709ef"><code>316c82b</code></a> [meta] actually ensure the readme backup isn’t published</li> <li><a href="https://github.com/form-data/form-data/commit/2300ca19595b0ee96431e868fe2a40db79e41c61"><code>2300ca1</code></a> [meta] fix readme capitalization</li> <li><a href="https://github.com/form-data/form-data/commit/811f68282fab0315209d0e2d1c44b6c32ea0d479"><code>811f682</code></a> [meta] add <code>auto-changelog</code></li> <li><a href="https://github.com/form-data/form-data/commit/5e340800b5f8914213e4e0378c084aae71cfd73a"><code>5e34080</code></a> [Tests] fix linting errors</li> <li><a href="https://github.com/form-data/form-data/commit/1d11a76434d101f22fdb26b8aef8615f28b98402"><code>1d11a76</code></a> [Tests] handle predict-v8-randomness failures in node &lt; 17 and node &gt; 23</li> <li><a href="https://github.com/form-data/form-data/commit/58c25d76406a5b0dfdf54045cf252563f2bbda8d"><code>58c25d7</code></a> [Dev Deps] update <code>@ljharb/eslint-config</code></li> <li><a href="https://github.com/form-data/form-data/commit/3d1723080e6577a66f17f163ecd345a21d8d0fd0"><code>3d17230</code></a> [Fix] Switch to using <code>crypto</code> random for boundary values</li> <li><a href="https://github.com/form-data/form-data/commit/d8d67dc8ac79285154edf7d3f57dbab593b9a146"><code>d8d67dc</code></a> v4.0.3</li> <li><a href="https://github.com/form-data/form-data/commit/e6e83ccb545a5619ed6cd04f31d5c2f655eb633e"><code>e6e83cc</code></a> [meta] remove local commit hooks</li> <li>Additional commits viewable in <a href="https://github.com/form-data/form-data/compare/v4.0.0...v4.0.4">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~ljharb">ljharb</a>, a new releaser for form-data since your current version.</p> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=form-data&package-manager=npm_and_yarn&previous-version=4.0.0&new-version=4.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/opentdf/docs/network/alerts). </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit bec55be Author: Jeremy Haage <[email protected]> Date: Thu Aug 7 07:24:14 2025 -0700 Updates to the Getting-Started guide (#138) Includes the following updates: - Replaces deprecated `--action-standard DECRYPT` examples with `--action read` - Updates login command to match expected client-credentials arguments - Updates docker compose yaml to use generally available docker images to fix 403 forbidden errors on chainguard images - Adds support for Apple M4 chip users to the docker compose yaml - Adds a profile creation step and replaces usage of `--host` in the examples to `--profile` - Adds detailed steps for importing and trusting certificates commit 38d2951 Author: Jake Van Vorhis <[email protected]> Date: Fri Aug 1 11:56:40 2025 -0700 fix(docs): cleanup auth service v2 docs (#135) Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> commit 8f43eb9 Author: Jp Ayyappan <[email protected]> Date: Wed Jul 23 14:59:24 2025 -0400 Clarify wrapping key and root key terminology (#136) commit 75b6421 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Jul 21 09:55:21 2025 -0600 chore(deps): bump on-headers and compression (#134) Bumps [on-headers](https://github.com/jshttp/on-headers) and [compression](https://github.com/expressjs/compression). These dependencies needed to be updated together. Updates `on-headers` from 1.0.2 to 1.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/jshttp/on-headers/releases">on-headers's releases</a>.</em></p> <blockquote> <h2>1.1.0</h2> <h2>Important</h2> <ul> <li>Fix <a href="https://www.cve.org/CVERecord?id=CVE-2025-7339">CVE-2025-7339</a> (<a href="https://github.com/jshttp/on-headers/security/advisories/GHSA-76c9-3jph-rj3q">GHSA-76c9-3jph-rj3q</a>)</li> </ul> <h2>What's Changed</h2> <ul> <li>Migrate CI pipeline to GitHub actions by <a href="https://github.com/carpasse"><code>@​carpasse</code></a> in <a href="https://redirect.github.com/jshttp/on-headers/pull/12">jshttp/on-headers#12</a></li> <li>fix README.md badges by <a href="https://github.com/carpasse"><code>@​carpasse</code></a> in <a href="https://redirect.github.com/jshttp/on-headers/pull/13">jshttp/on-headers#13</a></li> <li>add OSSF scorecard action by <a href="https://github.com/carpasse"><code>@​carpasse</code></a> in <a href="https://redirect.github.com/jshttp/on-headers/pull/14">jshttp/on-headers#14</a></li> <li>fix: use <code>ubuntu-latest</code> as ci runner by <a href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a> in <a href="https://redirect.github.com/jshttp/on-headers/pull/19">jshttp/on-headers#19</a></li> <li>ci: apply OSSF Scorecard security best practices by <a href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a> in <a href="https://redirect.github.com/jshttp/on-headers/pull/20">jshttp/on-headers#20</a></li> <li>👷 add upstream change detection by <a href="https://github.com/ctcpip"><code>@​ctcpip</code></a> in <a href="https://redirect.github.com/jshttp/on-headers/pull/31">jshttp/on-headers#31</a></li> <li>✨ add script to update known hashes by <a href="https://github.com/ctcpip"><code>@​ctcpip</code></a> in <a href="https://redirect.github.com/jshttp/on-headers/pull/32">jshttp/on-headers#32</a></li> <li>💚 update CI - add newer node versions by <a href="https://github.com/ctcpip"><code>@​ctcpip</code></a> in <a href="https://redirect.github.com/jshttp/on-headers/pull/33">jshttp/on-headers#33</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/carpasse"><code>@​carpasse</code></a> made their first contribution in <a href="https://redirect.github.com/jshttp/on-headers/pull/12">jshttp/on-headers#12</a></li> <li><a href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a> made their first contribution in <a href="https://redirect.github.com/jshttp/on-headers/pull/19">jshttp/on-headers#19</a></li> <li><a href="https://github.com/ctcpip"><code>@​ctcpip</code></a> made their first contribution in <a href="https://redirect.github.com/jshttp/on-headers/pull/31">jshttp/on-headers#31</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/jshttp/on-headers/compare/v1.0.2...v1.1.0">https://github.com/jshttp/on-headers/compare/v1.0.2...v1.1.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/jshttp/on-headers/blob/master/HISTORY.md">on-headers's changelog</a>.</em></p> <blockquote> <h1>1.1.0 / 2025-07-17</h1> <ul> <li>Fix <a href="https://www.cve.org/CVERecord?id=CVE-2025-7339">CVE-2025-7339</a> (<a href="https://github.com/jshttp/on-headers/security/advisories/GHSA-76c9-3jph-rj3q">GHSA-76c9-3jph-rj3q</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/jshttp/on-headers/commit/4b017af88f5375bbdf3ad2ee732d2c122e4f52b0"><code>4b017af</code></a> 1.1.0</li> <li><a href="https://github.com/jshttp/on-headers/commit/b636f2d08e6c1e0a784b53a13cd61e05c09bb118"><code>b636f2d</code></a> ♻️ refactor header array code</li> <li><a href="https://github.com/jshttp/on-headers/commit/3e2c2d46c3e9592f6a1c3a3a1dbe622401f95d39"><code>3e2c2d4</code></a> ✨ ignore falsy header keys, matching node behavior</li> <li><a href="https://github.com/jshttp/on-headers/commit/172eb41b99a5a290b27a2c43fe602ca33aa1c8ce"><code>172eb41</code></a> ✨ support duplicate headers</li> <li><a href="https://github.com/jshttp/on-headers/commit/c6e384908c9c6127d18831d16ab0bd96e1231867"><code>c6e3849</code></a> 🔒️ fix array handling</li> <li><a href="https://github.com/jshttp/on-headers/commit/6893518341bb4e5363285df086b3158302d3b216"><code>6893518</code></a> 💚 update CI - add newer node versions</li> <li><a href="https://github.com/jshttp/on-headers/commit/56a345d82b51a0dcb8d09f061f87b1fd1dc4c01e"><code>56a345d</code></a> ✨ add script to update known hashes</li> <li><a href="https://github.com/jshttp/on-headers/commit/175ab217155d525371a5416ff059f895a3a532a6"><code>175ab21</code></a> 👷 add upstream change detection (<a href="https://redirect.github.com/jshttp/on-headers/issues/31">#31</a>)</li> <li><a href="https://github.com/jshttp/on-headers/commit/ce0b2c8fcd313d38d3534fb731050dc16e105bf6"><code>ce0b2c8</code></a> ci: apply OSSF Scorecard security best practices (<a href="https://redirect.github.com/jshttp/on-headers/issues/20">#20</a>)</li> <li><a href="https://github.com/jshttp/on-headers/commit/1a38c543e75cd06217b449531de10b1758e35299"><code>1a38c54</code></a> fix: use <code>ubuntu-latest</code> as ci runner (<a href="https://redirect.github.com/jshttp/on-headers/issues/19">#19</a>)</li> <li>Additional commits viewable in <a href="https://github.com/jshttp/on-headers/compare/v1.0.2...v1.1.0">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~ulisesgascon">ulisesgascon</a>, a new releaser for on-headers since your current version.</p> </details> <br /> Updates `compression` from 1.7.4 to 1.8.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/expressjs/compression/releases">compression's releases</a>.</em></p> <blockquote> <h2>v1.8.1</h2> <h2>What's Changed</h2> <ul> <li>fix(docs): update multiple links from http to https by <a href="https://github.com/Phillip9587"><code>@​Phillip9587</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/222">expressjs/compression#222</a></li> <li>ci: add dependabot for github actions by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/207">expressjs/compression#207</a></li> <li>build(deps): bump github/codeql-action from 2.23.2 to 3.28.15 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/228">expressjs/compression#228</a></li> <li>build(deps): bump ossf/scorecard-action from 2.3.1 to 2.4.1 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/229">expressjs/compression#229</a></li> <li>build(deps-dev): bump eslint-plugin-import from 2.26.0 to 2.31.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/230">expressjs/compression#230</a></li> <li>build(deps-dev): bump supertest from 6.2.3 to 6.3.4 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/231">expressjs/compression#231</a></li> <li>[StepSecurity] ci: Harden GitHub Actions by <a href="https://github.com/step-security-bot"><code>@​step-security-bot</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/235">expressjs/compression#235</a></li> <li>build(deps): bump github/codeql-action from 3.28.15 to 3.29.2 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/243">expressjs/compression#243</a></li> <li>build(deps): bump actions/upload-artifact from 4.3.1 to 4.6.2 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/239">expressjs/compression#239</a></li> <li>build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/240">expressjs/compression#240</a></li> <li>build(deps): bump actions/checkout from 4.1.1 to 4.2.2 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/241">expressjs/compression#241</a></li> <li>build(deps-dev): bump eslint-plugin-import from 2.31.0 to 2.32.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/expressjs/compression/pull/244">expressjs/compression#244</a></li> <li>deps: [email protected] by <a href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/246">expressjs/compression#246</a></li> <li>Release: 1.8.1 by <a href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/247">expressjs/compression#247</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/228">expressjs/compression#228</a></li> <li><a href="https://github.com/step-security-bot"><code>@​step-security-bot</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/235">expressjs/compression#235</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/expressjs/compression/compare/1.8.0...v1.8.1">https://github.com/expressjs/compression/compare/1.8.0...v1.8.1</a></p> <h2>v1.8.0</h2> <h2>What's Changed</h2> <ul> <li>Refactor chunkLength function for improved readability and consistency by <a href="https://github.com/Ayoub-Mabrouk"><code>@​Ayoub-Mabrouk</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/203">expressjs/compression#203</a></li> <li>Refactor toBuffer function to simplify buffer check logic by <a href="https://github.com/Ayoub-Mabrouk"><code>@​Ayoub-Mabrouk</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/201">expressjs/compression#201</a></li> <li>ci: add CodeQL (SAST) by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/204">expressjs/compression#204</a></li> <li>Use headersSent instead of _header by <a href="https://github.com/maritz"><code>@​maritz</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/129">expressjs/compression#129</a></li> <li>Bugfix/use write head instead of implicit header by <a href="https://github.com/Icehunter"><code>@​Icehunter</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/170">expressjs/compression#170</a></li> <li>feat: add default option by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/191">expressjs/compression#191</a></li> <li>ci: update ci workflow by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/206">expressjs/compression#206</a></li> <li>feat: support for brotli by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/194">expressjs/compression#194</a></li> <li>docs: improve readme by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/209">expressjs/compression#209</a></li> <li>docs: keywords field by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/210">expressjs/compression#210</a></li> <li>refactor: simplify encoding negotiation logic by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/213">expressjs/compression#213</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/Ayoub-Mabrouk"><code>@​Ayoub-Mabrouk</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/203">expressjs/compression#203</a></li> <li><a href="https://github.com/maritz"><code>@​maritz</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/129">expressjs/compression#129</a></li> <li><a href="https://github.com/Icehunter"><code>@​Icehunter</code></a> made their first contribution in <a href="https://redirect.github.com/expressjs/compression/pull/170">expressjs/compression#170</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/expressjs/compression/compare/1.7.5...v1.8.0">https://github.com/expressjs/compression/compare/1.7.5...v1.8.0</a></p> <h2>1.7.5</h2> <h2>What's Changed</h2> <ul> <li>chore: add support for OSSF scorecard reporting by <a href="https://github.com/inigomarquinez"><code>@​inigomarquinez</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/186">expressjs/compression#186</a></li> <li>ci: fix errors in ci github action for node 8 and 9 by <a href="https://github.com/inigomarquinez"><code>@​inigomarquinez</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/187">expressjs/compression#187</a></li> <li>docs: fix spelling by <a href="https://github.com/dijonkitchen"><code>@​dijonkitchen</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/174">expressjs/compression#174</a></li> <li>deps: [email protected] by <a href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in <a href="https://redirect.github.com/expressjs/compression/pull/192">expressjs/compression#192</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/expressjs/compression/blob/master/HISTORY.md">compression's changelog</a>.</em></p> <blockquote> <h1>1.8.1 / 2025-07-17</h1> <ul> <li>deps: on-headers@~1.1.0 <ul> <li>Fix <a href="https://www.cve.org/CVERecord?id=CVE-2025-7339">CVE-2025-7339</a> (<a href="https://github.com/expressjs/on-headers/security/advisories/GHSA-76c9-3jph-rj3q">GHSA-76c9-3jph-rj3q</a>)</li> </ul> </li> </ul> <h1>1.8.0 / 2025-02-10</h1> <ul> <li>Use <code>res.headersSent</code> when available</li> <li>Replace <code>_implicitHeader</code> with <code>writeHead</code> property</li> <li>add brotli support for versions of node that support it</li> <li>Add the enforceEncoding option for requests without <code>Accept-Encoding</code> header</li> </ul> <h1>1.7.5 / 2024-10-31</h1> <ul> <li>deps: Replace accepts with negotiator@~0.6.4 <ul> <li>Add preference option</li> </ul> </li> <li>deps: [email protected] <ul> <li>Add petabyte (<code>pb</code>) support</li> <li>Fix &quot;thousandsSeparator&quot; incorrecting formatting fractional part</li> <li>Fix return value for un-parsable strings</li> </ul> </li> <li>deps: compressible@~2.0.18 <ul> <li>Mark <code>font/ttf</code> as compressible</li> <li>Remove compressible from <code>multipart/mixed</code></li> <li>deps: mime-db@'&gt;= 1.43.0 &lt; 2'</li> </ul> </li> <li>deps: [email protected]</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/expressjs/compression/commit/83a0c45fe190f4fcb8b515c18065db9cb9029dd1"><code>83a0c45</code></a> 1.8.1</li> <li><a href="https://github.com/expressjs/compression/commit/ce62713129f4b33eac4b833e1722410091646395"><code>ce62713</code></a> deps: [email protected] (<a href="https://redirect.github.com/expressjs/compression/issues/246">#246</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/f4acb23985fa345318d34d4a96acf555a883efeb"><code>f4acb23</code></a> build(deps-dev): bump eslint-plugin-import from 2.31.0 to 2.32.0 (<a href="https://redirect.github.com/expressjs/compression/issues/244">#244</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/6eaebe63f2ecac191d402c570bde140488435c4c"><code>6eaebe6</code></a> build(deps): bump actions/checkout from 4.1.1 to 4.2.2 (<a href="https://redirect.github.com/expressjs/compression/issues/241">#241</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/37e062312fd270f84b5f50f7c6f88312609633f5"><code>37e0623</code></a> build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 (<a href="https://redirect.github.com/expressjs/compression/issues/240">#240</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/bc436b26283c2f85a9711085dd0e4a580de50ba7"><code>bc436b2</code></a> build(deps): bump actions/upload-artifact from 4.3.1 to 4.6.2 (<a href="https://redirect.github.com/expressjs/compression/issues/239">#239</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/2f9f5726751ecf12f7c46a9d1493bcd1966e09a7"><code>2f9f572</code></a> build(deps): bump github/codeql-action from 3.28.15 to 3.29.2 (<a href="https://redirect.github.com/expressjs/compression/issues/243">#243</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/5f13b148d2a1a2daaa8647e03592214bb240bf18"><code>5f13b14</code></a> [StepSecurity] ci: Harden GitHub Actions (<a href="https://redirect.github.com/expressjs/compression/issues/235">#235</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/76e094548125afbf8089a482d5982dc96c7ce398"><code>76e0945</code></a> build(deps-dev): bump supertest from 6.2.3 to 6.3.4 (<a href="https://redirect.github.com/expressjs/compression/issues/231">#231</a>)</li> <li><a href="https://github.com/expressjs/compression/commit/ae6ee809dc0cb40febaf2a5bff298465bd5a207f"><code>ae6ee80</code></a> build(deps-dev): bump eslint-plugin-import from 2.26.0 to 2.31.0 (<a href="https://redirect.github.com/expressjs/compression/issues/230">#230</a>)</li> <li>Additional commits viewable in <a href="https://github.com/expressjs/compression/compare/1.7.4...v1.8.1">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~ulisesgascon">ulisesgascon</a>, a new releaser for compression since your current version.</p> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/opentdf/docs/network/alerts). </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit 1147327 Author: b-long <[email protected]> Date: Thu Jul 10 15:45:41 2025 -0400 chore(docs): DSPX-1267 minor updates (#129) Various updates here to support learnability and Developer Experience (DX) for a student persona, for instance: 1. [Simplify code, use 'platformEndpoint' variable](8da6e97) 1. [Set 'platformEndpoint' consistently](a168893) 1. Previously we used `platformEndpoint := "http://localhost:9002"` and `platformEndpoint := "https://opentdf.io"` in Go-lang code samples, now we only use the former. 1. **Note**: the string `opentdf.io` is used in attribute values and namespaces, but `platformEndpoint` is used for our client connection. 1. [Use dynamic namespaceID in 'create_attribute' example](e5a4257) 1. This is so that the example works (at all) 1. [Use dynamic role name in 'create_attribute' example](7b414d2) 1. This is so that the example can be run more than once, and doesn't throw an error about the attribute already existing ### Improving visual / output for learning purposes Updates to the file `code_samples/tdf/encryption_ztdf.mdx`, to assist in learning (Before) `helloworld.go` output <details><summary> Click to expand </summary> <p> ``` 2025/07/09 13:25:10 TDF Manifest: &{{{split eyJ1dWlkIjoiYWExOTIyYjQtNWNlOS0xMWYwLTg0ZDQtMzI0NmVjMmYwZmI1IiwiYm9keSI6eyJkYXRhQXR0cmlidXRlcyI6bnVsbCwiZGlzc2VtIjpudWxsfX0= [{wrapped https://platform-training.dsp-dev-green.virtru.com kas k3GLYZ9BU9mm88hkZq/Z8NCTedgyTKzgAG8aqQyO4SFNYpBU5JFPEbiXMqjwU7Atmg+DS4jDrsuxSwIb6TDpHQqfH5vkPK255uMyZMdo5oVfC5f8uPJagTXeZHLXuIAF53jS5AbU20YDXJJGFR3PeysShReP9FaWhlg/0lgNjuTCwfux65bQygHjz656i13X5BNwCDZQqB0m74gIwZUukYtbkJRPtdQzLEgOh6GFgQYu/3E6xckt3vFiPNAOEwVx9yx6PN6jzFHOaNCDGmt2hSN9nKCiet5Jpdg/k0ne82tp+CJwaJUaoTnNl98D+Cke1gogHPs6U8QB9jmuuU87wQ== {HS256 OTZhYzc2MDIxMWI4NDk5MmY3MDVmMTE4MTBmNDMyYTBkN2M2ZjBhMmI5MmZkNWY2MzUxODUxYzQwYjc3M2M4OA==} r1 1.0 }] {AES-256-GCM true} {{HS256 nhL3bOtSWCewGAhKcIs8IsyqqNUZ+Pu6bEFg3hvqf74=} GMAC 2097152 2097180 [{BG7daMHmLtQyRIrm24ntSw== 15 43}]}} {reference 0.payload zip application/octet-stream true} [] 4.3.0} 1612 {0x14000386600} [67 176 93 101 253 161 58 204 124 128 167 211 108 148 139 189 126 252 90 70 61 171 149 42 148 229 193 90 35 49 146 40]} ``` </p> </details> (After) `helloworld.go` output <details><summary> Click to expand </summary> <p> ``` 2025/07/09 13:42:27 🚀 Starting OpenTDF example... 2025/07/09 13:42:27 📡 Connecting to platform: <SOME URL> 2025/07/09 13:42:27 🔐 Initializing new SDK client... 2025/07/09 13:42:28 📝 Preparing sensitive data for encryption... 2025/07/09 13:42:28 🔒 Encrypting data... 2025/07/09 13:42:28 ✅ Data successfully encrypted 2025/07/09 13:42:28 📋 TDF Manifest details: &{{{split eyJ1dWlkIjoiMTUyNWJhNTItNWNlYy0xMWYwLTg2OGQtMzI0NmVjMmYwZmI1IiwiYm9keSI6eyJkYXRhQXR0cmlidXRlcyI6bnVsbCwiZGlzc2VtIjpudWxsfX0= [{wrapped https://platform-training.dsp-dev-green.virtru.com kas rufO6aOQAS0MM+fXcdiaR60Dr/Lnifa1MyY9vTQrIjTNzmamWPUXg4DeV8Xp6vhBIk/HYjmtqAVI9ezqXxhsIAqWR6UyLXPtV+LV5S6oq8vH9cf38E0pmFNYjPyLx9T8JcxcLta6EQz7AIWagMcudoug30vS5AOxeUieoGM4VDfPI+BTBV26fTGqwcYnVI/jcUAs5AUUt80jYm7UVlw2VyDwdEFycW8+q7KK4UxzPH8wdnq5mbMlP4Z5+4aQ70IZE2DhE1Ozn93Ow9us4rxKyjDQbSOduuDWTju8zkXssf6tPIkJrFAHhoZQ5jZM9lIiAu+CXJQrQmAaiLzGmUoE/Q== {HS256 NThjMTliZTBjOTZmNTgwNzcxYzJlNWRhZDA4NDdiODA3ZTlhYTIwY2QxNjE4NjI3MTE3NDZjMjE1M2M5MDEyYg==} r1 1.0 }] {AES-256-GCM true} {{HS256 Rp2lJRdohYmoE73TGtoPiMFRiva7ap64ho8lyCrLQUU=} GMAC 2097152 2097180 [{KDKDJhhfF+X5wa2zY/Z7MQ== 15 43}]}} {reference 0.payload zip application/octet-stream true} [] 4.3.0} 1612 {0x140003ef200} [17 193 64 131 155 245 242 186 7 60 143 124 129 246 245 173 219 122 77 217 87 48 93 39 198 91 188 150 31 115 30 74]} 2025/07/09 13:42:28 🔓 Decrypting data... 2025/07/09 13:42:28 📤 Decrypted content: Sensitive data! 2025/07/09 13:42:28 ✅ Example complete! ``` </p> </details> commit 9072372 Author: Ryan Yanulites <[email protected]> Date: Tue Jul 8 15:19:10 2025 -0600 feat(policy): Registered Resource docs (#130) Adds OpenTDF documentation for Registered Resources commit 81380d4 Author: b-long <[email protected]> Date: Tue Jul 8 16:38:22 2025 -0400 chore(docs): DSPX-1408 Correct `.gitignore` file (#132) Correct `.gitignore` file, relating to `_category_.json` files. See: #130 (comment) commit 45c1f4a Author: b-long <[email protected]> Date: Tue Jul 8 16:20:32 2025 -0400 chore(docs): DSPX-1408 Enable sharing OpenAPI clients URL (#131) Enable sharing OpenAPI clients URL This change allows a user to bookmark or share the URL to ( `/OpenAPI-clients` ). Previously there was no route / page for an end-user to bookmark or share. ![image](https://github.com/user-attachments/assets/7512a82a-f58f-4e4b-9415-1ebcb42dc94c) commit 5a4ea3e Author: Chris Reed <[email protected]> Date: Wed Jul 2 11:26:55 2025 -0500 fix(core): Update key management docs. (#128) - Update key management guide docs --------- Co-authored-by: Jp Ayyappan <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> commit 3aecafd Author: Sean Trantalis <[email protected]> Date: Tue Jul 1 09:59:31 2025 -0400 chore(docs): kas grant migration docs (#124) Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Jp Ayyappan <[email protected]> Co-authored-by: jp-ayyappan <[email protected]> commit ec8b9de Author: Jake Van Vorhis <[email protected]> Date: Mon Jun 30 15:32:52 2025 -0700 feat(policy): add and update docs for `actions` within entitlement decisioning (#126) commit 456711d Author: Jake Van Vorhis <[email protected]> Date: Mon Jun 30 13:09:49 2025 -0700 chore: remove reviewdog languagetool since gemini reviews are much higher signal to noise (#127) commit b07ad5d Author: b-long <[email protected]> Date: Mon Jun 30 13:36:33 2025 -0400 chore: re-enable 'vale' (#119) The `vale` tool was disabled in #110 , this PR reverts that change. Co-authored-by: Ryan Schumacher <[email protected]>
1 parent 641d31d commit c483dd4

24 files changed

+1471
-246
lines changed

.github/workflows/languagetool.yaml

Lines changed: 0 additions & 20 deletions
This file was deleted.

.github/workflows/vale.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Vale
33
on:
44
pull_request:
55
branches:
6-
- disabled
6+
- main
77

88
jobs:
99
vale-check:

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ docs/SDK-Samples/
1111
# Generated files
1212
.docusaurus
1313
.cache-loader
14+
# Ignore all generated _category_.json files in docs/spec
15+
/docs/spec/**/_category_.json
1416

1517
# Misc
1618
.DS_Store

LICENSE

Lines changed: 430 additions & 0 deletions
Large diffs are not rendered by default.

code_samples/policy_code/create_attribute.mdx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ package main
1111

1212
import (
1313
"context"
14+
"crypto/rand"
1415
"log"
1516

1617
"github.com/opentdf/platform/protocol/go/policy"
1718
"github.com/opentdf/platform/protocol/go/policy/attributes"
19+
"github.com/opentdf/platform/protocol/go/policy/namespaces"
1820
"github.com/opentdf/platform/sdk"
1921
)
2022

@@ -32,20 +34,31 @@ func main() {
3234
log.Fatal(err)
3335
}
3436

35-
// Create a new attribute
36-
namespaceID := "f9ac9403-a12f-4ed3-b3c9-a46910361b4d"
37+
// List namespaces to get a namespace ID
38+
listResponse, err := client.Namespaces.ListNamespaces(context.Background(), &namespaces.ListNamespacesRequest{})
39+
if err != nil {
40+
log.Fatalf("failed to list namespaces: %s", err)
41+
}
3742

43+
if len(listResponse.GetNamespaces()) == 0 {
44+
log.Fatal("no namespaces found")
45+
}
46+
47+
namespaceID := listResponse.GetNamespaces()[0].GetId()
48+
49+
// Create a new attribute
3850
attrRequest := &attributes.CreateAttributeRequest{
3951
NamespaceId: namespaceID,
40-
Name: "role",
52+
Name: "role" + "-" + rand.Text()[:4],
4153
Rule: policy.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF,
4254
Values: []string{"admin", "developer", "guest"},
4355
}
4456

45-
_, err = client.Attributes.CreateAttribute(context.Background(), attrRequest)
57+
attribute, err := client.Attributes.CreateAttribute(context.Background(), attrRequest)
4658
if err != nil {
4759
log.Fatal(err)
4860
}
61+
log.Printf("Created attribute: %s with ID: %s in namespace: %s\n", attribute.GetAttribute().Name, attribute.GetAttribute().GetId(), namespaceID)
4962
}
5063
```
5164

code_samples/policy_code/create_namespace.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919

2020
func main() {
2121

22-
platformEndpoint := "https://opentdf.io"
22+
platformEndpoint := "http://localhost:9002"
2323

2424
// Create a new client
2525
client, err := sdk.New(

code_samples/policy_code/create_subject_condition_set.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,12 @@ func main() {
5555
},
5656
}
5757

58-
_, err = client.SubjectMapping.CreateSubjectConditionSet(context.Background(), coditionset)
58+
log, err := client.SubjectMapping.CreateSubjectConditionSet(context.Background(), coditionset)
5959
if err != nil {
6060
log.Fatal(err)
6161
}
6262

63+
log.Printf("Created Subject Condition Set with ID: %s\n", resp.GetSubjectConditionSet().GetId())
6364
}
6465
```
6566

code_samples/tdf/encryption_ztdf.mdx

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,64 +10,67 @@ import TabItem from '@theme/TabItem';
1010
package main
1111

1212
import (
13-
"bufio"
1413
"bytes"
1514
"log"
16-
"os"
1715
"strings"
1816

1917
"github.com/opentdf/platform/sdk"
2018
)
2119

2220
func main() {
21+
log.Println("🚀 Starting OpenTDF example...")
2322

2423
platformEndpoint := "http://localhost:9002"
24+
log.Printf("📡 Connecting to platform: %s", platformEndpoint)
2525

2626
// Create a new client
27+
log.Println("🔐 Initializing new SDK client...")
2728
client, err := sdk.New(
2829
platformEndpoint,
2930
sdk.WithClientCredentials("opentdf", "secret", nil),
3031
)
3132

3233
if err != nil {
33-
log.Fatal(err)
34+
log.Fatalf("❌ Client initialization failed: %v", err)
3435
}
3536

3637
// Encrypt ztdf
37-
38+
log.Println("📝 Preparing sensitive data for encryption...")
3839
str := strings.NewReader("Sensitive data!")
3940
buf := &bytes.Buffer{}
40-
out := bufio.NewWriter(buf)
4141

42-
manifest, err := client.CreateTDF(out, str,
42+
log.Println("🔒 Encrypting data...")
43+
manifest, err := client.CreateTDF(buf, str,
4344
//sdk.WithDataAttributes("https://opentdf.io/attr/role/value/developer"),
4445
sdk.WithKasInformation(
4546
sdk.KASInfo{
46-
URL: "http://localhost:9002",
47+
URL: platformEndpoint,
4748
},
4849
),
4950
)
5051

5152
if err != nil {
52-
log.Fatal(err)
53+
log.Fatalf("❌ Encryption failed: %v", err)
5354
}
5455

55-
//Flush data to buffer
56-
out.Flush()
57-
58-
log.Printf("TDF Manifest: %v", manifest)
56+
log.Println("✅ Data successfully encrypted")
57+
log.Printf("📋 TDF Manifest details:\n\n%v\n\n", manifest)
5958

6059
// Decrypt ztdf
60+
log.Println("🔓 Decrypting data...")
6161
tdfReader, err := client.LoadTDF(bytes.NewReader(buf.Bytes()))
6262
if err != nil {
63-
log.Fatal(err)
63+
log.Fatalf("❌ Decryption failed: %v", err)
6464
}
6565

66-
// Write decrypted data to stdout
67-
_, err = tdfReader.WriteTo(os.Stdout)
68-
if err != nil {
69-
log.Fatal(err)
66+
// Create a buffer to capture the decrypted data
67+
var decryptedBuf bytes.Buffer
68+
if _, err = tdfReader.WriteTo(&decryptedBuf); err != nil {
69+
log.Fatalf("❌ Failed to write decrypted data: %v", err)
7070
}
71+
72+
log.Printf("📤 Decrypted content: \n\n%s\n\n", decryptedBuf.String())
73+
log.Println("✅ Example complete!")
7174
}
7275
```
7376

docs/components/authorization.md

Lines changed: 143 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,155 @@ sidebar_position: 1
44

55
# Authorization Service
66

7-
The Authorization service makes access decisions based on Attribute-Based Access Control (ABAC) policies and evaluates subject mappings to assign attributes to specific entities. The service provides two endpoints: **GetEntitlements** and **GetDecisions**.
7+
The Authorization service makes access decisions based on Attribute-Based Access Control (ABAC) policies and evaluates subject mappings and attribute definition rules to determine allowed actions on attribute values for specified entities.
88

9-
## GetEntitlements
10-
11-
The `GetEntitlements` endpoint takes a list of entities and returns the attributes to which each entity is entitled. Entitlements are based on subject mappings, as described in the [policy documentation](./policy/subject_mappings), and the entity data returned by the [entity resolution service](./entity_resolution).
12-
13-
### Entities
14-
15-
An entity is any being or structure interacting with the platform. A **person entity (PE)** represents an actual user, while a **non-person entity (NPE)** represents a system or program interacting on behalf of a user or via automation.
9+
An entity is any being or principal interacting with the platform. A **person entity (PE)** represents an actual user, while a **non-person entity (NPE)** represents a system or program interacting on behalf of a user/organization or via automation.
1610

1711
Entities are categorized into two types:
1812

1913
- **Subject entities**: These include PEs or NPEs and are evaluated in access decisions.
2014
- **Environment entities**: These are excluded from access decisions.
2115

16+
Two versions of Authorization Service are currently served simultaneously by the platform, with v1 being deprecated soon:
17+
- [v2](#v2-latest)
18+
- [v1](#v1-soon-to-be-deprecated)
19+
20+
## v2 (latest)
21+
22+
### Changes
23+
24+
Version 2 of Authorization Service introduced the following changes:
25+
- Consideration of policy [actions](./policy/actions.md) from [subject mappings](./policy/subject_mappings.md) in entitlement decisions
26+
- API structure and clarity improvements
27+
- [entity identifier](#entity-identifier)
28+
- multiplexing design within decisioning
29+
- removal of scopes when retrieving entitlements, in deference to decision APIs
30+
- Removal of configurable custom `Rego` support
31+
32+
#### Entity Identifier
33+
34+
The entity identifier is a request proto object allowing multiple structures representing an entity to stand in as the entity in an Auth Service request:
35+
- an Entity Chain (the response from an `entityresolutionservice.v2.CreateEntityChainsFromTokens` call)
36+
- a Token (access token JWT)
37+
- the FQN of a Registered Resource Value (_EXPERIMENTAL_)
38+
39+
#### Resource
40+
41+
The resource is a request proto object allowing multiple structures representing a resource to stand in as the resource in an Auth Service Decision request:
42+
- a list of Attribute Values FQNs
43+
- the FQN of a Registered Resource Value (_EXPERIMENTAL_)
44+
45+
### GetEntitlements
46+
47+
The `GetEntitlements` endpoint takes an Entity Identifier and returns the entitled actions per attribute value back (entitlements).
48+
49+
Entitlements are driven by subject mappings, as described in the [policy documentation](./policy/subject_mappings), and the entity data returned by the [entity resolution service](./entity_resolution).
50+
51+
The request flag `with_comprehensive_hierarchy` will drive response behavior for attribute values on definitions with a `hierarchy` rule. If the flag
52+
is omitted or passed with value `false`, the response will contain strictly the resolved subject mappings' entitled actions for each attribute value.
53+
However, if it is set to `true` in a request, actions will propagate down hierarchically to each lower-hierarchy attribute value within the response. This propagation behavior is the same utilized during `GetDecision` flows to drive ABAC entitlement between entities and resources.
54+
55+
Say there are three subject mappings for a single entity as the EntityIdentifier ephemeral ID `entity_xyz`:
56+
1. contains actions `read, update` and a mapped attribute value `https://example.com/attr/department/value/engineering` on an ANY_OF definition
57+
2. contains action `read` and a mapped attribute value `https://example.com/attr/level/value/higher` on a HIERARCHY definition containing values `higher, medium, lower`, which therefore gets propagated down comprehensively
58+
3. contains action `delete` and a mapped attribute value `https://example.com/attr/level/value/lower` on a HIERARCHY definition containing values `higher, medium, lower`
59+
60+
The `GetEntitlements` response would look like the below if `with_comprehensive_hierarchy` is set to `true`:
61+
62+
```json
63+
{
64+
"entitlements":[
65+
{
66+
"ephemeral_id":"entity_xyz",
67+
"actions_per_attribute_value_fqn":{
68+
"https://example.com/attr/level/value/higher":{
69+
"actions":[
70+
{
71+
"id":"<action policy object UUID>",
72+
"name":"read"
73+
}
74+
]
75+
},
76+
"https://example.com/attr/level/value/medium":{
77+
"actions":[
78+
{
79+
"id":"<action policy object UUID>",
80+
"name":"read"
81+
}
82+
]
83+
},
84+
"https://example.com/attr/level/value/lower":{
85+
"actions":[
86+
{
87+
"id":"<action policy object UUID>",
88+
"name":"delete"
89+
},
90+
{
91+
"id":"<action policy object UUID>",
92+
"name":"read"
93+
}
94+
]
95+
},
96+
"https://example.com/attr/department/value/engineering":{
97+
"actions":[
98+
{
99+
"id":"<action policy object UUID>",
100+
"name":"read"
101+
},
102+
{
103+
"id":"<action policy object UUID>",
104+
"name":"update"
105+
}
106+
]
107+
},
108+
}
109+
}
110+
]
111+
}
112+
```
113+
114+
### GetDecision, GetDecisionMultiResource, GetDecisionBulk
115+
116+
The `GetDecision` endpoints evaluate access control permissions over entities, actions, and resources.
117+
118+
The [request/response protos](https://github.com/opentdf/platform/blob/main/service/authorization/v2/authorization.proto) define
119+
structures for more specific decisioning flows than the v1 catch-all `GetDecisions` endpoint.
120+
121+
In all decision flows, the access logic is as follows:
122+
1. given the Entity Identifier, which Subject Mappings in Policy are relevant and resolve to true?
123+
2. given the Subject Mappings, which contained Actions are entitled on which Attribute Values?
124+
3. given the entitled Actions per each Attribute Value, which Attribute Definitions are relevant to the Resource attributes?
125+
4. given the relevant entitlements and resource attributes, are the attribute definition rules satisfied by the entity's entitlements
126+
for the requested action name?
127+
128+
In other words, a Decision will be to _deny_ if:
129+
1. no subject mappings apply to an entity
130+
2. some subject mappings apply to an entity, but none containing the specific requested action
131+
3. some subject mappings apply to an entity, but they only entitle the specific requested action on attribute values other than
132+
those of the requested resource
133+
4. the subject mappings entitle some of the resource's attribute values for the requested action, but not enough to satisfy the attribute definition rule (ANY_OF, ALL_OF, HIERARCHY) given the requested resource's attribute values
134+
135+
Endpoints:
136+
1. `GetDecision`: can this entity take this action on this resource?
137+
- one Entity Identifier
138+
- one Action (`name` is required)
139+
- one Resource
140+
2. `GetDecisionMultiResource`: can this entity take this action on these resources?
141+
- one Entity Identifier
142+
- one Action (`name` is required)
143+
- multiple Resources
144+
3. `GetDecisionBulk`: more performant batch processing of multiple `GetDecisionMultiResource` requests
145+
- useful for multiple entities
146+
- useful for multiple actions
147+
148+
## v1 (soon to be deprecated)
149+
150+
### GetEntitlements
151+
152+
The `GetEntitlements` endpoint takes a list of entities and returns the attributes to which each entity is entitled. Entitlements are based on subject mappings, as described in the [policy documentation](./policy/subject_mappings), and the entity data returned by the [entity resolution service](./entity_resolution).
153+
154+
#### Entities
155+
22156
Entities can be identified using various methods, as shown in the proto definition:
23157

24158
```protobuf
@@ -99,7 +233,7 @@ Below is an example response to the above GetEntitlements request:
99233

100234
The entities in the response can be mapped back to the original input using the entity ID. The "attribute_value_fqns" field includes a list of attribute FQNs to which that particular entity has been entitled. If no scope was provided, this field will include **ALL** of the attribute entitlements for that entity.
101235

102-
## GetDecisions
236+
### GetDecisions
103237

104238
The `GetDecisions` endpoint evaluates access control rules for one or more entity chains and resources. It checks whether entities have permission to perform specified actions on resources, based on provided attributes.
105239

0 commit comments

Comments
 (0)