Skip to content

Commit 485f0fa

Browse files
committed
chore: cosign v4 upgrade
1 parent 8847611 commit 485f0fa

File tree

6 files changed

+42
-26
lines changed

6 files changed

+42
-26
lines changed

.github/assets/release-assets-config.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,17 @@
6262
"name": "SHA256SUMS.gpgsig",
6363
"description": "GPG detached signature"
6464
},
65+
{
66+
"name": "SHA256SUMS.sigstore.json",
67+
"description": "Cosign sigstore bundle"
68+
},
6569
{
6670
"name": "SHA256SUMS.sig",
67-
"description": "Cosign signature"
71+
"description": "Cosign signature (legacy)"
6872
},
6973
{
7074
"name": "SHA256SUMS.pem",
71-
"description": "Cosign certificate"
75+
"description": "Cosign certificate (legacy)"
7276
},
7377
{
7478
"name": "terragrunt-signing-key.asc",

.github/scripts/release/sign-checksums.sh

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ set -e
1111
#
1212
# Outputs:
1313
# SHA256SUMS.gpgsig - GPG detached signature
14-
# SHA256SUMS.sig - Cosign signature
15-
# SHA256SUMS.pem - Cosign certificate
14+
# SHA256SUMS.sigstore.json - Cosign sigstore bundle
15+
# SHA256SUMS.sig - Cosign signature (legacy, extracted from bundle)
16+
# SHA256SUMS.pem - Cosign certificate (legacy, extracted from bundle)
1617

1718
function main {
1819
local -r bin_dir="${1:-bin}"
@@ -51,14 +52,21 @@ function main {
5152

5253
echo "GPG signature created: SHA256SUMS.gpgsig"
5354

54-
# Cosign signing (keyless OIDC)
55+
# Cosign signing (keyless OIDC) - produces sigstore bundle
5556
echo "Signing SHA256SUMS with Cosign..."
5657
cosign sign-blob SHA256SUMS \
57-
--oidc-issuer=https://token.actions.githubusercontent.com \
58-
--output-certificate=SHA256SUMS.pem \
59-
--output-signature=SHA256SUMS.sig \
58+
--bundle=SHA256SUMS.sigstore.json \
6059
--yes
6160

61+
echo "Cosign bundle created: SHA256SUMS.sigstore.json"
62+
63+
# Extract legacy .sig and .pem from bundle for backward compatibility
64+
echo "Extracting legacy signature files from bundle..."
65+
jq -r '.messageSignature.signature' SHA256SUMS.sigstore.json > SHA256SUMS.sig
66+
jq -r '.verificationMaterial.certificate.rawBytes' SHA256SUMS.sigstore.json | \
67+
base64 --decode | \
68+
openssl x509 -inform DER -outform PEM -out SHA256SUMS.pem
69+
6270
echo "Cosign signature created: SHA256SUMS.sig"
6371
echo "Cosign certificate created: SHA256SUMS.pem"
6472

.github/workflows/install-script-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
run: sudo apt-get update && sudo apt-get install -y gnupg
2020

2121
- name: Install Cosign
22-
uses: sigstore/cosign-installer@7e8b541eb2e61bf99390e1afd4be13a184e9ebc5 # v3
22+
uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4
2323

2424
- name: Run install script tests
2525
run: ./docs/tests/install_test.sh

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ jobs:
8282
gpg --armor --export "${GPG_FINGERPRINT}" > bin/terragrunt-signing-key.asc
8383
8484
- name: Install Cosign
85-
uses: sigstore/cosign-installer@7e8b541eb2e61bf99390e1afd4be13a184e9ebc5 # v3
85+
uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4
8686

8787
- name: Sign SHA256SUMS
8888
env:

docs/public/install

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -325,31 +325,36 @@ verify_cosign() {
325325
local checksums_path="$2"
326326
local tmpdir="$3"
327327

328+
# Try bundle verification first (cosign v3+ / sigstore bundle)
329+
local bundle_url="https://github.com/${GITHUB_REPO}/releases/download/${version}/SHA256SUMS.sigstore.json"
330+
local bundle_path="${tmpdir}/SHA256SUMS.sigstore.json"
331+
332+
if curl -sL --fail "$bundle_url" -o "$bundle_path" 2>/dev/null; then
333+
info "Verifying Cosign signature (bundle)..."
334+
cosign verify-blob "$checksums_path" \
335+
--bundle "$bundle_path" \
336+
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
337+
--certificate-identity-regexp "github.com/gruntwork-io/terragrunt" 2>/dev/null
338+
return $?
339+
fi
340+
341+
# Legacy .sig/.pem verification (older releases without bundle)
328342
local sig_url="https://github.com/${GITHUB_REPO}/releases/download/${version}/SHA256SUMS.sig"
329343
local cert_url="https://github.com/${GITHUB_REPO}/releases/download/${version}/SHA256SUMS.pem"
330344
local sig_path="${tmpdir}/SHA256SUMS.sig"
331345
local cert_path="${tmpdir}/SHA256SUMS.pem"
332346

333347
info "Downloading Cosign signature files..."
334-
if ! curl -sL --fail "$sig_url" -o "$sig_path" 2>/dev/null; then
335-
warn "Failed to download Cosign signature file"
336-
return 1
337-
fi
338-
if ! curl -sL --fail "$cert_url" -o "$cert_path" 2>/dev/null; then
339-
warn "Failed to download Cosign certificate file"
340-
return 1
341-
fi
348+
curl -sL --fail "$sig_url" -o "$sig_path" 2>/dev/null || { warn "Failed to download Cosign signature file"; return 1; }
349+
curl -sL --fail "$cert_url" -o "$cert_path" 2>/dev/null || { warn "Failed to download Cosign certificate file"; return 1; }
342350

343351
info "Verifying Cosign signature..."
344-
if cosign verify-blob "$checksums_path" \
352+
cosign verify-blob "$checksums_path" \
345353
--signature "$sig_path" \
346354
--certificate "$cert_path" \
347355
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
348-
--certificate-identity-regexp "github.com/gruntwork-io/terragrunt" 2>/dev/null; then
349-
return 0
350-
else
351-
return 1
352-
fi
356+
--certificate-identity-regexp "github.com/gruntwork-io/terragrunt" 2>/dev/null
357+
return $?
353358
}
354359

355360
# Verify signature using specified method

docs/src/content/docs/01-getting-started/03-install.mdx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ uid [ unknown] Gruntwork (Code Signing Key) <security@gruntwork.io>
7474

7575
```bash
7676
cosign verify-blob SHA256SUMS \
77-
--signature SHA256SUMS.sig \
78-
--certificate SHA256SUMS.pem \
77+
--bundle SHA256SUMS.sigstore.json \
7978
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
8079
--certificate-identity-regexp "github.com/gruntwork-io/terragrunt"
8180
```

0 commit comments

Comments
 (0)