Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
fc725c4
Add support for EV, OV Wildcard, and DV Wildcard multi-name certifica…
bhillkeyfactor Sep 9, 2026
916c16b
Update generated docs
Sep 9, 2026
9c3b824
Add FlowLogger and expand error/warning/info logging
bhillkeyfactor Sep 9, 2026
2488f35
Update keyfactor-bootstrap-workflow-v3.yml
bhillkeyfactor Aug 28, 2026
bb6b658
Fix KeyNotFoundException when Addtl Sans Comma Separated DVC Emails i…
bhillkeyfactor Aug 28, 2026
b9d0bdd
Fix KeyNotFoundException in GetSubjectAlternativeNames when sans has …
bhillkeyfactor Aug 28, 2026
35e488e
docs: auto-generate README and documentation [skip ci]
github-actions[bot] Sep 9, 2026
cba26dc
Throw on non-BadRequest HTTP failures in CscGlobalClient
bhillkeyfactor Sep 9, 2026
36e2c5a
Harden CA plugin against null/short/missing inputs
bhillkeyfactor Sep 9, 2026
5e547d3
Merge branch 'feature/ev-ov-dv-multiname-certs' of https://github.com…
bhillkeyfactor Sep 9, 2026
fa1b23e
Sync all cert request statuses back to Command, not just issued/revoked
bhillkeyfactor Sep 14, 2026
11e2747
Revert "Sync all cert request statuses back to Command, not just issu…
bhillkeyfactor Sep 15, 2026
41a2e22
Map CSC Global's current product names back to plugin ProductIDs duri…
bhillkeyfactor Sep 15, 2026
3d4f832
Rename all CSC certificate products to match CSC's current naming
bhillkeyfactor Sep 15, 2026
08681db
docs: auto-generate README and documentation [skip ci]
github-actions[bot] Sep 15, 2026
f331978
Always sync certificate template mapping, remove TemplateSync setting
bhillkeyfactor Sep 15, 2026
ebd35fe
Merge branch 'feature/ev-ov-dv-multiname-certs' of https://github.com…
bhillkeyfactor Sep 15, 2026
10f090f
docs: auto-generate README and documentation [skip ci]
github-actions[bot] Sep 15, 2026
fd22d7e
Log the resolved ProductID when queueing a synced certificate
bhillkeyfactor Sep 15, 2026
34d0542
Leave ProductID null when CSC returns no certificateType during sync
bhillkeyfactor Sep 15, 2026
71bf634
Add xUnit test suite (158 tests, ~96% line coverage)
bhillkeyfactor Sep 15, 2026
77c888c
Add .NET 10 as a supported target framework
bhillkeyfactor Sep 16, 2026
632b869
docs: auto-generate README and documentation [skip ci]
github-actions[bot] Sep 16, 2026
ee437a5
Accept legacy CSC product/template names for backward compatibility
bhillkeyfactor Sep 16, 2026
c4cf8e6
Fall back to primary CN's DCV email for unmatched SAN entries
bhillkeyfactor Sep 16, 2026
ab33dad
push new test
bhillkeyfactor Sep 17, 2026
e2d2e09
Surface FlowLogger step summary ahead of the error on Enroll failures
bhillkeyfactor Sep 17, 2026
995c642
Drop stack trace from Enroll failure StatusMessage
bhillkeyfactor Sep 17, 2026
3e96102
Make Price.Total nullable to fix reissue deserialization crash
bhillkeyfactor Sep 17, 2026
fe0091f
Fix Renew/Reissue reporting GENERATED before DCV completes
bhillkeyfactor Sep 17, 2026
b489476
Add legacy product name coverage for renew/reissue
bhillkeyfactor Sep 17, 2026
e917217
Remove last raw status literal from MapReturnStatus
bhillkeyfactor Sep 17, 2026
ae2d407
Add per-product-type domain scenario test cases
bhillkeyfactor Sep 17, 2026
8da3e0c
Fix typo'd lookup key breaking per-SAN DCV email overrides
bhillkeyfactor Sep 18, 2026
d9597e1
Attach flow summary to EnrollmentContext on success
bhillkeyfactor Sep 18, 2026
3c43b8d
Render flow summary as one bullet per step instead of one blob
bhillkeyfactor Sep 18, 2026
e78789b
Port 200-day renewal fix: base RenewOrReissue on order expiry, not ce…
bhillkeyfactor Sep 22, 2026
5926829
Add Enabled CA connection flag
bhillkeyfactor Sep 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions .github/workflows/keyfactor-bootstrap-workflow-v3.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,17 @@ on:

jobs:
call-starter-workflow:
uses: keyfactor/actions/.github/workflows/starter.yml@v3.1.2
uses: keyfactor/actions/.github/workflows/starter.yml@v5
with:
command_token_url: ${{ vars.COMMAND_TOKEN_URL }}
command_hostname: ${{ vars.COMMAND_HOSTNAME }}
command_base_api_path: ${{ vars.COMMAND_API_PATH }}
secrets:
token: ${{ secrets.V2BUILDTOKEN}}
APPROVE_README_PUSH: ${{ secrets.APPROVE_README_PUSH}}
gpg_key: ${{ secrets.KF_GPG_PRIVATE_KEY }}
gpg_pass: ${{ secrets.KF_GPG_PASSPHRASE }}
scan_token: ${{ secrets.SAST_TOKEN }}
entra_username: ${{ secrets.DOCTOOL_ENTRA_USERNAME }}
entra_password: ${{ secrets.DOCTOOL_ENTRA_PASSWD }}
command_client_id: ${{ secrets.COMMAND_CLIENT_ID }}
command_client_secret: ${{ secrets.COMMAND_CLIENT_SECRET }}
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
v1.2.0
- Added support for CSC TrustedSecure EV, Multiple Names; CSC TrustedSecure OV Wildcard, Multiple Names; and CSC TrustedSecure DV Wildcard, Multiple Names certificate products
- Renamed all certificate template product IDs to match CSC's current certificate type names (e.g. "CSC TrustedSecure Premium Certificate" is now "CSC TrustedSecure OV", "CSC TrustedSecure Domain Validated SSL" is now "CSC TrustedSecure DV"). Existing Certificate Templates in Command using the old names continue to work; new Templates should use the new names.
- Removed the TemplateSync gateway registration setting. Certificate sync now always maps synced certificates back to their CSC certificate type/template.
- Added .NET 10 as a supported target framework, alongside .NET 6 and .NET 8.
- Enrollment/renewal/reissue failures now include the FlowLogger step-by-step summary ahead of the underlying error message in StatusMessage, instead of just a terse error. Also fixed enrollment failures reporting Status 30 (INPROCESS) instead of the correct FAILED status, and an exception thrown mid-enrollment no longer bubbles up as an unhandled error - it's now returned as a proper failed EnrollmentResult with full flow context.
- Fixed a crash when CSC Global returns a null "price.total" (e.g. reissuing a certificate that is not in an active status) - Price.Total is now nullable instead of causing a JSON deserialization exception.
- Fixed successful Renew and Reissue requests incorrectly reporting Status GENERATED (certificate issued) when CSC Global has only submitted the request and is still waiting on domain control validation. This caused the AnyGateway REST host to crash trying to parse a certificate that doesn't exist yet. Renew/Reissue now report EXTERNALVALIDATION, matching new enrollment, and surface the pending CNAME/email DCV instructions the same way.
- Fixed the "Addtl Sans Comma Separated DCV Emails" enrollment field never actually being read during enrollment, due to a typo in the code looking up "DVC" instead of "DCV". Per-domain DCV emails for additional SANs on unrelated domains were silently ignored, falling back to the primary CN's DCV email - which does not have authority to validate a different domain.
- On successful enrollment/renewal/reissue, the FlowLogger step summary is now attached to EnrollmentContext as one entry per step (rendered as separate bullets by Command's enrollment UI, alongside any DCV instructions) instead of one multi-line block, since that UI does not render embedded newlines.

v.1.1.1
- Added Incremental Sync that goes back X Number of days
- Fixed issue with parsing certain certificates that were in zip format
Expand Down
538 changes: 311 additions & 227 deletions README.md

Large diffs are not rendered by default.

30 changes: 30 additions & 0 deletions cscglobal-caplugin.Tests/CSCGlobalCAPlugin.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<AssemblyName>CSCGlobalCAPlugin.Tests</AssemblyName>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\cscglobal-caplugin\CSCGlobalCAPlugin.csproj" />
</ItemGroup>

</Project>
Loading
Loading