Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions src/SignCheck/Microsoft.SignCheck/SignCheckResources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,9 @@
<data name="DetailSkippedUnsupportedFileType" xml:space="preserve">
<value>Skipped (unsupported file type)</value>
</data>
<data name="DetailVerificationError" xml:space="preserve">
<value>Verification error: {0}</value>
</data>
<data name="DetailTimestamp" xml:space="preserve">
<value>Timestamp: {0:MM/dd/yy H:mm:ss} ({1})</value>
</data>
Expand Down
13 changes: 11 additions & 2 deletions src/SignCheck/Microsoft.SignCheck/Verification/ArchiveVerifier.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,17 @@ protected void VerifyContent(SignatureVerificationResult svr)
// and we need to ensure they are extracted before we verify the MSIs.
foreach (string fullName in archiveMap.Keys)
{
SignatureVerificationResult result = VerifyFile(archiveMap[fullName], svr.VirtualPath,
Path.Combine(svr.VirtualPath, fullName), fullName);
SignatureVerificationResult result;
try
{
result = VerifyFile(archiveMap[fullName], svr.VirtualPath,
Path.Combine(svr.VirtualPath, fullName), fullName);
}
catch (Exception e) when (e is not PlatformNotSupportedException)
{
result = SignatureVerificationResult.ErrorResult(
archiveMap[fullName], svr.VirtualPath, Path.Combine(svr.VirtualPath, fullName), e);
}

// Tag the full path into the result detail
result.AddDetail(DetailKeys.File, SignCheckResources.DetailFullName, fullName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,15 @@ public IEnumerable<SignatureVerificationResult> VerifyFiles(IEnumerable<string>
{
FileVerifier fileVerifier = GetFileVerifier(file);
SignatureVerificationResult result;
result = fileVerifier.VerifySignature(file, parent: null, virtualPath: Path.GetFileName(file));

try
{
result = fileVerifier.VerifySignature(file, parent: null, virtualPath: Path.GetFileName(file));
}
catch (Exception e)
{
result = SignatureVerificationResult.ErrorResult(file, parent: null, virtualPath: Path.GetFileName(file), e);
}

if ((Options & SignatureVerificationOptions.GenerateExclusion) == SignatureVerificationOptions.GenerateExclusion)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,23 @@ public static SignatureVerificationResult UnsupportedFileTypeResult(string path,
return signatureVerificationResult;
}

/// <summary>
/// Creates a SignatureVerificationResult for a file that failed verification due to an unexpected error.
/// </summary>
/// <param name="path">The path to the file that caused the error.</param>
/// <param name="parent">The parent container of the file, or null for top-level files.</param>
/// <param name="virtualPath">The virtual path of the file.</param>
/// <param name="exception">The exception that occurred during verification.</param>
public static SignatureVerificationResult ErrorResult(string path, string parent, string virtualPath, Exception exception)
{
var signatureVerificationResult = new SignatureVerificationResult(path, parent, virtualPath);

signatureVerificationResult.AddDetail(DetailKeys.Error,
String.Format(SignCheckResources.DetailVerificationError, exception.ToString()));

return signatureVerificationResult;
}

/// <summary>
/// Creates a SignatureVerificationResult for an excluded file type or file extension.
/// </summary>
Expand Down
Loading