/// <summary> /// Create a new FileVerifier instance. /// </summary> /// <param name="log">The Log to use for writing output during verification.</param> /// <param name="exclusions">The set of exclusions to check to determine if a file is excluded from verification.</param> /// <param name="options"></param> /// <param name="fileExtension">The file extension associated with the FileVerifier, e.g. ".zip" or ".dll".</param> public FileVerifier(Log log, Exclusions exclusions, SignatureVerificationOptions options, string fileExtension) { Log = log ?? throw new ArgumentNullException("log"); Exclusions = exclusions ?? throw new ArgumentNullException("exclusions"); Options = options; FileExtension = fileExtension; }
public SignatureVerificationManager(Exclusions exclusions, Log log, SignatureVerificationOptions options) { Exclusions = exclusions; Log = log; Options = options; AddFileVerifier(new CabVerifier(log, exclusions, options, ".cab")); AddFileVerifier(new PortableExecutableVerifier(log, exclusions, options, ".dll")); AddFileVerifier(new ExeVerifier(log, exclusions, options, ".exe")); AddFileVerifier(new JarVerifier(log, exclusions, options)); AddFileVerifier(new AuthentiCodeVerifier(log, exclusions, options, ".js")); AddFileVerifier(new LzmaVerifier(log, exclusions, options)); AddFileVerifier(new MsiVerifier(log, exclusions, options)); AddFileVerifier(new MspVerifier(log, exclusions, options)); AddFileVerifier(new MsuVerifier(log, exclusions, options)); AddFileVerifier(new NupkgVerifier(log, exclusions, options)); AddFileVerifier(new AuthentiCodeVerifier(log, exclusions, options, ".psd1")); AddFileVerifier(new AuthentiCodeVerifier(log, exclusions, options, ".psm1")); AddFileVerifier(new AuthentiCodeVerifier(log, exclusions, options, ".ps1")); AddFileVerifier(new AuthentiCodeVerifier(log, exclusions, options, ".ps1xml")); AddFileVerifier(new VsixVerifier(log, exclusions, options)); AddFileVerifier(new XmlVerifier(log, exclusions, options)); AddFileVerifier(new ZipVerifier(log, exclusions, options)); }
public NupkgVerifier(Log log, Exclusions exclusions, SignatureVerificationOptions options) : base(log, exclusions, options, fileExtension: ".nupkg") { }
public JarVerifier(Log log, Exclusions exclusions, SignatureVerificationOptions options) : base(log, exclusions, options, fileExtension: ".jar") { }
public MspVerifier(Log log, Exclusions exclusions, SignatureVerificationOptions options) : base(log, exclusions, options, ".msp") { }
public CabVerifier(Log log, Exclusions exclusions, SignatureVerificationOptions options, string fileExtension) : base(log, exclusions, options, ".cab") { }
public AuthentiCodeVerifier(Log log, Exclusions exclusions, SignatureVerificationOptions options, string fileExtension) : base(log, exclusions, options, fileExtension) { }
private int Run() { try { Log.WriteMessage("Starting execution of SignCheck."); SignatureVerificationOptions options = SignatureVerificationOptions.None; options |= Options.Recursive ? SignatureVerificationOptions.VerifyRecursive : SignatureVerificationOptions.None; options |= Options.EnableXmlSignatureVerification ? SignatureVerificationOptions.VerifyXmlSignatures : SignatureVerificationOptions.None; options |= Options.SkipTimestamp ? SignatureVerificationOptions.None : SignatureVerificationOptions.VerifyAuthentiCodeTimestamps; options |= Options.VerifyStrongName ? SignatureVerificationOptions.VerifyStrongNameSignature : SignatureVerificationOptions.None; options |= Options.EnableJarSignatureVerification ? SignatureVerificationOptions.VerifyJarSignatures : SignatureVerificationOptions.None; options |= !String.IsNullOrEmpty(Options.ExclusionsOutput) ? SignatureVerificationOptions.GenerateExclusion : SignatureVerificationOptions.None; var signatureVerificationManager = new SignatureVerificationManager(Exclusions, Log, options); ResultDetails = Options.Verbosity > LogVerbosity.Normal ? DetailKeys.ResultKeysVerbose : DetailKeys.ResultKeysNormal; if (InputFiles.Count() > 0) { DateTime startTime = DateTime.Now; IEnumerable <SignatureVerificationResult> results = signatureVerificationManager.VerifyFiles(InputFiles); DateTime endTime = DateTime.Now; AllFilesSigned = true; Log.WriteLine(); Log.WriteMessage(LogVerbosity.Minimum, SignCheckResources.scResults); Log.WriteLine(); ProcessResults(results, 0); // Generate an exclusions file for any unsigned files that were reported. if (!String.IsNullOrEmpty(Options.ExclusionsOutput)) { if (!Directory.Exists(Options.ExclusionsOutput)) { Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(Options.ExclusionsOutput))); } using (var exclusionsWriter = new StreamWriter(Options.ExclusionsOutput, append: false)) { GenerateExclusionsFile(exclusionsWriter, results); } } if (LoggedResults) { Log.WriteLine(); } if (AllFilesSigned) { Log.WriteMessage(LogVerbosity.Minimum, SignCheckResources.scAllFilesSigned); } else { Log.WriteError(LogVerbosity.Minimum, SignCheckResources.scUnsignedFiles); } TimeSpan totalTime = endTime - startTime; Log.WriteMessage(LogVerbosity.Minimum, String.Format(SignCheckResources.scTime, totalTime)); Log.WriteMessage(LogVerbosity.Minimum, String.Format(SignCheckResources.scStats, TotalFiles, TotalSignedFiles, TotalUnsignedFiles, TotalSkippedFiles, TotalExcludedFiles, TotalSkippedExcludedFiles)); } else { Log.WriteMessage(LogVerbosity.Minimum, SignCheckResources.scNoFilesProcessed); } } catch (Exception e) { Log.WriteError(e.ToString()); } finally { if (Log != null) { Log.Close(); } } return(Log.HasLoggedErrors ? -1 : 0); }
public LzmaVerifier(Log log, Exclusions exclusions, SignatureVerificationOptions options) : base(log, exclusions, options, fileExtension: "lzma") { }
public PortableExecutableVerifier(Log log, Exclusions exclusions, SignatureVerificationOptions options, string fileExtension) : base(log, exclusions, options, fileExtension) { FinalizeResult = false; }