@@ -19,6 +19,7 @@ concurrency:
1919
2020permissions :
2121 contents : read
22+ id-token : write
2223
2324env :
2425 RUST_VERSION : stable
@@ -36,10 +37,12 @@ jobs:
3637 - platform : win
3738 os : windows-latest
3839 artifact : chia-gaming-electron-windows
40+ environment : windows-code-signing
3941 - platform : linux
4042 os : ubuntu-22.04
4143 artifact : chia-gaming-electron-linux
4244 runs-on : ${{ matrix.os }}
45+ environment : ${{ matrix.environment }}
4346
4447 steps :
4548 - name : Checkout code
@@ -126,72 +129,56 @@ jobs:
126129 id : windows-signing
127130 shell : bash
128131 env :
129- SM_CLIENT_CERT_FILE_B64 : ${{ secrets.SM_CLIENT_CERT_FILE_B64 }}
130- SM_CLIENT_CERT_PASSWORD : ${{ secrets.SM_CLIENT_CERT_PASSWORD }}
131- SM_HOST : ${{ secrets.SM_HOST }}
132- SM_API_KEY : ${{ secrets.SM_API_KEY }}
133- SM_CODE_SIGNING_CERT_SHA1_HASH : ${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }}
134- SM_CERTKEY_ALIAS : ${{ secrets.SM_CERTKEY_ALIAS }}
132+ AZURE_SIGNING_CLIENT_ID : ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
133+ AZURE_SIGNING_TENANT_ID : ${{ secrets.AZURE_SIGNING_TENANT_ID }}
135134 run : |
136135 configured=0
137136 for value in \
138- "$SM_CLIENT_CERT_FILE_B64" \
139- "$SM_CLIENT_CERT_PASSWORD" \
140- "$SM_HOST" \
141- "$SM_API_KEY" \
142- "$SM_CODE_SIGNING_CERT_SHA1_HASH" \
143- "$SM_CERTKEY_ALIAS"; do
137+ "$AZURE_SIGNING_CLIENT_ID" \
138+ "$AZURE_SIGNING_TENANT_ID"; do
144139 if [[ -n "$value" ]]; then
145140 configured=$((configured + 1))
146141 fi
147142 done
148143
149- if [[ "$configured" -eq 6 ]]; then
144+ if [[ "$configured" -eq 2 ]]; then
150145 echo "available=true" >> "$GITHUB_OUTPUT"
151146 elif [[ "$configured" -eq 0 ]]; then
152147 echo "available=false" >> "$GITHUB_OUTPUT"
153148 else
154- echo "::error::Windows signing is partially configured; all six DigiCert secrets are required"
149+ echo "::error::Windows signing is partially configured; both Azure signing secrets are required"
155150 exit 1
156151 fi
157152
158- - name : Configure DigiCert Signing Manager
153+ - name : Install Azure Artifact Signing client
159154 if : steps.windows-signing.outputs.available == 'true'
160- shell : bash
161- env :
162- SM_CLIENT_CERT_FILE_B64 : ${{ secrets.SM_CLIENT_CERT_FILE_B64 }}
163- SM_CLIENT_CERT_PASSWORD : ${{ secrets.SM_CLIENT_CERT_PASSWORD }}
164- SM_HOST : ${{ secrets.SM_HOST }}
165- SM_API_KEY : ${{ secrets.SM_API_KEY }}
166- SM_CODE_SIGNING_CERT_SHA1_HASH : ${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }}
155+ shell : pwsh
167156 run : |
168- cert_file="D:/Certificate_pkcs12.p12"
169- echo "$SM_CLIENT_CERT_FILE_B64" | base64 --decode > /d/Certificate_pkcs12.p12
170- {
171- echo "SM_HOST=$SM_HOST"
172- echo "SM_API_KEY=$SM_API_KEY"
173- echo "SM_CLIENT_CERT_FILE=$cert_file"
174- echo "SM_CLIENT_CERT_PASSWORD=$SM_CLIENT_CERT_PASSWORD"
175- echo "SM_CODE_SIGNING_CERT_SHA1_HASH=$SM_CODE_SIGNING_CERT_SHA1_HASH"
176- } >> "$GITHUB_ENV"
177- {
178- echo "C:/Program Files (x86)/Windows Kits/10/App Certification Kit"
179- echo "C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools"
180- echo "C:/Program Files/DigiCert/DigiCert One Signing Manager Tools"
181- } >> "$GITHUB_PATH"
182-
183- - name : Install DigiCert Signing Manager tools
184- if : steps.windows-signing.outputs.available == 'true'
185- shell : cmd
186- run : |
187- curl -X GET https://download.chia.net/dc/smtools-windows-x64.msi -o smtools-windows-x64.msi
188- start "" /wait msiexec.exe /i smtools-windows-x64.msi /qn /norestart
189- set "installer_exit=%ERRORLEVEL%"
190- if not "%installer_exit%"=="0" if not "%installer_exit%"=="3010" exit /b %installer_exit%
191- smksp_registrar.exe list
192- smctl.exe keypair ls
193- C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
194- smctl.exe windows certsync --keypair-alias=${{ secrets.SM_CERTKEY_ALIAS }}
157+ $toolsDir = Join-Path $env:RUNNER_TEMP "artifact-signing-client"
158+ New-Item -ItemType Directory -Path $toolsDir -Force | Out-Null
159+ Push-Location $toolsDir
160+
161+ Invoke-WebRequest -Uri "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -OutFile nuget.exe
162+ .\nuget.exe install Microsoft.ArtifactSigning.Client -x -OutputDirectory .
163+
164+ $dlib = Get-ChildItem -Recurse -Filter "Azure.CodeSigning.Dlib.dll" |
165+ Where-Object { $_.FullName -match '[\\/]x64[\\/]' } |
166+ Select-Object -First 1
167+ if (-not $dlib) {
168+ throw "Azure.CodeSigning.Dlib.dll (x64) not found after installing Microsoft.ArtifactSigning.Client"
169+ }
170+
171+ $metadataPath = Join-Path $toolsDir "metadata.json"
172+ @{
173+ Endpoint = "https://wus2.codesigning.azure.net/"
174+ CodeSigningAccountName = "ChiaNetworkInc"
175+ CertificateProfileName = "ChiaNetworkInc"
176+ CorrelationId = "github-actions-$env:GITHUB_RUN_ID"
177+ } | ConvertTo-Json | Set-Content -Path $metadataPath
178+
179+ Add-Content -Path $env:GITHUB_ENV -Value "AZURE_CODE_SIGNING_DLIB=$($dlib.FullName)"
180+ Add-Content -Path $env:GITHUB_ENV -Value "AZURE_CODE_SIGNING_METADATA=$metadataPath"
181+ Pop-Location
195182
196183 - name : Build signed Electron installer
197184 if : steps.apple-signing.outputs.available == 'true'
@@ -206,6 +193,10 @@ jobs:
206193 shell : bash
207194 env :
208195 HAS_SIGNING_SECRET : ' true'
196+ CSC_IDENTITY_AUTO_DISCOVERY : ' false'
197+ AZURE_TOKEN_CREDENTIALS : prod
198+ AZURE_TENANT_ID : ${{ secrets.AZURE_SIGNING_TENANT_ID }}
199+ AZURE_CLIENT_ID : ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
209200 run : tools/build-electron.sh --platform=${{ matrix.platform }}
210201
211202 - name : Build unsigned Electron installer
0 commit comments