[SP-pm] NFe: Assinatura digital em arquivos XML

Jorge Augusto Senger jasenger at gmail.com
Mon Mar 2 08:56:36 PST 2009


Olá pessoal,

Aqui na empresa, nosso sistema de emissão de notas fiscais eletrônicas está
indo bem.

Estamos utilizando o XML::Compile::Schema para criar os XMLs a partir dos
schemas fornecidos pelo fisco. O Daniel Ruoso me ajudou bastante a entender
o funcionamento deste módulo.

Agora que conseguimos adequar as informações para o que é exigido pelos
schemas, estamos com um novo desafio que gostaria de compartilhar com os
colegas: a assinatura eletrônica do arquivo. Alguém aqui já precisou fazer
isso?

Segundo o manual da NFe, os arquivos XML precisam tags que correspondem a
assinatura do documento, conforme um exemplo abaixo:

--------------------------------------

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
                <CanonicalizationMethod Algorithm="
http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
                <SignatureMethod Algorithm="
http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
                <Reference
URI="#NFe31060243816719000108550000000010001234567897">
                        <Transforms>
                                <Transform Algorithm="
http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                                <Transform Algorithm="
http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
                        </Transforms>
                        <DigestMethod Algorithm="
http://www.w3.org/2000/09/xmldsig#sha1"/>

<DigestValue>vFL68WETQ+mvj1aJAMDx+oVi928=</DigestValue>
                </Reference>
        </SignedInfo>
        <SignatureValue>IhXNhbdL1F9UGb2ydVc5v/gTB/y6r0KIFaf5evUi1i
...</SignatureValue>
        <KeyInfo>
                <X509Data>

<X509Certificate>MIIFazCCBFOgAwIBAgIQaHEfNaxSeOEvZGlVDANB ...
</X509Certificate>
                </X509Data>
        </KeyInfo>
</Signature>

--------------------------------------

Nós possuímos um certificado digital, que foi exportado para um arquivo do
tipo PKCS12 que já consegui ler usando Crypt::X509. Mas o que ainda não
entendi é como eu vou gerar os hashes a partir deste certificado. Alguém
pode me dar uma luz?

Obrigado desde já,


-- 
Jorge Augusto Senger
jasenger (at) gmail.com
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090302/160e0484/attachment.html>


More information about the SaoPaulo-pm mailing list