none
Assinatura digital RSAPKCS1SHA256Signature RRS feed

  • Discussão Geral

  • Em loop assino cerca de 100 blocos xml contidos em 2 arquivos,

    e os transmito a um WS, após 2 ou 3 testes bem sucedidos, chave privada

    de dois certificados simplesmente desapareceram,

    um smart card outro token usb , ambos e-cpf.

    Alguem pode analizar e verificar se existe

    alguma coisa no código que estou fazendo para que isso aconteça?

    Obrigado!

     public XmlDocument TransmitirEfinanceira(XmlDocument pXmlDoc, X509Certificate2 pCertificado509) 
            {
                SyscoopBc.wsRecepcao.WsRecepcaoSoapClient envio = new SyscoopBc.wsRecepcao.WsRecepcaoSoapClient();
                SyscoopBc.wsRecepcao.ReceberLoteEventoRequest LoteRequest = new SyscoopBc.wsRecepcao.ReceberLoteEventoRequest();
                SyscoopBc.wsRecepcao.ReceberLoteEventoResponse LoteResponse = new SyscoopBc.wsRecepcao.ReceberLoteEventoResponse();
                LoteRequest.loteEventos = pXmlDoc.DocumentElement;
    
                envio.ClientCredentials.ClientCertificate.Certificate = pCertificado509;                        
                LoteResponse.ReceberLoteEventoResult = pXmlDoc.DocumentElement;            
                LoteResponse.ReceberLoteEventoResult = envio.ReceberLoteEvento(LoteRequest.loteEventos);
                pXmlDoc.InnerXml = LoteResponse.ReceberLoteEventoResult.OuterXml;
                return pXmlDoc;
    
            }


    public string SignSHA256(string pDocument, string id, X509Certificate2 pCertificado) { string signatureCn14Transform = @"http://www.w3.org/TR/2001/REC-xml-c14n-20010315"; string signatureMethod = @"http://www.w3.org/2000/09/xmldsig-more#rsa-sha256"; string digestMethod = @"http://www.w3.org/2001/04/xmlenc#sha256"; string signatureReferenceURI = "#" + id; CryptoConfig.AddAlgorithm(typeof(RSAPKCS1SHA256SignatureDescription), signatureMethod); XmlDocument xmlDocToSign = new XmlDocument(); xmlDocToSign.LoadXml(pDocument); SignedXml signer = new SignedXml(xmlDocToSign); var key = (RSACryptoServiceProvider)pCertificado.PrivateKey; key.PersistKeyInCsp = false; signer.SigningKey = key; signer.SignedInfo.SignatureMethod = signatureMethod; Reference reference = new Reference(); reference.AddTransform(new XmlDsigEnvelopedSignatureTransform()); XmlDsigExcC14NTransform cn14Transform = new XmlDsigExcC14NTransform(); cn14Transform.Algorithm = signatureCn14Transform; reference.AddTransform(cn14Transform); reference.Uri = signatureReferenceURI; reference.DigestMethod = digestMethod; signer.AddReference(reference); KeyInfo keyInfo = new KeyInfo(); keyInfo.AddClause(new KeyInfoX509Data(pCertificado)); signer.KeyInfo = keyInfo; signer.ComputeSignature(); xmlDocToSign.DocumentElement.AppendChild(signer.GetXml()); return xmlDocToSign.OuterXml; }



    • Editado ChMarisco segunda-feira, 2 de maio de 2016 11:33
    • Tipo Alterado Marcos SJ segunda-feira, 2 de maio de 2016 13:41 How to
    segunda-feira, 2 de maio de 2016 11:32