diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9aa6b63..ae00e06 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Update `GetToolInstallationPath` to use user temp folder.
- Update `TestRunUtil` icons to circle with color.
- Update `AzureSignToolUtils` sign to ignore exception.
+- Update `AzureSignToolUtils` to ignore if file is already signed.
### Example
- Add `Resource` and `Resource.pt-BR` to test sign files.
### Tests
diff --git a/Directory.Build.props b/Directory.Build.props
index 762838f..9012c01 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,5 +1,5 @@
- 1.9.0-beta.2
+ 1.9.0-beta.3
\ No newline at end of file
diff --git a/ricaun.Nuke/Extensions/NuGetExtension.cs b/ricaun.Nuke/Extensions/NuGetExtension.cs
index dd3945e..3d40d82 100644
--- a/ricaun.Nuke/Extensions/NuGetExtension.cs
+++ b/ricaun.Nuke/Extensions/NuGetExtension.cs
@@ -46,6 +46,21 @@ public static NugetVersionInfo Parse(string packageFileName)
///
public static class NuGetExtension
{
+ ///
+ /// NuGetFileExtension (.nupkg)
+ ///
+ public const string NuGetFileExtension = ".nupkg";
+
+ ///
+ /// Check if file has NuGet extension (.nupkg)
+ ///
+ ///
+ ///
+ public static bool IsNuGetFile(string filePath)
+ {
+ return Path.GetExtension(filePath).Equals(NuGetFileExtension, StringComparison.InvariantCultureIgnoreCase);
+ }
+
///
/// TryGetPackageNameAndVersion
///
diff --git a/ricaun.Nuke/Extensions/SignExtension.cs b/ricaun.Nuke/Extensions/SignExtension.cs
index c3701bd..7d605f1 100644
--- a/ricaun.Nuke/Extensions/SignExtension.cs
+++ b/ricaun.Nuke/Extensions/SignExtension.cs
@@ -81,7 +81,7 @@ public static bool CreateCerFile(string fileNamePfx, string passwordPfx, string
/// NuGet files use .
public static void Sign(string certPath, string certPassword, string filePath)
{
- if (Path.GetExtension(filePath) == ".nupkg")
+ if (NuGetExtension.IsNuGetFile(filePath))
{
SignNuGet(certPath, certPassword, filePath);
return;
@@ -167,20 +167,20 @@ public static void SignNuGet(string certPath, string certPassword, string binary
}
///
- /// Has Signature
+ /// Has Signature in the file or NuGet
///
- ///
+ ///
///
- static bool HasSignature(string fileInfo)
+ public static bool HasSignature(string filePath)
{
- if (fileInfo.EndsWith(".nupkg"))
+ if (NuGetExtension.IsNuGetFile(filePath))
{
- return NuGetExtension.NuGetVerifySignatures(fileInfo);
+ return NuGetExtension.NuGetVerifySignatures(filePath);
}
try
{
- System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromSignedFile(fileInfo);
+ System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromSignedFile(filePath);
return true;
}
catch
diff --git a/ricaun.Nuke/Tools/AzureSignToolUtils.cs b/ricaun.Nuke/Tools/AzureSignToolUtils.cs
index f7a059f..eeb8eb8 100644
--- a/ricaun.Nuke/Tools/AzureSignToolUtils.cs
+++ b/ricaun.Nuke/Tools/AzureSignToolUtils.cs
@@ -9,6 +9,7 @@
using Nuke.Common.Tools.DotNet;
using Nuke.Common.IO;
using Nuke.Common.Tooling;
+using ricaun.Nuke.Extensions;
namespace ricaun.Nuke.Tools
{
@@ -19,7 +20,6 @@ public class AzureSignToolUtils
{
private const string TimestampUrlDefault = "http://timestamp.digicert.com";
private const string TimestampDigestDefault = "sha256";
- private const string NugetPackageExtension = ".nupkg";
///
/// Ensures that Azure Sign Tool and NuGet Key Vault Sign Tool are installed.
@@ -112,23 +112,26 @@ public static void DownloadNuGetKeyVaultSignTool()
///
/// Signs the specified file using Azure Sign Tool or NuGet Key Vault Sign Tool.
///
- /// The name of the file to sign.
+ /// The name of the file to sign.
/// The Azure Key Vault configuration.
/// The Azure Key Vault client secret.
/// The default timestamp URL.
/// The default timestamp digest.
- public static void Sign(string fileName,
+ public static void Sign(string filePath,
AzureKeyVaultConfig azureKeyVaultConfig, string azureKeyVaultClientSecret,
string timestampUrlDefault = TimestampUrlDefault,
string timestampDigestDefault = TimestampDigestDefault)
{
try
{
- if (Path.GetExtension(fileName) == NugetPackageExtension)
+ if (SignExtension.HasSignature(filePath))
+ return;
+
+ if (NuGetExtension.IsNuGetFile(filePath))
{
DownloadNuGetKeyVaultSignTool();
NuGetKeyVaultSignToolTasks.NuGetKeyVaultSignTool(x => x
- .SetFile(fileName)
+ .SetFile(filePath)
.SetKeyVaultCertificateName(azureKeyVaultConfig.AzureKeyVaultCertificate)
.SetKeyVaultUrl(azureKeyVaultConfig.AzureKeyVaultUrl)
.SetKeyVaultClientId(azureKeyVaultConfig.AzureKeyVaultClientId)
@@ -142,7 +145,7 @@ public static void Sign(string fileName,
DownloadAzureSignTool();
AzureSignToolTasks.AzureSignTool(x => x
- .SetFiles(fileName)
+ .SetFiles(filePath)
.SetKeyVaultCertificateName(azureKeyVaultConfig.AzureKeyVaultCertificate)
.SetKeyVaultUrl(azureKeyVaultConfig.AzureKeyVaultUrl)
.SetKeyVaultClientId(azureKeyVaultConfig.AzureKeyVaultClientId)
@@ -154,7 +157,7 @@ public static void Sign(string fileName,
}
catch (Exception ex)
{
- Serilog.Log.Error($"Azure Sign Error: {Path.GetFileName(fileName)} - {ex.Message}");
+ Serilog.Log.Error($"Azure Sign Error: {Path.GetFileName(filePath)} - {ex.Message}");
Serilog.Log.Information(ex.ToString());
}
}