Пример #1
0
        /// <summary>
        /// Assina o Dados.
        /// </summary>
        /// <param name="dados">Dados a ser assinado</param>
        /// <param name="LocalRepositorio">Local onde está armazonado o certificado digital.</param>
        /// <param name="NomeCertificado">Nome (SubjectName) do certificado digital.</param>
        public string AssinarDados(string dados, string LocalRepositorio, string NomeCertificado, string tag)
        {
            X509Certificate2 certificadoX509 = Certificado.ObterCertificado(LocalRepositorio, NomeCertificado, this.Configuration);

            //byte[] messageToSignBytes = Encoding.GetEncoding("iso-8859-1").GetBytes(dados.Trim());
            var converter = new ASCIIEncoding();

            byte[] messageToSignBytes = converter.GetBytes(dados.Trim());

            RSA rsa = (RSA)certificadoX509.PrivateKey;

            (certificadoX509.PrivateKey as RSACng).Key.SetProperty(
                new CngProperty(
                    "Export Policy",
                    BitConverter.GetBytes((int)CngExportPolicies.AllowPlaintextExport),
                    CngPropertyOptions.Persist));

            //RSAParameters RSAParameters = rsa.ExportParameters(true);

            //HashAlgorithm hasher = new SHA1Managed();

            // Use the hasher to hash the message
            //byte[] hash = hasher.ComputeHash(messageToSignBytes);

            var signature = rsa.SignData(messageToSignBytes, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);

            //var cipher01 = rsa.SignHash(hash, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);

            return(Convert.ToBase64String(signature));
        }
Пример #2
0
        /// <summary>
        /// Assina o documento XML.
        /// </summary>
        /// <param name="doc">Documento XML.</param>
        /// <param name="TagAssinatura">Tag do XML que deverá ser assinada.</param>
        /// <param name="LocalRepositorio">Local onde está armazonado o certificado digital.</param>
        /// <param name="NomeCertificado">Nome (SubjectName) do certificado digital.</param>
        public void AssinarXmlDocument(XmlDocument doc, string LocalRepositorio, string NomeCertificado, string tag)
        {
            X509Certificate2 certificadoX509 = Certificado.ObterCertificado(LocalRepositorio, NomeCertificado, this.Configuration);

            AssinarXml(doc, certificadoX509, tag);
        }