blob: 61edb3411760c13d96fbb89845794d3c8a71d03a [file] [log] [blame]
Steve Dower0cd63912018-12-10 18:52:57 -08001function Find-Tool {
2 param([string]$toolname)
3
4 $kitroot = (gp 'HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots\').KitsRoot10
5 $tool = (gci -r "$kitroot\Bin\*\x64\$toolname" | sort FullName -Desc | select -First 1)
6 if (-not $tool) {
7 throw "$toolname is not available"
8 }
9 Write-Host "Found $toolname at $($tool.FullName)"
10 return $tool.FullName
11}
12
13Set-Alias SignTool (Find-Tool "signtool.exe") -Scope Script
14
15function Sign-File {
16 param([string]$certname, [string]$certsha1, [string]$certfile, [string]$description, [string[]]$files)
17
18 if (-not $description) {
19 $description = $env:SigningDescription;
20 if (-not $description) {
21 $description = "Python";
22 }
23 }
Steve Dowerd3bbc522018-12-21 13:48:18 -080024 if (-not $certsha1) {
25 $certsha1 = $env:SigningCertificateSha1;
26 }
Steve Dower0cd63912018-12-10 18:52:57 -080027 if (-not $certname) {
28 $certname = $env:SigningCertificate;
29 }
30 if (-not $certfile) {
31 $certfile = $env:SigningCertificateFile;
32 }
33
34 foreach ($a in $files) {
35 if ($certsha1) {
36 SignTool sign /sha1 $certsha1 /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a
37 } elseif ($certname) {
Steve Dowerd3bbc522018-12-21 13:48:18 -080038 SignTool sign /a /n $certname /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a
Steve Dower0cd63912018-12-10 18:52:57 -080039 } elseif ($certfile) {
40 SignTool sign /f $certfile /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a
41 } else {
42 SignTool sign /a /fd sha256 /t http://timestamp.verisign.com/scripts/timestamp.dll /d $description $a
43 }
44 }
45}
46