From e90295b622e05db2e25d18275bec30b2d4ad0227 Mon Sep 17 00:00:00 2001 From: leotada Date: Tue, 14 Jul 2015 00:08:10 -0300 Subject: [PATCH] =?UTF-8?q?mudan=C3=A7a=20na=20assinatura?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pynfe/entidades/certificado.py | 6 +- pynfe/processamento/assinatura.py | 6 +- test.py | 6 +- texte.xml | 141 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 texte.xml diff --git a/pynfe/entidades/certificado.py b/pynfe/entidades/certificado.py index 2f7fe67..aeb28cb 100644 --- a/pynfe/entidades/certificado.py +++ b/pynfe/entidades/certificado.py @@ -16,7 +16,7 @@ class Certificado(Entidade): if cls == Certificado: raise Exception('Esta classe nao pode ser instanciada diretamente!') else: - return super(Certificado, cls).__new__(cls, *args, **kwargs) + return super(Certificado, cls).__new__(cls) class CertificadoA1(Certificado): u"""Implementa a entidade do certificado eCNPJ A1, suportado pelo OpenSSL, @@ -38,7 +38,9 @@ class CertificadoA1(Certificado): caminho_chave = caminho_chave or os.path.join(self.pasta_temporaria, self.arquivo_chave) caminho_cert = caminho_cert or os.path.join(self.pasta_temporaria, self.arquivo_cert) - + + import pdb + pdb.set_trace() # Lendo o arquivo pfx no formato pkcs12 como binario pkcs12 = crypto.load_pkcs12(open(self.caminho_arquivo, 'rb').read(), senha) diff --git a/pynfe/processamento/assinatura.py b/pynfe/processamento/assinatura.py index 3efbc96..14e7b08 100644 --- a/pynfe/processamento/assinatura.py +++ b/pynfe/processamento/assinatura.py @@ -26,11 +26,11 @@ class AssinaturaA1(Assinatura): digital no XML informado.""" def assinar_nfe(self, xml): - arquivo_cert = CertificadoA1("cert.pfx") - key, cert = arquivo_cert.separar_arquivo('12345678') + arquivo_cert = CertificadoA1(self.certificado) + key, cert = arquivo_cert.separar_arquivo(self.senha) #cert = open("cert.pem").read() #key = open("key.pem", "rb").read() - + # converte xml para bytes antes do parse root = etree.parse(xml).getroot() signer = signxml.xmldsig(root, digest_algorithm="sha1") signer.sign(method=signxml.methods.enveloped, key=key, cert=cert, diff --git a/test.py b/test.py index 33118e4..e0d8fb5 100644 --- a/test.py +++ b/test.py @@ -103,10 +103,10 @@ nota_fiscal.adicionar_produto_servico(codigo='000328', # id do produto (000328 e #_fonte_dados.adicionar_objeto(nota_fiscal) serializador = SerializacaoXML(_fonte_dados, homologacao=True) -xml= serializador.exportar(retorna_string=True) -arquivo = open('nota1.xml', 'wb') +xml = serializador.exportar(retorna_string=True) +arquivo = open('texte.xml', 'wb') arquivo.write(xml) -certificado = '/home/junior/Projetos/falcao/doc/JC FERRAGENS S=12345678.pfx' +certificado = "cert.pfx" senha = '12345328' # assinatura a = AssinaturaA1(certificado, senha) diff --git a/texte.xml b/texte.xml new file mode 100644 index 0000000..52d47b0 --- /dev/null +++ b/texte.xml @@ -0,0 +1,141 @@ + + + + 41 + 66998237 + VENDA ASSINATURAS + 1 + 55 + 1 + 1 + 2015-07-14T00:03:20-03:00 + 2015-07-14T00:03:20-03:00 + 1 + 1 + 4118402 + 1 + 1 + + 2 + 1 + 3 + PyNFe 0.1 + + + 08234482000156 + Spring Publicacoes Ltda + Falcao Ferragens + 149431130117 + + RUA FERREIRA DE ARAUJO + 202 + 9o andar - cj 91/92 + PINHEIROS + 3550308 + SAO PAULO + SP + 05428000 + 1058 + Brasil + + + + + 12345678900 + MARIANA CARVALHO SILVA + ISENTO + + Rua dos Bobos + Zero + Ao lado de lugar nenhum + Aquele Mesmo + 5300108 + Brasilia + DF + 12345123 + 1058 + Brasil + 11912341234 + + + + + 000328 + + Assinatura Rolling Stone + 6922 + UN + 12 + 9.75 + 117.00 + + UN + 12 + 9.75 + + + + + 0 + + 41 + 0 + 0 + 0 + + + + + + 117.00 + 0.65 + 0.76 + + + + + 01 + 117.00 + 3.00 + 3.51 + + + + + + + 0 + 0 + 0 + 0 + 117.00 + 0 + 0 + 0 + 0 + 0 + 0.76 + 3.51 + 0 + 117.00 + + + + 0 + + + + + + + + + + + + + NF-e emitida de acordo com os termos do Convenio ICMS 24/2011. Assinatura Numero 8061746 + + + +