Skip to content

Commit

Permalink
Enable signature verification on Linux CI machines
Browse files Browse the repository at this point in the history
  • Loading branch information
dtivel committed Jan 10, 2023
1 parent 9a60318 commit 6e190a4
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 4 deletions.
1 change: 1 addition & 0 deletions eng/pipelines/templates/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ stages:
MSBUILDDISABLENODEREUSE: 1
# Set MSBuildEnableWorkloadResolver to work around https://github.com/dotnet/sdk/issues/17461
MSBuildEnableWorkloadResolver: false
DOTNET_NUGET_SIGNATURE_VERIFICATION: true
condition: "and(succeeded(), eq(variables['RunTestsOnLinux'], 'true'))"
pool:
vmImage: ubuntu-latest
Expand Down
3 changes: 2 additions & 1 deletion src/NuGet.Core/NuGet.Packaging/PackageArchiveReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,8 @@ public override bool CanVerifySignedPackages(SignedPackageVerifierSettings verif
else if (RuntimeEnvironmentHelper.IsLinux || RuntimeEnvironmentHelper.IsMacOSX)
{
// Please note: Linux/MAC case sensitive for env var name.
string signVerifyEnvVariable = _environmentVariableReader.GetEnvironmentVariable("DOTNET_NUGET_SIGNATURE_VERIFICATION");
string signVerifyEnvVariable = _environmentVariableReader.GetEnvironmentVariable(
EnvironmentVariableConstants.DotNetNuGetSignatureVerification);

bool canVerify = false;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

namespace NuGet.Packaging.Signing
{
internal static class EnvironmentVariableConstants
{
internal const string DotNetNuGetSignatureVerification = "DOTNET_NUGET_SIGNATURE_VERIFICATION";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2092,24 +2092,36 @@ public void CanVerifySignedPackages_ReturnsValueBasedOnOperatingSystemAndFramewo
using (var packageArchiveReader = new PackageArchiveReader(packageStream, environmentVariableReader: environment.Object))
{
// Act
bool expectedResult = CanVerifySignedPackages();
bool expectedResult = CanVerifySignedPackages(environment.Object);
bool actualResult = packageArchiveReader.CanVerifySignedPackages(null);

// Assert
Assert.Equal(expectedResult, actualResult);
}
}

private static bool CanVerifySignedPackages()
private static bool CanVerifySignedPackages(IEnvironmentVariableReader environmentVariableReader = null)
{
return RuntimeEnvironmentHelper.IsWindows &&
return (RuntimeEnvironmentHelper.IsWindows ||
IsVerificationEnabledByEnvironmentVariable(environmentVariableReader)) &&
#if IS_SIGNING_SUPPORTED
true;
#else
false;
#endif
}

private static bool IsVerificationEnabledByEnvironmentVariable(
IEnvironmentVariableReader environmentVariableReader = null)
{
IEnvironmentVariableReader reader = environmentVariableReader ?? EnvironmentVariableWrapper.Instance;

string value = reader.GetEnvironmentVariable(
EnvironmentVariableConstants.DotNetNuGetSignatureVerification);

return string.Equals(bool.TrueString, value, StringComparison.OrdinalIgnoreCase);
}

private static string ExtractFile(string sourcePath, string targetPath, Stream sourceStream)
{
using (var targetStream = File.OpenWrite(targetPath))
Expand Down

0 comments on commit 6e190a4

Please sign in to comment.