Skip to content

Commit 44567df

Browse files
committed
Add option to skip NuGet signature verification
Introduce NUGET_SIGN_SKIP_VERIFICATION to allow skipping signed package verification. Expose a new signature_verification_enabled output (steps.signing.outputs.verify_enabled) and write verify_enabled to GITHUB_OUTPUT based on the env/secret. Update publish-artifacts, publish-packages, publish-attested and release-drafter to accept the new input/secret and gate 'Verify signed packages' steps on both signing_enabled and signature_verification_enabled. This enables disabling verification in CI without turning off signing.
1 parent 97d5cc7 commit 44567df

4 files changed

Lines changed: 23 additions & 3 deletions

File tree

.github/workflows/publish-artifacts.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ on:
66
signing_enabled:
77
description: "Whether package signing was enabled for this run."
88
value: ${{ jobs.package.outputs.signing_enabled }}
9+
signature_verification_enabled:
10+
description: "Whether signed package verification was enabled for this run."
11+
value: ${{ jobs.package.outputs.signature_verification_enabled }}
912
inputs:
1013
package_version:
1114
description: "Optional package version, usually the release tag without the leading v."
@@ -47,6 +50,8 @@ on:
4750
required: false
4851
NUGET_SIGN_TIMESTAMP_URL:
4952
required: false
53+
NUGET_SIGN_SKIP_VERIFICATION:
54+
required: false
5055

5156
permissions:
5257
contents: read
@@ -57,6 +62,7 @@ jobs:
5762
runs-on: ubuntu-latest
5863
outputs:
5964
signing_enabled: ${{ steps.signing.outputs.enabled }}
65+
signature_verification_enabled: ${{ steps.signing.outputs.verify_enabled }}
6066

6167
steps:
6268
- name: Checkout
@@ -150,6 +156,7 @@ jobs:
150156
NUGET_SIGN_CERTIFICATE_PASSWORD: ${{ secrets.NUGET_SIGN_CERTIFICATE_PASSWORD }}
151157
NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT: ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
152158
NUGET_SIGN_TIMESTAMP_URL: ${{ secrets.NUGET_SIGN_TIMESTAMP_URL }}
159+
NUGET_SIGN_SKIP_VERIFICATION: ${{ secrets.NUGET_SIGN_SKIP_VERIFICATION }}
153160
run: |
154161
if [ -n "$NUGET_SIGN_CERTIFICATE_BASE64" ] \
155162
&& [ -n "$NUGET_SIGN_CERTIFICATE_PASSWORD" ] \
@@ -162,6 +169,14 @@ jobs:
162169
echo "Package signing disabled. Continuing with unsigned packages."
163170
fi
164171
172+
if [ "${NUGET_SIGN_SKIP_VERIFICATION,,}" = "true" ]; then
173+
echo "verify_enabled=false" >> "$GITHUB_OUTPUT"
174+
echo "Signed package verification disabled by NUGET_SIGN_SKIP_VERIFICATION."
175+
else
176+
echo "verify_enabled=true" >> "$GITHUB_OUTPUT"
177+
echo "Signed package verification enabled."
178+
fi
179+
165180
- name: Import signing certificate
166181
if: ${{ steps.signing.outputs.enabled == 'true' }}
167182
env:
@@ -186,7 +201,7 @@ jobs:
186201
done
187202
188203
- name: Verify signed packages
189-
if: ${{ steps.signing.outputs.enabled == 'true' }}
204+
if: ${{ steps.signing.outputs.enabled == 'true' && steps.signing.outputs.verify_enabled == 'true' }}
190205
env:
191206
NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT: ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
192207
run: |

.github/workflows/publish-attested.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ on:
2222
required: false
2323
NUGET_SIGN_TIMESTAMP_URL:
2424
required: false
25+
NUGET_SIGN_SKIP_VERIFICATION:
26+
required: false
2527

2628
permissions:
2729
contents: write
@@ -39,6 +41,7 @@ jobs:
3941
NUGET_SIGN_CERTIFICATE_PASSWORD: ${{ secrets.NUGET_SIGN_CERTIFICATE_PASSWORD }}
4042
NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT: ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
4143
NUGET_SIGN_TIMESTAMP_URL: ${{ secrets.NUGET_SIGN_TIMESTAMP_URL }}
44+
NUGET_SIGN_SKIP_VERIFICATION: ${{ secrets.NUGET_SIGN_SKIP_VERIFICATION }}
4245

4346
release:
4447
name: Upload artifacts to draft release

.github/workflows/publish-packages.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ jobs:
106106
NUGET_SIGN_CERTIFICATE_PASSWORD: ${{ secrets.NUGET_SIGN_CERTIFICATE_PASSWORD }}
107107
NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT: ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
108108
NUGET_SIGN_TIMESTAMP_URL: ${{ secrets.NUGET_SIGN_TIMESTAMP_URL }}
109+
NUGET_SIGN_SKIP_VERIFICATION: ${{ secrets.NUGET_SIGN_SKIP_VERIFICATION }}
109110

110111
publish-nuget:
111112
name: Publish to NuGet.org
@@ -130,7 +131,7 @@ jobs:
130131
merge-multiple: true
131132

132133
- name: Verify signed packages
133-
if: ${{ needs.package.outputs.signing_enabled == 'true' }}
134+
if: ${{ needs.package.outputs.signing_enabled == 'true' && needs.package.outputs.signature_verification_enabled == 'true' }}
134135
env:
135136
NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT: ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
136137
run: |
@@ -180,7 +181,7 @@ jobs:
180181
merge-multiple: true
181182

182183
- name: Verify signed packages
183-
if: ${{ needs.package.outputs.signing_enabled == 'true' }}
184+
if: ${{ needs.package.outputs.signing_enabled == 'true' && needs.package.outputs.signature_verification_enabled == 'true' }}
184185
env:
185186
NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT: ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
186187
run: |

.github/workflows/release-drafter.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,4 @@ jobs:
4343
NUGET_SIGN_CERTIFICATE_PASSWORD: ${{ secrets.NUGET_SIGN_CERTIFICATE_PASSWORD }}
4444
NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT: ${{ secrets.NUGET_SIGN_CERTIFICATE_SHA256_FINGERPRINT }}
4545
NUGET_SIGN_TIMESTAMP_URL: ${{ secrets.NUGET_SIGN_TIMESTAMP_URL }}
46+
NUGET_SIGN_SKIP_VERIFICATION: ${{ secrets.NUGET_SIGN_SKIP_VERIFICATION }}

0 commit comments

Comments
 (0)