Browse Source

mudança na assinatura

pull/1/head
leotada 11 years ago
parent
commit
e90295b622
  1. 4
      pynfe/entidades/certificado.py
  2. 6
      pynfe/processamento/assinatura.py
  3. 6
      test.py
  4. 141
      texte.xml

4
pynfe/entidades/certificado.py

@ -16,7 +16,7 @@ class Certificado(Entidade):
if cls == Certificado: if cls == Certificado:
raise Exception('Esta classe nao pode ser instanciada diretamente!') raise Exception('Esta classe nao pode ser instanciada diretamente!')
else: else:
return super(Certificado, cls).__new__(cls, *args, **kwargs)
return super(Certificado, cls).__new__(cls)
class CertificadoA1(Certificado): class CertificadoA1(Certificado):
u"""Implementa a entidade do certificado eCNPJ A1, suportado pelo OpenSSL, u"""Implementa a entidade do certificado eCNPJ A1, suportado pelo OpenSSL,
@ -39,6 +39,8 @@ class CertificadoA1(Certificado):
caminho_chave = caminho_chave or os.path.join(self.pasta_temporaria, self.arquivo_chave) 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) 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 # Lendo o arquivo pfx no formato pkcs12 como binario
pkcs12 = crypto.load_pkcs12(open(self.caminho_arquivo, 'rb').read(), senha) pkcs12 = crypto.load_pkcs12(open(self.caminho_arquivo, 'rb').read(), senha)

6
pynfe/processamento/assinatura.py

@ -26,11 +26,11 @@ class AssinaturaA1(Assinatura):
digital no XML informado.""" digital no XML informado."""
def assinar_nfe(self, xml): 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() #cert = open("cert.pem").read()
#key = open("key.pem", "rb").read() #key = open("key.pem", "rb").read()
# converte xml para bytes antes do parse
root = etree.parse(xml).getroot() root = etree.parse(xml).getroot()
signer = signxml.xmldsig(root, digest_algorithm="sha1") signer = signxml.xmldsig(root, digest_algorithm="sha1")
signer.sign(method=signxml.methods.enveloped, key=key, cert=cert, signer.sign(method=signxml.methods.enveloped, key=key, cert=cert,

6
test.py

@ -103,10 +103,10 @@ nota_fiscal.adicionar_produto_servico(codigo='000328', # id do produto (000328 e
#_fonte_dados.adicionar_objeto(nota_fiscal) #_fonte_dados.adicionar_objeto(nota_fiscal)
serializador = SerializacaoXML(_fonte_dados, homologacao=True) 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) arquivo.write(xml)
certificado = '/home/junior/Projetos/falcao/doc/JC FERRAGENS S=12345678.pfx'
certificado = "cert.pfx"
senha = '12345328' senha = '12345328'
# assinatura # assinatura
a = AssinaturaA1(certificado, senha) a = AssinaturaA1(certificado, senha)

141
texte.xml

@ -0,0 +1,141 @@
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe versao="3.10" Id="NFe41150708234482000156550010000000011669982376">
<ide>
<cUF>41</cUF>
<cNF>66998237</cNF>
<natOp>VENDA ASSINATURAS</natOp>
<indPag>1</indPag>
<mod>55</mod>
<serie>1</serie>
<nNF>1</nNF>
<dhEmi>2015-07-14T00:03:20-03:00</dhEmi>
<dhSaiEnt>2015-07-14T00:03:20-03:00</dhSaiEnt>
<tpNF>1</tpNF>
<idDest>1</idDest>
<cMunFG>4118402</cMunFG>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV></cDV>
<tpAmb>2</tpAmb>
<finNFe>1</finNFe>
<procEmi>3</procEmi>
<verProc>PyNFe 0.1</verProc>
</ide>
<emit>
<CNPJ>08234482000156</CNPJ>
<xNome>Spring Publicacoes Ltda</xNome>
<xFant>Falcao Ferragens</xFant>
<IE>149431130117</IE>
<enderEmit>
<xLgr>RUA FERREIRA DE ARAUJO</xLgr>
<nro>202</nro>
<xCpl>9o andar - cj 91/92</xCpl>
<xBairro>PINHEIROS</xBairro>
<cMun>3550308</cMun>
<xMun>SAO PAULO</xMun>
<UF>SP</UF>
<CEP>05428000</CEP>
<cPais>1058</cPais>
<xPais>Brasil</xPais>
<fone></fone>
</enderEmit>
</emit>
<dest>
<CPF>12345678900</CPF>
<xNome>MARIANA CARVALHO SILVA</xNome>
<IE>ISENTO</IE>
<enderDest>
<xLgr>Rua dos Bobos</xLgr>
<nro>Zero</nro>
<xCpl>Ao lado de lugar nenhum</xCpl>
<xBairro>Aquele Mesmo</xBairro>
<cMun>5300108</cMun>
<xMun>Brasilia</xMun>
<UF>DF</UF>
<CEP>12345123</CEP>
<cPais>1058</cPais>
<xPais>Brasil</xPais>
<fone>11912341234</fone>
</enderDest>
</dest>
<det nItem="1">
<prod>
<cProd>000328</cProd>
<cEAN></cEAN>
<xProd>Assinatura Rolling Stone</xProd>
<CFOP>6922</CFOP>
<uCom>UN</uCom>
<qCom>12</qCom>
<vUnCom>9.75</vUnCom>
<vProd>117.00</vProd>
<cEANTrib></cEANTrib>
<uTrib>UN</uTrib>
<qTrib>12</qTrib>
<vUnTrib>9.75</vUnTrib>
</prod>
<imposto>
<ICMS>
<ICMS>
<orig>0</orig>
<CST></CST>
<modBC>41</modBC>
<vBC>0</vBC>
<pICMS>0</pICMS>
<vICMS>0</vICMS>
</ICMS>
</ICMS>
<PIS>
<PISAliq>
<CST></CST>
<vBC>117.00</vBC>
<pPIS>0.65</pPIS>
<vPIS>0.76</vPIS>
</PISAliq>
</PIS>
<COFINS>
<COFINSAliq>
<CST>01</CST>
<vBC>117.00</vBC>
<pCOFINS>3.00</pCOFINS>
<vCOFINS>3.51</vCOFINS>
</COFINSAliq>
</COFINS>
</imposto>
</det>
<total>
<ICMSTot>
<vBC>0</vBC>
<vICMS>0</vICMS>
<vBCST>0</vBCST>
<vST>0</vST>
<vProd>117.00</vProd>
<vFrete>0</vFrete>
<vSeg>0</vSeg>
<vDesc>0</vDesc>
<vII>0</vII>
<vIPI>0</vIPI>
<vPIS>0.76</vPIS>
<vCOFINS>3.51</vCOFINS>
<vOutro>0</vOutro>
<vNF>117.00</vNF>
</ICMSTot>
</total>
<transp>
<modFrete>0</modFrete>
<veicTransp>
<placa></placa>
<UF></UF>
<RNTC></RNTC>
</veicTransp>
<reboque>
<placa></placa>
<UF></UF>
<RNTC></RNTC>
</reboque>
</transp>
<infAdic>
<infAdFisco>NF-e emitida de acordo com os termos do Convenio ICMS 24/2011. Assinatura Numero 8061746</infAdFisco>
<infCpl></infCpl>
</infAdic>
</infNFe>
</NFe>
Loading…
Cancel
Save