Quais as opções que temos hoje pra assinar XML, além da Capicom ?
Pelo que tenho visto por aqui, o ACBR ainda tem a versão capicom.
Então pergunto: quais as opções hoje pra assinar XML SEM fazer uso da capicom?

Moderador: Moderadores
quais as opções hoje pra assinar XML SEM fazer uso da capicom?
ACBr_NFe_CAPICOM: Usa as DLLs da Microsfot CAPICOM (conexão segura) e MSXML (Assinatura e validação do XML) - Apenas funciona no Delphi e Windows. Funciona com certificados do tipo A1 e A3.
ACBr_NFe_OpenSSL: Usa Projetos OpenSource: Synapse+OpenSSL (conexão segura) e LibXml2 + XmlSEC (Assinatura e validação do XML) - Atualmente compatÃvel com Delphi, mas será compatÃvel com Lazarus, Kylix e com Linux. Funciona apenas com certificados do tipo A1.
O processo de se calcular o DigestValue de um arquivo XML não se resume a calcular o hash desse arquivo, mas possui outros passos intermediários:
Colocar o documento na forma canônica, tal como apontado por @Anthony Accioly;
Aplicar quaisquer transformações especificadas em Reference/Transforms. Se não há nenhum elemento Transforms, ou o mesmo está vazio (sem sub-elementos), então nada precisa ser feito.
Certifique-se que esses passos foram corretamente adotados e, se ainda tiver problemas em conseguir um resultado correto, acrescente mais detalhes à sua pergunta de modo a podermos ajudar mais (se possÃvel mostrando o SignedInfo que quer atingir, um link para o arquivo XML e uma descrição dos passos e ferramentas que utilizou).
Nota: minha resposta anterior (em arquivo) não se aplica aqui, pois de fato o DigestValue é um simples hash e não uma assinatura digital (portanto invariante à presença ou não de um certificado).
Faltou um passo importante que é canonizar o XML. Recomendo o uso da classe Canonicalizer do projeto Apache Santuario (na verdade, eu não faria nada na mão, usaria essa biblioteca para tudo). Sobre o algoritmo basta aplicar um SHA1 para obter os bits (não a assinatura em HEX) e, em cima desses bits obter a Base64 da assinatura. A biblioteca Apache Commons Codec tem tudo que você precisa para a segunda parte. –
É para codificar em SHA1 e conveter em base64 eu utilizo essas bibliotecas que você citou.
Como calcular o DigestValue do XML? => É um cálculo BaseEncode64 feito em cima dos bits resultantes do cálculo SHA1 feito em cima do XML canonizado.
Retornar para Legislação Fiscal e Tributária
Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes