Пример #1
0
        public void ComputeAndSignHash_VerifiesComputedSignature_Pass()
        {
            Random rdm = new Random();
            byte[] message = new byte[256];
            byte[] signedMessage;
            string nativeXmlString;
            bool isMessageNotTamperedWith = true;
            rdm.NextBytes(message);

            using (var rsacsp = new RSACipher<RSACryptoServiceProvider>())
            {
                signedMessage = rsacsp.ComputeAndSignHash<SHA384Cng>(message);
                nativeXmlString = rsacsp.ToXmlString(true);
            }

            using (var cipher = new RSACipher<RSACryptoServiceProvider>(nativeXmlString))
            {
                isMessageNotTamperedWith = cipher.ComputeAndVerifyHash<SHA384Cng>(message, signedMessage);
            }

            Assert.IsTrue(isMessageNotTamperedWith);
        }
Пример #2
0
        public void SignHash_CompareSignaturesOfRSACSPAndRSACipher_Pass()
        {
            int wantedKeySize = 4096;
            Random rdm = new Random();
            byte[] message = new byte[256];
            byte[] signedMessage;
            byte[] signedMessageNative;
            string nativeXmlString;
            rdm.NextBytes(message);

            using (var rsacsp = new RSACryptoServiceProvider(wantedKeySize))
            {
                byte[] native = new SHA1Cng().ComputeHash(message);
                signedMessageNative = rsacsp.SignHash(native, "SHA1");
                nativeXmlString = rsacsp.ToXmlString(true);
            }

            using (var cipher = new RSACipher<RSACryptoServiceProvider>(nativeXmlString))
            {
                //byte[] hash = new SHA1Managed().ComputeHash(message);
                signedMessage = cipher.ComputeAndSignHash<SHA1Cng>(message);
            }

            CollectionAssert.AreEqual(signedMessage, signedMessageNative);
        }