|
2 | 2 | ## File: Install-DotnetSDK.ps1 |
3 | 3 | ## Desc: Install all released versions of the dotnet sdk and populate package |
4 | 4 | ## cache. Should run after VS and Node |
| 5 | +## Supply chain security: checksum validation |
5 | 6 | ################################################################################ |
6 | 7 |
|
7 | 8 | # Set environment variables |
@@ -52,13 +53,22 @@ function Invoke-Warmup ( |
52 | 53 |
|
53 | 54 | function InstallSDKVersion ( |
54 | 55 | $SdkVersion, |
| 56 | + $dotnetVersion, |
55 | 57 | $Warmup |
56 | 58 | ) |
57 | 59 | { |
58 | 60 | if (!(Test-Path -Path "C:\Program Files\dotnet\sdk\$sdkVersion")) |
59 | 61 | { |
60 | 62 | Write-Host "Installing dotnet $sdkVersion" |
61 | | - .\dotnet-install.ps1 -Version $sdkVersion -InstallDir $(Join-Path -Path $env:ProgramFiles -ChildPath 'dotnet') |
| 63 | + $ZipPath = [System.IO.Path]::combine([System.IO.Path]::GetTempPath(), [System.IO.Path]::GetRandomFileName()) |
| 64 | + .\dotnet-install.ps1 -Version $sdkVersion -InstallDir $(Join-Path -Path $env:ProgramFiles -ChildPath 'dotnet') -ZipPath $ZipPath -KeepZip |
| 65 | + |
| 66 | + #region Supply chain security |
| 67 | + $distributorFileHash = (Invoke-RestMethod -Uri "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/$dotnetVersion/releases.json").releases.sdks.Where({$_.version -eq $SdkVersion}).files.Where({ $_.name -eq 'dotnet-sdk-win-x64.zip'}).hash |
| 68 | + $localFileHash = (Get-FileHash -Path $ZipPath -Algorithm 'SHA512').Hash |
| 69 | + |
| 70 | + Use-ChecksumComparison -LocalFileHash $localFileHash -DistributorFileHash $distributorFileHash |
| 71 | + #endregion |
62 | 72 | } |
63 | 73 | else |
64 | 74 | { |
@@ -89,7 +99,7 @@ function InstallAllValidSdks() |
89 | 99 |
|
90 | 100 | ForEach ($sdkVersion in $sdkVersionsToInstall) |
91 | 101 | { |
92 | | - InstallSDKVersion -SdkVersion $sdkVersion -Warmup $warmup |
| 102 | + InstallSDKVersion -SdkVersion $sdkVersion -DotnetVersion $dotnetVersion -Warmup $warmup |
93 | 103 | } |
94 | 104 | } |
95 | 105 | } |
|
0 commit comments