private List <ResultType> RunFixityCheck(FileInfo binaryFiles, AlgorithmTypes useAlgorithm, string valueToCompare = null) { List <ResultType> checkResult = new List <ResultType>(); string currentCalculation = string.Empty, url = string.Empty, urlPart = string.Empty; try { switch (useAlgorithm) { default: case AlgorithmTypes.MD5: { urlPart = "checksum-md5"; url = String.Format("http://{0}:{1}/hooks/{3}?file={2}", ApplicationSettings.ChecksumServerName, ApplicationSettings.ChecksumServerPort, binaryFiles.FullName, urlPart); currentCalculation = ChecksumHelper.CreateMD5Checksum(binaryFiles, url); } break; case AlgorithmTypes.SHA1: { urlPart = "checksum-sha1"; url = String.Format("http://{0}:{1}/hooks/{3}?file={2}", ApplicationSettings.ChecksumServerName, ApplicationSettings.ChecksumServerPort, binaryFiles.FullName, urlPart); currentCalculation = ChecksumHelper.CreateSHA1Checksum(binaryFiles, url); } break; case AlgorithmTypes.SHA224: { urlPart = "checksum-sha224"; url = String.Format("http://{0}:{1}/hooks/{3}?file={2}", ApplicationSettings.ChecksumServerName, ApplicationSettings.ChecksumServerPort, binaryFiles.FullName, urlPart); currentCalculation = ChecksumHelper.CreateSHA224Checksum(binaryFiles, url); } break; case AlgorithmTypes.SHA256: { urlPart = "checksum-sha256"; url = String.Format("http://{0}:{1}/hooks/{3}?file={2}", ApplicationSettings.ChecksumServerName, ApplicationSettings.ChecksumServerPort, binaryFiles.FullName, urlPart); currentCalculation = ChecksumHelper.CreateSHA256Checksum(binaryFiles, url); } break; case AlgorithmTypes.SHA384: { urlPart = "checksum-sha384"; url = String.Format("http://{0}:{1}/hooks/{3}?file={2}", ApplicationSettings.ChecksumServerName, ApplicationSettings.ChecksumServerPort, binaryFiles.FullName, urlPart); currentCalculation = ChecksumHelper.CreateSHA384Checksum(binaryFiles, url); } break; case AlgorithmTypes.SHA512: { urlPart = "checksum-sha512"; url = String.Format("http://{0}:{1}/hooks/{3}?file={2}", ApplicationSettings.ChecksumServerName, ApplicationSettings.ChecksumServerPort, binaryFiles.FullName, urlPart); currentCalculation = ChecksumHelper.CreateSHA512Checksum(binaryFiles, url); } break; } } catch (Exception e) { checkResult.Add(new ResultType { Type = ResultType.InfoType.Message, Data = new string[] { binaryFiles.FullName, "Failed to run fixity checksum!", e.Message, e.StackTrace } }); } finally { if (!String.IsNullOrEmpty(currentCalculation) && HashType.ProcessingMode == ExecutionMode.OnlyCalculate) { checkResult.Add(new ResultType { Type = ResultType.InfoType.Action, Data = new string[] { binaryFiles.FullName, currentCalculation } }); } if (!String.IsNullOrEmpty(currentCalculation) && HashType.ProcessingMode == ExecutionMode.CalculateAndCompare) { if (currentCalculation.Equals(valueToCompare, StringComparison.InvariantCultureIgnoreCase)) { checkResult.Add(new ResultType { Type = ResultType.InfoType.Action, Data = new string[] { binaryFiles.FullName, useAlgorithm.ToString(), string.Format("Our calculation : {0}", currentCalculation), string.Format("Provided value : {0}", valueToCompare), } }); } else { checkResult.Add(new ResultType { Type = ResultType.InfoType.Message, Data = new string[] { String.Format("Fixity comparison with file '{0}' using algorithm '{1}' failed!{2}Our calculation: {3}{2}Provided value:{4} ", binaryFiles.FullName, useAlgorithm, Environment.NewLine, currentCalculation, valueToCompare) } }); } } } return(checkResult); }