protected override void DoRun(FlatFile flatFile) { if (flatFile.Definition.Checksum == null) { _testResults.Add(new TestResult(ResultType.Error, AddmlLocation.FromFlatFileIndex(flatFile.Definition.GetIndex()), string.Format(Messages.ControlChecksumMessage_ChecksumMissing))); return; } string checksumAlgorithm = flatFile.Definition.Checksum.Algorithm; string expectedChecksum = flatFile.Definition.Checksum.Value; FileInfo file = flatFile.Definition.FileInfo; HashAlgorithm h = (HashAlgorithm)CryptoConfig.CreateFromName(checksumAlgorithm); if (h == null) { _testResults.Add(new TestResult(ResultType.Error, AddmlLocation.FromFlatFileIndex(flatFile.Definition.GetIndex()), string.Format(Messages.ControlChecksumMessage_UnknownChecksumAlgorithm, checksumAlgorithm))); return; } byte[] bytes; using (FileStream fs = file.OpenRead()) { bytes = h.ComputeHash(fs); } string actualChecksum = Hex.ToHexString(bytes); if (!actualChecksum.Equals(expectedChecksum, StringComparison.InvariantCultureIgnoreCase)) { _testResults.Add(new TestResult(ResultType.Error, AddmlLocation.FromFlatFileIndex(flatFile.Definition.GetIndex()), string.Format(Messages.ControlChecksumMessage_ChecksumMismatch, expectedChecksum, actualChecksum))); } }
protected override void DoRun(FlatFile flatFile) { if (flatFile.Definition.Checksum == null) { _testResults.Add(new TestResult(ResultType.Error, AddmlLocation.FromFlatFileIndex(flatFile.Definition.GetIndex()), string.Format(Messages.ControlChecksumMessage3))); return; } string checksumAlgorithm = flatFile.Definition.Checksum.Algorithm; string expectedChecksum = flatFile.Definition.Checksum.Value; FileInfo file = flatFile.Definition.FileInfo; HashAlgorithm h = HashAlgorithm.Create(checksumAlgorithm); if (h == null) { _testResults.Add(new TestResult(ResultType.Error, AddmlLocation.FromFlatFileIndex(flatFile.Definition.GetIndex()), string.Format(Messages.ControlChecksumMessage1, checksumAlgorithm))); return; } byte[] bytes; using (FileStream fs = file.OpenRead()) { bytes = h.ComputeHash(fs); } string actualChecksum = Hex.ToHexString(bytes); if (expectedChecksum != actualChecksum) { _testResults.Add(new TestResult(ResultType.Error, AddmlLocation.FromFlatFileIndex(flatFile.Definition.GetIndex()), string.Format(Messages.ControlChecksumMessage2, expectedChecksum, actualChecksum))); } }