Skip to content

🩹 [Patch]: Current Jwt module ready for maintained publication#18

Merged
Marius Storhaug (MariusStorhaug) merged 29 commits into
mainfrom
init
May 11, 2026
Merged

🩹 [Patch]: Current Jwt module ready for maintained publication#18
Marius Storhaug (MariusStorhaug) merged 29 commits into
mainfrom
init

Conversation

@MariusStorhaug
Copy link
Copy Markdown
Member

@MariusStorhaug Marius Storhaug (MariusStorhaug) commented May 9, 2026

Jwt is aligned with the current maintained module so existing users can continue installing the package and using the established JWT commands from PSModule/Jwt. The source layout now follows Process-PSModule conventions: the package manifest is generated by the build from the module content and structure, while the repository keeps only the lightweight source metadata needed for generation.

Changed: Current JWT module is ready for maintained publication

Jwt continues to expose the current JWT module commands and alias expected by existing users:

ConvertFrom-Base64UrlString
ConvertTo-Base64UrlString
Get-JwtHeader
Get-JwtPayload
New-Jwt
Test-Jwt
Verify-JwtSignature

Process-PSModule will generate the publishable module manifest from the source content and structure during the build, keeping the source repository aligned with the same pattern used by the PSModule GitHub module.

Changed: Documentation reflects the current JWT commands

The README now shows how to install and import Jwt, lists the exported commands, and includes representative usage for creating and validating an HS256 token and reading a token header and payload.

Fixed: Source validation checks the maintained command surface

Process-PSModule validation builds the current source module, checks the generated metadata and exported command surface, and runs the Jwt Pester tests against representative token behavior.

Fixed: JWT function error handling and resource management

The JWT functions now handle edge cases correctly and release cryptographic resources properly:

  • ConvertFrom-Base64UrlString: Rejects impossible base64url lengths instead of trimming malformed input.
  • ConvertTo-Base64UrlString: Invalid input type now throws a typed [System.ArgumentException] instead of an untyped string.
  • Get-JwtHeader and Get-JwtPayload: Validate JWT segment shape before indexing and report targeted malformed-token errors.
  • New-Jwt: The HS256 Secret type check is now performed before entering the try/catch block, preventing error messages from being double-wrapped. HMACSHA256 is always disposed via finally. New-Object replaced with ::new(). Verbose output reports only payload length instead of payload JSON. RS256 signing uses GetRSAPrivateKey() instead of the obsolete certificate PrivateKey accessor.
  • Test-Jwt: Replaced the deprecated SHA256Managed with the modern [System.Security.Cryptography.SHA256]::HashData() static method. HMACSHA256 is always disposed via finally. Invalid Secret type throws a typed [System.ArgumentException]. New-Object replaced with ::new(). JWT segment shape is validated before verification, unsigned alg=none tokens require an empty third segment, HS256 signatures are compared byte-by-byte instead of with plain string equality, malformed HS256 signature encodings return $false, verbose output reports only token length, and RS256 verification uses GetRSAPublicKey() instead of the obsolete public-key accessor.

Technical Details

  • src/manifest.psd1 provides the lightweight Process-PSModule source metadata overlay with JWT-related gallery tags. Generated fields such as RootModule, ModuleVersion, GUID, and explicit exports are intentionally left to Process-PSModule.
  • README.md was updated to describe the current JWT module commands and representative usage.
  • tests/Jwt.Tests.ps1 covers base64url helpers, JWT header/payload extraction, HS256 and none token behavior, malformed JWT shapes, invalid base64url length, invalid HS256 signature encodings, and verbose-output redaction.
  • All public function documentation links point to https://psmodule.io/Jwt/Functions/<FunctionName>/.
  • Implementation plan progress: Repository metadata alignment, source-layout alignment, package command-surface validation, README alignment, function quality hardening, and review-driven parsing/crypto hardening are completed in this PR. PowerShell Gallery owner confirmation, the actual publication step, and clean post-publish install validation remain release-process tasks after merge.

dependabot Bot and others added 10 commits August 27, 2025 10:19
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to
5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li>
</ul>
<h2>⚠️ Minimum Compatible Runner Version</h2>
<p><strong>v2.327.1</strong><br />
<a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<p>Make sure your runner is updated to this version or newer to use this
release.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
<li>Prepare release v4.3.0 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2237">actions/checkout#2237</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/motss"><code>@​motss</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li><a href="https://github.com/mouismail"><code>@​mouismail</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li><a href="https://github.com/benwells"><code>@​benwells</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v4.3.0">https://github.com/actions/checkout/compare/v4...v4.3.0</a></p>
<h2>v4.2.2</h2>
<h2>What's Changed</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4.2.1...v4.2.2">https://github.com/actions/checkout/compare/v4.2.1...v4.2.2</a></p>
<h2>v4.2.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Jcambass"><code>@​Jcambass</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/1919">actions/checkout#1919</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4.2.0...v4.2.1">https://github.com/actions/checkout/compare/v4.2.0...v4.2.1</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>V5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>V4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
<li>README: Suggest <code>user.email</code> to be
<code>41898282+github-actions[bot]@users.noreply.github.com</code> by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1707">actions/checkout#1707</a></li>
</ul>
<h2>v4.1.4</h2>
<ul>
<li>Disable <code>extensions.worktreeConfig</code> when disabling
<code>sparse-checkout</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1692">actions/checkout#1692</a></li>
<li>Add dependabot config by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1688">actions/checkout#1688</a></li>
<li>Bump the minor-actions-dependencies group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1693">actions/checkout#1693</a></li>
<li>Bump word-wrap from 1.2.3 to 1.2.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1643">actions/checkout#1643</a></li>
</ul>
<h2>v4.1.3</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/08c6903cd8c0fde910a37f88322edcfb5dd907a8"><code>08c6903</code></a>
Prepare v5.0.0 release (<a
href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/9f265659d3bb64ab1440b03b12f4d47a24320917"><code>9f26565</code></a>
Update actions checkout to use node 24 (<a
href="https://redirect.github.com/actions/checkout/issues/2226">#2226</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4&new-version=5)](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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Description

This pull request updates the CI/CD pipeline configuration for the
repository, focusing on simplifying workflows, improving test coverage
requirements, and updating dependencies to use newer versions and
inherited secrets. The changes remove redundant or unused workflow files
and linter configurations, and enhance the main workflow to support both
scheduled and manual runs.

**CI/CD Workflow Updates:**

* The main workflow `.github/workflows/Process-PSModule.yml` is updated
to trigger on manual dispatch and nightly schedule, in addition to pull
requests, enabling more flexible automation.
* The workflow now uses version `v5` of the reusable workflow and
inherits secrets, ensuring up-to-date processes and more secure secret
management.
* The old nightly workflow `.github/workflows/Nightly-Run.yml` is
removed, consolidating scheduled runs into the main workflow.

**Linting and Code Quality:**

* The linter workflow `.github/workflows/Linter.yml` and its
configuration file `.github/linters/.jscpd.json` are removed, indicating
a shift away from the previous linting setup.
[[1]](diffhunk://#diff-482e65806ed9e4a7320f14964764086b91fed4a28d12e4efde1776472e147e79L1-L32)
[[2]](diffhunk://#diff-557094e283c00b23265c1c75872f41c6b1a524a00f0d99dd68ebd22cb63bfdd6L1-L10)

**Test Coverage Requirements:**

* The code coverage target in `.github/PSModule.yml` is increased from
0% to 50%, raising the quality bar for tests.
This pull request makes several documentation improvements across
multiple PowerShell module scripts and updates linter configuration
files to adjust validation and markdown linting behaviors. The main
focus is on enhancing the clarity of function documentation and refining
linting settings for the repository.

Documentation improvements:

* Added a `.DESCRIPTION` section to the comment-based help in the
following PowerShell scripts to provide clearer documentation for each
function: `Get-InternalPSModule.ps1`, `Set-InternalPSModule.ps1`,
`Get-PSModuleTest.ps1`, `New-PSModuleTest.ps1`, `Set-PSModuleTest.ps1`,
and `Test-PSModuleTest.ps1`.
[[1]](diffhunk://#diff-d533085d002d932aa51be6a99b640827346d88c08512a00983af0c8dc7f529baR6-R8)
[[2]](diffhunk://#diff-d2465a6a821aebd39e6995132c462e41544ade7a93266e7d7eace6674ce350deR6-R8)
[[3]](diffhunk://#diff-a3b9ee16763d01dd80ff3c1869dec21710bc923448c25dde66d51401e7b885e7R8-R10)
[[4]](diffhunk://#diff-90b55db370b273157a3df0db4b895fca9740d25094d604894640fb0c5b220d9cR8-R10)
[[5]](diffhunk://#diff-488943d39ce767faa7f4dd40414635ec01da86c30b9ddd2074150da994093b9aR6-R8)
[[6]](diffhunk://#diff-097c3999f7001a5d9698d995993cb0a8b5c2f66962d37151d32ad40d4b6c08eeR6-R8)

Linter configuration updates:

* Updated `.github/PSModule.yml` to disable several linter validations
in the `Linter` section, including Biome format/lint, GitHub Actions
Zizmor, JSCPD, and Prettier checks for JSON, Markdown, and YAML.
* Modified `.github/linters/.markdown-lint.yml` to disable the `MD024`
rule (no duplicate headings), set a custom punctuation list for `MD026`,
and made minor formatting adjustments.
The CI workflow reference is now pinned to a specific commit SHA,
consistent with all other `uses:` references in the PSModule
infrastructure. Dependabot will automatically propose updates when new
versions of Process-PSModule are released.

## Changed: Workflow reference pinned to immutable SHA

The `Process-PSModule` reusable workflow reference in
`.github/workflows/Process-PSModule.yml` was using a mutable major
version tag (`@v5`). It is now pinned to the exact commit SHA with the
patch-level version in a trailing comment:

```yaml
# Before
uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v5

# After
uses: PSModule/Process-PSModule@4343d76 # v5.4.5
```

Dependabot's `github-actions` ecosystem is already configured and will
keep this reference up to date automatically.
## Context

The reusable workflow
[Process-PSModule](https://github.com/PSModule/Process-PSModule) has
released
[v5.4.6](https://github.com/PSModule/Process-PSModule/releases/tag/v5.4.6),
which adds `pull-requests: write` permission to the `Lint-Repository`
job, allowing super-linter to post PR comment summaries.

## Changes

- Updated `Process-PSModule.yml` workflow reference from pinned SHA
(v5.4.5) to `205d193f34cbbaf9992955c21d842bcf98a1859f # v5.4.6`
## Context

The [super-linter](https://github.com/super-linter/super-linter)
`SPELL_CODESPELL` check flags intentional misspellings in
`.github/linters/.textlintrc` (e.g. `environemnt`, `pacakge`). These
strings exist as linter configuration patterns and are not actual typos.

The [GitHub](https://github.com/PSModule/GitHub),
[GoogleFonts](https://github.com/PSModule/GoogleFonts), and
[NerdFonts](https://github.com/PSModule/NerdFonts) repos already solved
this by adding a `.codespellrc` file.

## Changes

- Added `.github/linters/.codespellrc` that tells codespell to skip the
`.github/linters` directory and ignore the word `afterall`
…4.6 to 5.5.0 (#10)

Bumps
[PSModule/Process-PSModule/.github/workflows/workflow.yml](https://github.com/psmodule/process-psmodule)
from 5.4.6 to 5.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psmodule/process-psmodule/releases">PSModule/Process-PSModule/.github/workflows/workflow.yml's
releases</a>.</em></p>
<blockquote>
<h2>v5.5.0</h2>
<h1>🚀 [Feature]: Release-triggering file patterns now configurable via
workflow input (<a
href="https://redirect.github.com/psmodule/process-psmodule/issues/301">#301</a>)</h1>
<p>Repositories can now control which file changes trigger build, test,
and publish stages by configuring the <code>ImportantFilePatterns</code>
workflow input or settings file property. The default patterns
(<code>^src/</code> and <code>^README\.md$</code>) remain unchanged for
backward compatibility.</p>
<ul>
<li>Fixes <a
href="https://redirect.github.com/psmodule/process-psmodule/issues/278">#278</a></li>
</ul>
<h2>New: Configurable release-triggering file patterns</h2>
<p>The <code>ImportantFilePatterns</code> input is now available on the
<code>workflow.yml</code> and <code>Get-Settings.yml</code> reusable
workflows. Pass a newline-separated list of regex patterns to override
the defaults:</p>
<pre lang="yaml"><code>jobs:
  Process:
    uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v5
    with:
      ImportantFilePatterns: |
        ^src/
        ^README\.md$
        ^examples/
</code></pre>
<p>To disable file-change triggering entirely, pass an empty string via
the workflow input or set an empty list in
<code>.github/PSModule.yml</code>:</p>
<pre lang="yaml"><code># In .github/PSModule.yml
ImportantFilePatterns: []
</code></pre>
<p>Resolution order: settings file → workflow input → workflow input
default values.</p>
<h2>Changed: PR comment reflects configured patterns</h2>
<p>The automated comment posted on PRs when no important files are
changed now dynamically lists the configured patterns instead of a
hardcoded table.</p>
<h2>Technical Details</h2>
<ul>
<li>Added <code>ImportantFilePatterns</code> input (type:
<code>string</code>, newline-separated) to both
<code>.github/workflows/workflow.yml</code> and
<code>.github/workflows/Get-Settings.yml</code> with explicit defaults
(<code>^src/</code> and <code>^README\.md$</code>).</li>
<li>Bumped <code>Get-PSModuleSettings</code> action reference from
<code>v1.4.4</code> to <code>v1.5.0</code> which implements the settings
file and action input support for this feature.</li>
<li>Passed <code>ImportantFilePatterns</code> input through the reusable
workflow chain to the <code>Get-PSModuleSettings</code> action
step.</li>
<li>Updated README documentation: new input in the workflow inputs
table, new &quot;Customizing important file patterns&quot; section with
YAML examples, updated settings file reference and example schema.</li>
</ul>
<h2>v5.4.7</h2>
<h1>🩹 [Patch]: Framework-generated code coverage no longer penalizes
module authors (<a
href="https://redirect.github.com/psmodule/process-psmodule/issues/310">#310</a>)</h1>
<p>Framework-generated boilerplate — type accelerator registration and
<code>OnRemove</code> cleanup — is now tested and covered by updated
action versions referenced in this workflow. The obsolete
<code>$IsWindows</code> PS 5.1 shim is no longer injected into built
modules. Coverage from the framework test step and the module test step
is already aggregated by Get-CodeCoverage, so module authors' coverage
percentages now reflect only the code they wrote.</p>
<ul>
<li>Fixes <a
href="https://redirect.github.com/psmodule/process-psmodule/issues/309">#309</a></li>
</ul>
<h2>Changed: Build-PSModule updated to v4.0.14</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/PSModule/Process-PSModule/commit/11117919e65242d3388727819a751f74ad24ea9e"><code>1111791</code></a>
🚀 [Feature]: Release-triggering file patterns now configurable via
workflow i...</li>
<li><a
href="https://github.com/PSModule/Process-PSModule/commit/3ed96da6f3c2f95b7cd770761f5f2f348020680b"><code>3ed96da</code></a>
🩹 [Patch]: Framework-generated code coverage no longer penalizes module
autho...</li>
<li>See full diff in <a
href="https://github.com/psmodule/process-psmodule/compare/205d193f34cbbaf9992955c21d842bcf98a1859f...11117919e65242d3388727819a751f74ad24ea9e">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=PSModule/Process-PSModule/.github/workflows/workflow.yml&package-manager=github_actions&previous-version=5.4.6&new-version=5.5.0)](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 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)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The module repository no longer contains placeholder template code from
the PSModule framework scaffolding. Only the `New-Jwt` placeholder
function remains, signaling that the module is ready for actual JWT
implementation work.

- Fixes #11

## Changed: Repository content

All template/demo artifacts are removed — classes (`Book`,
`SecretWriter`), functions (`Get-PSModuleTest`, `New-PSModuleTest`,
`Set-PSModuleTest`, `Test-PSModuleTest`), variables (`Planets`, `Moons`,
`SolarSystems`), data files, format definitions, type extensions, init
scripts, nested modules, script loaders, examples, and the manifest
override file.

What remains in `src/`:

```
src/
  functions/
    public/
      New-Jwt.ps1
```

The `New-Jwt` function emits a warning that it is not yet implemented.
This gives CI a valid function to build and test against while
development proceeds in #3.

## Changed: Test file

The test file is renamed from `PSModuleTest.Tests.ps1` to
`Jwt.Tests.ps1` with a single test verifying the placeholder warning
output.

## Changed: README

Rewritten to describe the Jwt module — name, purpose, installation, and
current development status.

## Technical Details

- Removed 32 files totaling ~660 lines of template code
- Code coverage target in `.github/PSModule.yml` lowered from 50% to 0%
— the placeholder function has no meaningful logic to cover
- The `manifest.psd1` is removed because it is optional in the PSModule
framework (only needed to override generated values); will be recreated
in #3 when module metadata is defined
- This PR completes the "Skeleton cleanup" section of the implementation
plan in #3
@MariusStorhaug Marius Storhaug (MariusStorhaug) added the Patch Small fixes or improvements label May 9, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Fail ❌
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Fail ❌
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Fail ❌
YAML Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

GITLEAKS
Finding:     ...le:> Get-JwtHeader '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     4.822711
File:        /github/workspace/src/JWT.psm1
Line:        113
Fingerprint: /github/workspace/src/JWT.psm1:jwt:113

Finding:     ...SE: Processing JWT: �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.930237
File:        /github/workspace/src/JWT.psm1
Line:        155
Fingerprint: /github/workspace/src/JWT.psm1:jwt:155

Finding:     �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.930237
File:        /github/workspace/src/JWT.psm1
Line:        207
Fingerprint: /github/workspace/src/JWT.psm1:jwt:207

Finding:     ...OSE: Verifying JWT: �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.702694
File:        /github/workspace/src/JWT.psm1
Line:        337
Fingerprint: /github/workspace/src/JWT.psm1:jwt:337

Finding:     ExtractionToken = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.071013
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        9
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:9

Finding:     ExtractionToken = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.418843
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        20
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:20

Finding:     ExpectedToken   = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.418843
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        21
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:21�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~298 bytes (298 bytes) in 6.55ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~584 bytes (584 bytes) in 6.94ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~303 bytes (303 bytes) in 1.59ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~1932 bytes (1.93 KB) in 4.95ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~1065 bytes (1.07 KB) in 16.5ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~669 bytes (669 bytes) in 2.94ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~507 bytes (507 bytes) in 7.67ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~2027 bytes (2.03 KB) in 14.8ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~0 bytes (0) in 5.79ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~66 bytes (66 bytes) in 7.3ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~1164 bytes (1.16 KB) in 14.8ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~14249 bytes (14.25 KB) in 131ms�[0m
�[90m6:40PM�[0m �[33mWRN�[0m �[1mleaks found: 4�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~1541 bytes (1.54 KB) in 30ms�[0m
�[90m6:40PM�[0m �[33mWRN�[0m �[1mleaks found: 3�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~686 bytes (686 bytes) in 9.74ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~4799 bytes (4.80 KB) in 18ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~2164 bytes (2.16 KB) in 6.99ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~13732 bytes (13.73 KB) in 34.4ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~2246 bytes (2.25 KB) in 11.8ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mscanned ~441 bytes (441 bytes) in 1.89ms�[0m
�[90m6:40PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
POWERSHELL

�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      JWT.psm1   45    Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   155   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   192   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   195   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   207   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   251   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   255   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   278   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   279   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   337   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   338   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   361   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   374   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   375   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSUseOutputTypeCorrectly            Information  JWT.psm1   45    The cmdlet 'C
                                                                  onvertFrom-Ba
                                                                  se64UrlString
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Byt
                                                                  e[]' but this
                                                                   type is not
                                                                  declared in t
                                                                  he OutputType
                                                                   attribute.
PSUseOutputTypeCorrectly            Information  JWT.psm1   394   The cmdlet 'T
                                                                  est-Jwt' retu
                                                                  rns an object
                                                                   of type 'Sys
                                                                  tem.Boolean'
                                                                  but this type
                                                                   is not decla
                                                                  red in the Ou
                                                                  tputType attr
                                                                  ibute.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   34    Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   82    Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   125   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   167   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   244   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   352   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseShouldProcessForStateChangingF Warning      JWT.psm1   177   Function 'New
unctions                                                          -Jwt' has ver
                                                                  b that could
                                                                  change system
                                                                   state. There
                                                                  fore, the fun
                                                                  ction has to
                                                                  support 'Shou
                                                                  ldProcess'.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      TestCases. 20    Line exceeds
                                                 ps1              the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      TestCases. 21    Line exceeds
                                                 ps1              the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
TRIVY

Report Summary

┌──────────────┬──────┬─────────────────┬───────────────────┬─────────┐
│    Target    │ Type │ Vulnerabilities │ Misconfigurations │ Secrets │
├──────────────┼──────┼─────────────────┼───────────────────┼─────────┤
│ src/JWT.psm1 │ text │        -        │         -         │    4    │
└──────────────┴──────┴─────────────────┴───────────────────┴─────────┘
Legend:
- '-': Not scanned
- '0': Clean (no security findings detected)


src/JWT.psm1 (secrets)
======================
Total: 4 (UNKNOWN: 0, LOW: 0, MEDIUM: 4, HIGH: 0, CRITICAL: 0)

MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:113 (offset: 2895 bytes)
────────────────────────────────────────
 111   .EXAMPLE
 112
 113 [ PS Variable:> Get-JwtHeader '***************************************************************************'
 114   {"alg":"none","typ":"JWT"}
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:155 (offset: 3783 bytes)
────────────────────────────────────────
 153
 154   PS Variable:> $jwt | Get-JwtPayload -Verbose
 155 [ VERBOSE: Processing JWT: **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 156   {"token1":"value1","token2":"value2"}
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:207 (offset: 5590 bytes)
────────────────────────────────────────
 205
 206   PS Variable:\> New-Jwt -Cert $cert -PayloadJson '{"token1":"value1","token2":"value2"}'
 207 [ **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 208
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:337 (offset: 10997 bytes)
────────────────────────────────────────
 335
 336   PS Variable:> $jwt | Test-Jwt -cert $cert -Verbose
 337 [ VERBOSE: Verifying JWT: *****************************************************************************************************************************************************************************************
 338   Ch15j9AzabQB4vuvSXSWV3MQO7v4Ysm7_sGJQjrmpiwRoufFePcurc94anLNk0GNkTWwG59wY4rHaaHnMXx192KnJojwMR8mK-0_
────────────────────────────────────────


@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Fail ❌
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Fail ❌
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Fail ❌
YAML Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

GITLEAKS
Finding:     ...le:> Get-JwtHeader '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     4.822711
File:        /github/workspace/src/JWT.psm1
Line:        113
Fingerprint: /github/workspace/src/JWT.psm1:jwt:113

Finding:     ...SE: Processing JWT: �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.930237
File:        /github/workspace/src/JWT.psm1
Line:        155
Fingerprint: /github/workspace/src/JWT.psm1:jwt:155

Finding:     �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.930237
File:        /github/workspace/src/JWT.psm1
Line:        207
Fingerprint: /github/workspace/src/JWT.psm1:jwt:207

Finding:     ...OSE: Verifying JWT: �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.702694
File:        /github/workspace/src/JWT.psm1
Line:        337
Fingerprint: /github/workspace/src/JWT.psm1:jwt:337

Finding:     ExtractionToken = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.071013
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        9
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:9

Finding:     ExtractionToken = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.418843
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        20
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:20

Finding:     ExpectedToken   = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.418843
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        21
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:21�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~298 bytes (298 bytes) in 2.93ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~584 bytes (584 bytes) in 7.33ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~303 bytes (303 bytes) in 11ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~1932 bytes (1.93 KB) in 8.73ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~1065 bytes (1.07 KB) in 14.8ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~669 bytes (669 bytes) in 3.35ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~507 bytes (507 bytes) in 4.36ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~2027 bytes (2.03 KB) in 9.54ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~0 bytes (0) in 2.83ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~66 bytes (66 bytes) in 1.2ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~14249 bytes (14.25 KB) in 107ms�[0m
�[90m6:46PM�[0m �[33mWRN�[0m �[1mleaks found: 4�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~204 bytes (204 bytes) in 4.22ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~1541 bytes (1.54 KB) in 33.3ms�[0m
�[90m6:46PM�[0m �[33mWRN�[0m �[1mleaks found: 3�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~686 bytes (686 bytes) in 9.68ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~4738 bytes (4.74 KB) in 15.4ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~2164 bytes (2.16 KB) in 3.21ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~13732 bytes (13.73 KB) in 22.5ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~2246 bytes (2.25 KB) in 8.46ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mscanned ~441 bytes (441 bytes) in 1.15ms�[0m
�[90m6:46PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
POWERSHELL

�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      JWT.psm1   45    Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   155   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   192   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   195   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   207   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   251   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   255   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   278   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   279   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   337   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   338   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   361   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   374   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   375   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSUseOutputTypeCorrectly            Information  JWT.psm1   45    The cmdlet 'C
                                                                  onvertFrom-Ba
                                                                  se64UrlString
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Byt
                                                                  e[]' but this
                                                                   type is not
                                                                  declared in t
                                                                  he OutputType
                                                                   attribute.
PSUseOutputTypeCorrectly            Information  JWT.psm1   394   The cmdlet 'T
                                                                  est-Jwt' retu
                                                                  rns an object
                                                                   of type 'Sys
                                                                  tem.Boolean'
                                                                  but this type
                                                                   is not decla
                                                                  red in the Ou
                                                                  tputType attr
                                                                  ibute.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   34    Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   82    Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   125   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   167   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   244   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   352   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseShouldProcessForStateChangingF Warning      JWT.psm1   177   Function 'New
unctions                                                          -Jwt' has ver
                                                                  b that could
                                                                  change system
                                                                   state. There
                                                                  fore, the fun
                                                                  ction has to
                                                                  support 'Shou
                                                                  ldProcess'.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      TestCases. 20    Line exceeds
                                                 ps1              the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      TestCases. 21    Line exceeds
                                                 ps1              the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
TRIVY

Report Summary

┌──────────────┬──────┬─────────────────┬───────────────────┬─────────┐
│    Target    │ Type │ Vulnerabilities │ Misconfigurations │ Secrets │
├──────────────┼──────┼─────────────────┼───────────────────┼─────────┤
│ src/JWT.psm1 │ text │        -        │         -         │    4    │
└──────────────┴──────┴─────────────────┴───────────────────┴─────────┘
Legend:
- '-': Not scanned
- '0': Clean (no security findings detected)


src/JWT.psm1 (secrets)
======================
Total: 4 (UNKNOWN: 0, LOW: 0, MEDIUM: 4, HIGH: 0, CRITICAL: 0)

MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:113 (offset: 2895 bytes)
────────────────────────────────────────
 111   .EXAMPLE
 112
 113 [ PS Variable:> Get-JwtHeader '***************************************************************************'
 114   {"alg":"none","typ":"JWT"}
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:155 (offset: 3783 bytes)
────────────────────────────────────────
 153
 154   PS Variable:> $jwt | Get-JwtPayload -Verbose
 155 [ VERBOSE: Processing JWT: **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 156   {"token1":"value1","token2":"value2"}
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:207 (offset: 5590 bytes)
────────────────────────────────────────
 205
 206   PS Variable:\> New-Jwt -Cert $cert -PayloadJson '{"token1":"value1","token2":"value2"}'
 207 [ **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 208
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:337 (offset: 10997 bytes)
────────────────────────────────────────
 335
 336   PS Variable:> $jwt | Test-Jwt -cert $cert -Verbose
 337 [ VERBOSE: Verifying JWT: *****************************************************************************************************************************************************************************************
 338   Ch15j9AzabQB4vuvSXSWV3MQO7v4Ysm7_sGJQjrmpiwRoufFePcurc94anLNk0GNkTWwG59wY4rHaaHnMXx192KnJojwMR8mK-0_
────────────────────────────────────────


@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Fail ❌
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Fail ❌
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Fail ❌
YAML Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

GITLEAKS
Finding:     ...le:> Get-JwtHeader '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     4.822711
File:        /github/workspace/src/JWT.psm1
Line:        113
Fingerprint: /github/workspace/src/JWT.psm1:jwt:113

Finding:     ...SE: Processing JWT: �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.930237
File:        /github/workspace/src/JWT.psm1
Line:        155
Fingerprint: /github/workspace/src/JWT.psm1:jwt:155

Finding:     �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.930237
File:        /github/workspace/src/JWT.psm1
Line:        207
Fingerprint: /github/workspace/src/JWT.psm1:jwt:207

Finding:     ...OSE: Verifying JWT: �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.702694
File:        /github/workspace/src/JWT.psm1
Line:        337
Fingerprint: /github/workspace/src/JWT.psm1:jwt:337

Finding:     ExtractionToken = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.071013
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        9
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:9

Finding:     ExtractionToken = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.418843
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        20
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:20

Finding:     ExpectedToken   = '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.418843
File:        /github/workspace/tests/Data/TestCases.ps1
Line:        21
Fingerprint: /github/workspace/tests/Data/TestCases.ps1:jwt:21�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~298 bytes (298 bytes) in 7.6ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~584 bytes (584 bytes) in 5.72ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~303 bytes (303 bytes) in 4.26ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~1932 bytes (1.93 KB) in 16.4ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~1065 bytes (1.07 KB) in 6.04ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~669 bytes (669 bytes) in 1.69ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~507 bytes (507 bytes) in 10.4ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~2027 bytes (2.03 KB) in 6.79ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~0 bytes (0) in 1.17ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~66 bytes (66 bytes) in 1.4ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~14249 bytes (14.25 KB) in 92.3ms�[0m
�[90m6:50PM�[0m �[33mWRN�[0m �[1mleaks found: 4�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~1541 bytes (1.54 KB) in 30.7ms�[0m
�[90m6:50PM�[0m �[33mWRN�[0m �[1mleaks found: 3�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~3280 bytes (3.28 KB) in 24.2ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~686 bytes (686 bytes) in 1.7ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~2164 bytes (2.16 KB) in 4.67ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~13732 bytes (13.73 KB) in 45ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~2246 bytes (2.25 KB) in 9.64ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mscanned ~441 bytes (441 bytes) in 1.74ms�[0m
�[90m6:50PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
POWERSHELL

�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      JWT.psm1   45    Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   155   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   192   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   195   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   207   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   251   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   255   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   278   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   279   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   337   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   338   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   361   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   374   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   375   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   34    Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   82    Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   125   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   167   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   244   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   352   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseShouldProcessForStateChangingF Warning      JWT.psm1   177   Function 'New
unctions                                                          -Jwt' has ver
                                                                  b that could
                                                                  change system
                                                                   state. There
                                                                  fore, the fun
                                                                  ction has to
                                                                  support 'Shou
                                                                  ldProcess'.
PSUseOutputTypeCorrectly            Information  JWT.psm1   45    The cmdlet 'C
                                                                  onvertFrom-Ba
                                                                  se64UrlString
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Byt
                                                                  e[]' but this
                                                                   type is not
                                                                  declared in t
                                                                  he OutputType
                                                                   attribute.
PSUseOutputTypeCorrectly            Information  JWT.psm1   394   The cmdlet 'T
                                                                  est-Jwt' retu
                                                                  rns an object
                                                                   of type 'Sys
                                                                  tem.Boolean'
                                                                  but this type
                                                                   is not decla
                                                                  red in the Ou
                                                                  tputType attr
                                                                  ibute.


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      TestCases. 20    Line exceeds
                                                 ps1              the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      TestCases. 21    Line exceeds
                                                 ps1              the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
TRIVY

Report Summary

┌──────────────┬──────┬─────────────────┬───────────────────┬─────────┐
│    Target    │ Type │ Vulnerabilities │ Misconfigurations │ Secrets │
├──────────────┼──────┼─────────────────┼───────────────────┼─────────┤
│ src/JWT.psm1 │ text │        -        │         -         │    4    │
└──────────────┴──────┴─────────────────┴───────────────────┴─────────┘
Legend:
- '-': Not scanned
- '0': Clean (no security findings detected)


src/JWT.psm1 (secrets)
======================
Total: 4 (UNKNOWN: 0, LOW: 0, MEDIUM: 4, HIGH: 0, CRITICAL: 0)

MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:113 (offset: 2895 bytes)
────────────────────────────────────────
 111   .EXAMPLE
 112
 113 [ PS Variable:> Get-JwtHeader '***************************************************************************'
 114   {"alg":"none","typ":"JWT"}
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:155 (offset: 3783 bytes)
────────────────────────────────────────
 153
 154   PS Variable:> $jwt | Get-JwtPayload -Verbose
 155 [ VERBOSE: Processing JWT: **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 156   {"token1":"value1","token2":"value2"}
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:207 (offset: 5590 bytes)
────────────────────────────────────────
 205
 206   PS Variable:\> New-Jwt -Cert $cert -PayloadJson '{"token1":"value1","token2":"value2"}'
 207 [ **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 208
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:337 (offset: 10997 bytes)
────────────────────────────────────────
 335
 336   PS Variable:> $jwt | Test-Jwt -cert $cert -Verbose
 337 [ VERBOSE: Verifying JWT: *****************************************************************************************************************************************************************************************
 338   Ch15j9AzabQB4vuvSXSWV3MQO7v4Ysm7_sGJQjrmpiwRoufFePcurc94anLNk0GNkTWwG59wY4rHaaHnMXx192KnJojwMR8mK-0_
────────────────────────────────────────


@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Fail ❌
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Fail ❌
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Fail ❌
YAML Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

GITLEAKS
Finding:     ...le:> Get-JwtHeader '�[1;3;mREDACTED�[0m'
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     4.822711
File:        /github/workspace/src/JWT.psm1
Line:        113
Fingerprint: /github/workspace/src/JWT.psm1:jwt:113

Finding:     ...SE: Processing JWT: �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.930237
File:        /github/workspace/src/JWT.psm1
Line:        155
Fingerprint: /github/workspace/src/JWT.psm1:jwt:155

Finding:     �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.930237
File:        /github/workspace/src/JWT.psm1
Line:        207
Fingerprint: /github/workspace/src/JWT.psm1:jwt:207

Finding:     ...OSE: Verifying JWT: �[1;3;mREDACTED�[0m
Secret:      �[1;3;mREDACTED�[0m
RuleID:      jwt
Entropy:     5.702694
File:        /github/workspace/src/JWT.psm1
Line:        337
Fingerprint: /github/workspace/src/JWT.psm1:jwt:337�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~298 bytes (298 bytes) in 7.9ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~584 bytes (584 bytes) in 7.02ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~303 bytes (303 bytes) in 1.46ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~1932 bytes (1.93 KB) in 3.36ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~1065 bytes (1.07 KB) in 5.21ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~669 bytes (669 bytes) in 7.68ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~507 bytes (507 bytes) in 2.96ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~2027 bytes (2.03 KB) in 4.92ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~0 bytes (0) in 937µs�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~66 bytes (66 bytes) in 10.5ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~14249 bytes (14.25 KB) in 120ms�[0m
�[90m7:09PM�[0m �[33mWRN�[0m �[1mleaks found: 4�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~1730 bytes (1.73 KB) in 8.82ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~3278 bytes (3.28 KB) in 25.3ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~686 bytes (686 bytes) in 6.57ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~2164 bytes (2.16 KB) in 5.02ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~13732 bytes (13.73 KB) in 40.6ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~2246 bytes (2.25 KB) in 4.42ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mscanned ~441 bytes (441 bytes) in 5.2ms�[0m
�[90m7:09PM�[0m �[32mINF�[0m �[1mno leaks found�[0m
POWERSHELL

�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      JWT.psm1   45    Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   155   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   192   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   195   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   207   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   251   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   255   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   278   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   279   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   337   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   338   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   361   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   374   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSAvoidLongLines                    Warning      JWT.psm1   375   Line exceeds
                                                                  the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters
PSUseOutputTypeCorrectly            Information  JWT.psm1   45    The cmdlet 'C
                                                                  onvertFrom-Ba
                                                                  se64UrlString
                                                                  ' returns an
                                                                  object of typ
                                                                  e 'System.Byt
                                                                  e[]' but this
                                                                   type is not
                                                                  declared in t
                                                                  he OutputType
                                                                   attribute.
PSUseOutputTypeCorrectly            Information  JWT.psm1   394   The cmdlet 'T
                                                                  est-Jwt' retu
                                                                  rns an object
                                                                   of type 'Sys
                                                                  tem.Boolean'
                                                                  but this type
                                                                   is not decla
                                                                  red in the Ou
                                                                  tputType attr
                                                                  ibute.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   34    Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   82    Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   125   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   167   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   244   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseProcessBlockForPipelineCommand Warning      JWT.psm1   352   Command accep
                                                                  ts pipeline i
                                                                  nput but has
                                                                  not defined a
                                                                   process bloc
                                                                  k.
PSUseShouldProcessForStateChangingF Warning      JWT.psm1   177   Function 'New
unctions                                                          -Jwt' has ver
                                                                  b that could
                                                                  change system
                                                                   state. There
                                                                  fore, the fun
                                                                  ction has to
                                                                  support 'Shou
                                                                  ldProcess'.
TRIVY

Report Summary

┌──────────────┬──────┬─────────────────┬───────────────────┬─────────┐
│    Target    │ Type │ Vulnerabilities │ Misconfigurations │ Secrets │
├──────────────┼──────┼─────────────────┼───────────────────┼─────────┤
│ src/JWT.psm1 │ text │        -        │         -         │    4    │
└──────────────┴──────┴─────────────────┴───────────────────┴─────────┘
Legend:
- '-': Not scanned
- '0': Clean (no security findings detected)


src/JWT.psm1 (secrets)
======================
Total: 4 (UNKNOWN: 0, LOW: 0, MEDIUM: 4, HIGH: 0, CRITICAL: 0)

MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:113 (offset: 2895 bytes)
────────────────────────────────────────
 111   .EXAMPLE
 112
 113 [ PS Variable:> Get-JwtHeader '***************************************************************************'
 114   {"alg":"none","typ":"JWT"}
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:155 (offset: 3783 bytes)
────────────────────────────────────────
 153
 154   PS Variable:> $jwt | Get-JwtPayload -Verbose
 155 [ VERBOSE: Processing JWT: **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 156   {"token1":"value1","token2":"value2"}
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:207 (offset: 5590 bytes)
────────────────────────────────────────
 205
 206   PS Variable:\> New-Jwt -Cert $cert -PayloadJson '{"token1":"value1","token2":"value2"}'
 207 [ **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 208
────────────────────────────────────────


MEDIUM: JWT (jwt-token)
════════════════════════════════════════
JWT token
────────────────────────────────────────
 src/JWT.psm1:337 (offset: 10997 bytes)
────────────────────────────────────────
 335
 336   PS Variable:> $jwt | Test-Jwt -cert $cert -Verbose
 337 [ VERBOSE: Verifying JWT: *****************************************************************************************************************************************************************************************
 338   Ch15j9AzabQB4vuvSXSWV3MQO7v4Ysm7_sGJQjrmpiwRoufFePcurc94anLNk0GNkTWwG59wY4rHaaHnMXx192KnJojwMR8mK-0_
────────────────────────────────────────


@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

…data

Without a repo-level .github/linters/trivy.yaml, Super-Linter falls back
to its built-in /action/lib/.automation/trivy.yaml which has exit-code:1
enabled. JWT test token strings in tests/Data/TestCases.ps1 are flagged
by Trivy's secret scanner, causing the lint step to fail with no source-
level change needed. Restore the config to override the default: our
scanners list matches the default but without exit-code:1, so real build
artifacts continue to be skipped and false positives from test data do
not block CI.
Copilot AI review requested due to automatic review settings May 10, 2026 20:34
@github-actions
Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

Copy link
Copy Markdown

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

Copilot reviewed 44 out of 45 changed files in this pull request and generated 4 comments.

Comment thread src/functions/public/Test-Jwt.ps1
Comment thread src/functions/public/Test-Jwt.ps1 Outdated
Comment thread src/functions/public/New-Jwt.ps1 Outdated
Comment thread .github/linters/trivy.yaml
…n data, RS256 empty-sig guard

- Test-Jwt RS256: return false for empty third segment instead of binding exception
- Test-Jwt: throw typed FormatException for non-JSON header (no header content in message)
- New-Jwt: throw typed FormatException for non-JSON header and payload (no content in messages)
- Update test assertion wildcard to match new payload error message text
@github-actions
Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Fail ❌
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

POWERSHELL

�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      Jwt.Tests. 85    Line exceeds
                                                 ps1              the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters

Copilot AI review requested due to automatic review settings May 10, 2026 23:01
@github-actions
Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

Copy link
Copy Markdown

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

Copilot reviewed 44 out of 45 changed files in this pull request and generated 3 comments.

Comment thread src/functions/public/Test-Jwt.ps1 Outdated
Comment thread .github/workflows/Process-PSModule.yml
Comment thread src/functions/public/New-Jwt.ps1 Outdated
…m exceptions, add src/manifest.psd1

- Test-Jwt RS256: catch FormatException from ConvertFrom-Base64UrlString \[2] and return \False
- Test-Jwt + New-Jwt: replace untyped string throws with ArgumentException/NotSupportedException
  for missing -Cert, missing -Secret, no-RSA-key, and unsupported-algorithm cases
- Add src/manifest.psd1 with JWT gallery tags (JWT, JSON, Token, Authentication, Security, PSModule)
- Update test assertion wildcard for HS256-requires-Secret message to match new wording
@github-actions
Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

Copy link
Copy Markdown

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

Copilot reviewed 44 out of 45 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/Process-PSModule.yml
Comment thread src/functions/public/New-Jwt.ps1
Comment thread src/functions/public/Test-Jwt.ps1
Copy link
Copy Markdown

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

Copilot reviewed 44 out of 45 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/Process-PSModule.yml
Comment thread src/functions/public/Test-Jwt.ps1 Outdated
Comment thread src/functions/public/New-Jwt.ps1 Outdated
…d tests

- New-Jwt/Test-Jwt: throw FormatException when header JSON parses successfully
  but contains no alg claim, giving a targeted error instead of a misleading
  NotSupportedException (threads r3215702514 / r3215702516)
- New-Jwt/Test-Jwt: add paramName 'Secret' to the HS256 Secret-type
  ArgumentException so callers can consistently identify the failing parameter
  (threads r3220268341 / r3220268308)
- tests: add coverage for missing alg in New-Jwt and Test-Jwt
@github-actions
Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Fail ❌
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

POWERSHELL

�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      New-Jwt.ps 128   Line exceeds
                                                 1                the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters


�[32;1mRuleName                           �[0m�[32;1m Severity    �[0m�[32;1m ScriptName�[0m�[32;1m Line �[0m�[32;1m Message�[0m
�[32;1m--------                           �[0m �[32;1m--------    �[0m �[32;1m----------�[0m �[32;1m---- �[0m �[32;1m-------�[0m
PSAvoidLongLines                    Warning      Test-Jwt.p 121   Line exceeds
                                                 s1               the configure
                                                                  d maximum len
                                                                  gth of 150 ch
                                                                  aracters

Copy link
Copy Markdown

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

Copilot reviewed 44 out of 45 changed files in this pull request and generated no new comments.

@MariusStorhaug Marius Storhaug (MariusStorhaug) merged commit 383e134 into main May 11, 2026
32 of 41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Patch Small fixes or improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Harden existing Jwt parsing and crypto edge cases found during PR review Publish the original Jwt module as-is under PSModule maintenance

2 participants