galera, estou fazendo o envio de nota fiscal pra Recife, depois de muita luta, e muita pesquisa, conseguí assinar o XML,
mas com aprendi tentando solucionar isso, percebí que estava fazendo a assinatura do RPS de forma errada.
me deparei com os dois passos da documentação:
“3º - Gere o HASH (array de bytes) utilizando SHA1.
4º - Assine o HASH (array de bytes) utilizando RSA-SHA1.
ATENÇÃO! Na maioria das linguagens de programação, os passos 3 e 4 são feitos através de uma
única função. Verifique a documentação de sua linguagem para evitar assinar um hash de um hash.”
esse HASH são dados do própido RPS, isso já está funcionando, eu já procurei muito, e ninguem sabe me dizer como eu faço esses 2 passos que na documentação parece ser a coisa mais simples do mundo…
pesquisei em alguns cantos e cheguei a isso
try {
Signature dsa = Signature.getInstance("SHA1withRSA");
/* Initializing the object with a private key */
dsa.initSign(privateKey);
/* Update and sign the data */
dsa.update(hashSHA);
byte[] sig = dsa.sign();
sig = Base64.encodeBase64(sig);
result = new String(sig);
} catch (Exception e) {
e.printStackTrace();
}
mas isso me retorna algo parecido com isso : A46erP1KpX0j60GjJLq++xb/VqK3A2qNBMyMohB5mjVF/VPM+512Ta00cfSgr9iy9jUWN6AzW0Q3pFWdxpeDqGN+GqT4V0WYf/e6d1jK+Uf+KHY08GIB4XA8CcJOWTNwSG5bqdTRKgBnoz2Q/kI/dS2Bte9yWFS7TaJwL6yslgI=
que eu acho que venha a ser o SignatureValue, mas na verdade eu não precisaria da assinatura completa ?
algo mais ou menos assim?
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>IOeFFhL/u2ReYKoPigqprk7dTL4=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>JF1LdpxewsPQ7T0mMpmE6iwTHPD5qSvSfPIzAQi26aGh7AfI/KAklyqdKfc/gdxR5xk9kgrJNBusHrCa9eImO86PWOogUm3/1D0nb+smcN1HMhUKQzxft0b/ketR1Zp8VZSgv2Aifzj60ZURN/hKSB3vB0uupbHuNQp3yRQ7UoY=</SignatureValue>
<KeyInfo>
<X509Data>
<X509SubjectName>// DADOS DO CERTIFICADO</X509SubjectName>
<X509Certificate>// DADOS DO CERTIFICADO</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>