Пример #1
0
        public void TestSign()
        {
            Assert.That(QQnCryptoHelpers.CalculateFileHash(SnkFile, HashType.None), Is.EqualTo("dcd59a19afe007b2a7e706d100f8fcdeb4e4e1e9,type=SHA1,size=596"), "SHA256++Hash matches");
            Assert.That(QQnCryptoHelpers.CalculateFileHash(SnkFile, HashType.SHA256), Is.EqualTo("31a02f23fb06dc6326428843782c049d14e90fb14f74704909e6e6ba1a2592c0"), "SHA256 hash matches");
            Assert.That(QQnCryptoHelpers.CalculateFileHash(SnkFile, HashType.SHA1), Is.EqualTo("dcd59a19afe007b2a7e706d100f8fcdeb4e4e1e9"), "SHA1 hash matches");
            Assert.That(QQnCryptoHelpers.CalculateFileHash(SnkFile, HashType.MD5), Is.EqualTo("2b19ab067c03e05d55f62702c4a79864"), "MD5 hash matches");


            SignAndVerify(HashType.MD5);
            SignAndVerify(HashType.SHA1);
            SignAndVerify(HashType.SHA256);
            SignAndVerify(HashType.SHA512);
            SignAndVerify(HashType.SHA384);

            // RipeMD160 requires type, or it is validated against SHA1
            SignAndVerify(HashType.RipeMD160 | HashType.PlusType);

            string hash = QQnCryptoHelpers.CalculateFileHash(SnkFile, HashType.RipeMD160);

            Assert.That(QQnCryptoHelpers.VerifyFileHash(SnkFile, hash), Is.False);             // SHA1 hash != RIPEMD160 hash

            SignAndVerify(HashType.SHA1 | HashType.PlusSize);
            SignAndVerify(HashType.SHA1 | HashType.PlusType);
            SignAndVerify(HashType.SHA1 | HashType.PlusSize | HashType.PlusType);
        }
Пример #2
0
        /// <summary>
        /// Updates the file.
        /// </summary>
        /// <param name="baseDirectory">The base directory.</param>
        /// <param name="verifyData">The verify data.</param>
        /// <param name="hashType">Type of the hash.</param>
        public static void UpdateFile(string baseDirectory, IUpdatableVerifiableFile verifyData, HashType hashType)
        {
            if (string.IsNullOrEmpty(baseDirectory))
            {
                throw new ArgumentNullException("baseDirectory");
            }
            else if (verifyData == null)
            {
                throw new ArgumentNullException("verifyData");
            }

            FileInfo fif = new FileInfo(QQnPath.Combine(baseDirectory, verifyData.Filename));

            if (!fif.Exists)
            {
                return;
            }

            long     size = fif.Length;
            string   hash = QQnCryptoHelpers.CalculateFileHash(fif.FullName, hashType);
            DateTime dt   = fif.LastWriteTimeUtc;

            verifyData.UpdateVerifyData(hash, size, dt);
        }
Пример #3
0
        void SignAndVerify(HashType hashType)
        {
            string hash = QQnCryptoHelpers.CalculateFileHash(SnkFile, hashType);

            Assert.That(QQnCryptoHelpers.VerifyFileHash(SnkFile, hash), Is.True, "Hash of type {0} ok", hashType);
        }