예제 #1
0
        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)));
            }
        }
예제 #2
0
        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)));
            }
        }