コード例 #1
0
        public DigitalSignatureVerificationResult VerifySignature(DigitalSignatureVerificationArguments arguments)
        {
            var res = new DigitalSignatureVerificationResult();

            try
            {
                var rsaProviderSender = new RSACryptoServiceProvider();
                rsaProviderSender.FromXmlString(arguments.PublicKeyForSignatureVerification.ToString());
                var deformatter = new RSAPKCS1SignatureDeformatter(rsaProviderSender);
                deformatter.SetHashAlgorithm(_hashingService.HashAlgorithmCode());
                var hashResult = _hashingService.Hash(arguments.CipherText);
                res.SignaturesMatch = deformatter.VerifySignature(hashResult.HashedBytes, arguments.Signature);
                if (res.SignaturesMatch)
                {
                    var rsaProviderReceiver = new RSACryptoServiceProvider();
                    rsaProviderReceiver.FromXmlString(arguments.FullKeyForDecryption.ToString());
                    var decryptedBytes = rsaProviderReceiver.Decrypt(Convert.FromBase64String(arguments.CipherText), false);
                    res.DecodedText = Encoding.UTF8.GetString(decryptedBytes);
                }

                res.Success = true;
            }
            catch (Exception ex)
            {
                res.ExceptionMessage = ex.Message;
            }

            return(res);
        }
        public void DigitalSignatureServiceTest()
        {
            var asymmetricService = new RsaAsymmetricCryptographyService();
            var keyPairGenerationResultReceiver = asymmetricService.GenerateAsymmetricKeys(1024);
            var keyPairGenerationResultSender = asymmetricService.GenerateAsymmetricKeys(1024);
            var digitalSignatureService = new RsaPkcs1DigitalSignatureService(new Sha1ManagedHashingService());

            var signatureCreationArgumentsFromSender = new DigitalSignatureCreationArguments()
            {
                Message = "eper málna körte",
                FullKeyForSignature = keyPairGenerationResultSender.FullKeyPairXml,
                PublicKeyForEncryption = keyPairGenerationResultReceiver.PublicKeyOnlyXml
            };

            var signatureCreationResult = digitalSignatureService.Sign(signatureCreationArgumentsFromSender);
            Assert.AreEqual(true, signatureCreationResult.Success);
            var verificationArgumentsFromReceiver = new DigitalSignatureVerificationArguments();
            verificationArgumentsFromReceiver.CipherText = signatureCreationResult.CipherText;
            verificationArgumentsFromReceiver.Signature = signatureCreationResult.Signature;
            verificationArgumentsFromReceiver.PublicKeyForSignatureVerification = keyPairGenerationResultSender.PublicKeyOnlyXml;
            verificationArgumentsFromReceiver.FullKeyForDecryption = keyPairGenerationResultReceiver.FullKeyPairXml;
            var verificationResult = digitalSignatureService.VerifySignature(verificationArgumentsFromReceiver);
            Assert.AreEqual(true, verificationResult.Success);
            Assert.AreEqual(true, verificationResult.SignaturesMatch);
        }
コード例 #3
0
        public DigitalSignatureVerificationResult VerifySignature(DigitalSignatureVerificationArguments arguments)
        {
            var res = new DigitalSignatureVerificationResult();
            try
            {
                var rsaProviderSender = new RSACryptoServiceProvider();
                rsaProviderSender.FromXmlString(arguments.PublicKeyForSignatureVerification.ToString());
                var deformatter = new RSAPKCS1SignatureDeformatter(rsaProviderSender);
                deformatter.SetHashAlgorithm(_hashingService.HashAlgorithmCode());
                var hashResult = _hashingService.Hash(arguments.CipherText);
                res.SignaturesMatch = deformatter.VerifySignature(hashResult.HashedBytes, arguments.Signature);
                if (res.SignaturesMatch)
                {
                    var rsaProviderReceiver = new RSACryptoServiceProvider();
                    rsaProviderReceiver.FromXmlString(arguments.FullKeyForDecryption.ToString());
                    var decryptedBytes = rsaProviderReceiver.Decrypt(Convert.FromBase64String(arguments.CipherText), false);
                    res.DecodedText = Encoding.UTF8.GetString(decryptedBytes);
                }

                res.Success = true;
            }
            catch (Exception ex)
            {
                res.ExceptionMessage = ex.Message;
            }

            return res;
        }