def test_assinatura_nfe_pdf(): certificado = Certificado(certificado_nfe_caminho, certificado_nfe_senha, raise_expirado=False) assinador = Assinatura(certificado) nome_arquivo_pdf = test_path + 'files/google.pdf' arquivo = open(nome_arquivo_pdf, 'rb').read() dados_assinatura = { 'sigflags': 3, 'contact': 'KMEE INFORMATICA LTDA', 'location': 'BR', 'signingdate': str.encode(datetime.utcnow().strftime("%Y%M%d%H%M%S%Z")), 'reason': 'Teste assinatura', } assinatura = assinador.assina_pdf( arquivo=arquivo, dados_assinatura=dados_assinatura, ) file_temp = tempfile.gettempdir() + '/google-signed-nfe.pdf' with open(file_temp, 'wb') as fp: fp.write(arquivo) fp.write(assinatura)
def test_assinatura_nfe_pdf(): certificado = Certificado(certificado_nfe_caminho, certificado_nfe_senha, raise_expirado=False) assinador = Assinatura(certificado) nome_arquivo = 'tests/files/google.pdf' arquivo = open(nome_arquivo, 'rb').read() dados_assinatura = { b'sigflags': 3, b'contact': b'KMEE INFORMATICA LTDA', b'location': b'BR', b'signingdate': str.encode(datetime.now(get_localzone()).strftime("%Y%M%d%H%M%S%Z")), b'reason': b'Teste assinatura', } assinatura = assinador.assina_pdf( arquivo=arquivo, dados_assinatura=dados_assinatura, ) with open('/tmp/google-signed-nfe.pdf', 'wb') as fp: fp.write(arquivo) fp.write(assinatura)
def test_positive_signature_string(self): certificado = Certificado(certificado_nfe_caminho, certificado_nfe_senha, raise_expirado=False) assinador = Assinatura(certificado) text = 'test of signature'.encode('utf-8') signature = assinador.assina_string(text) result = assinador.verificar_assinatura_string(text, signature) self.assertEqual(result, None)
def assina_raiz(self, raiz, id, getchildren=False): xml_string, xml_etree = self._generateds_to_string_etree(raiz) xml_assinado = Assinatura(self._transmissao.certificado).assina_xml2( xml_etree, id, getchildren) if isinstance(xml_assinado, bytes): xml_assinado = xml_assinado.decode('utf-8') return xml_assinado.replace('\n', '').replace('\r', '')
def test_false_positive_signature_string(self): certificado = Certificado(certificado_nfe_caminho, certificado_nfe_senha, raise_expirado=False) assinador = Assinatura(certificado) text = 'test of signature'.encode('utf-8') text1 = 'test of signature1'.encode('utf-8') signature1 = assinador.assina_string(text1) with self.assertRaises(InvalidSignature): assinador.verificar_assinatura_string(text, signature1)
def test_assinatura_xml_nfe400(): certificado = Certificado(certificado_nfe_caminho, certificado_nfe_senha, raise_expirado=False) assinador = Assinatura(certificado) nome_arquivo = 'tests/files/nfe-400.xml' arquivo = open(nome_arquivo, 'rb').read() assinatura = assinador.assina_xml( arquivo=arquivo, ) with open('/tmp/nfe-400-signed.xml', 'wb') as fp: fp.write(arquivo) fp.write(assinatura)
def test_assinatura_xml_nfe400(): certificado = Certificado(certificado_nfe_caminho, certificado_nfe_senha, raise_expirado=False) assinador = Assinatura(certificado) nome_arquivo = os.environ.get('file_nfe_400', 'tests/files/nfe-400.xml') arquivo = open(nome_arquivo, 'rb').read() assinatura = assinador.assina_xml(arquivo) file_temp = tempfile.gettempdir() + '/nfe-400-signed.xml' with open(file_temp, 'wb') as fp: fp.write(arquivo) fp.write(assinatura)
def envia_documento(self, edoc): """ Exportar o documento Assinar o documento Adicionar o mesmo ao envio :param edoc: :return: """ xml_string, xml_etree = self._generateds_to_string_etree(edoc) xml_assinado = Assinatura(self.certificado).assina_xml2( xml_etree, edoc.infMDFe.Id) raiz = enviMDFe.TEnviMDFe( versao='4.00', idLote=datetime.datetime.now().strftime('%Y%m%d%H%M%S'), ) raiz.original_tagname_ = 'enviMDFe' xml_envio_string, xml_envio_etree = self._generateds_to_string_etree( raiz) xml_envio_etree.append(etree.fromstring(xml_assinado)) return self._post( xml_envio_etree, 'https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFerecepcao/MDFeRecepcao.asmx?wsdl', 'mdfeRecepcaoLote', enviMDFe)
def _prepara_envia_documento(self, edoc): for rps in edoc.RPS: rps.Assinatura = Assinatura( self._transmissao.certificado).assina_tag(rps.Assinatura) xml_assinado = self.assina_raiz(edoc, '') return xml_assinado
def _prepara_cancelar_nfse_envio(self, doc_numero): numero_nfse = doc_numero.get('numero_nfse') codigo_verificacao = doc_numero.get('codigo_verificacao') or '' assinatura = self.im_prestador.zfill(8) assinatura += numero_nfse.zfill(12) raiz = PedidoCancelamentoNFe.PedidoCancelamentoNFe( Cabecalho=PedidoCancelamentoNFe.CabecalhoType( Versao=1, CPFCNPJRemetente=PedidoConsultaNFe.tpCPFCNPJ( CNPJ=self.cnpj_prestador), ), Detalhe=[ PedidoCancelamentoNFe.DetalheType( ChaveNFe=PedidoCancelamentoNFe.tpChaveNFe( InscricaoPrestador=int(self.im_prestador), NumeroNFe=int(numero_nfse), CodigoVerificacao=codigo_verificacao.zfill(8), ), AssinaturaCancelamento=assinatura, ) ], ) for detalhe in raiz.Detalhe: detalhe.AssinaturaCancelamento = Assinatura( self._transmissao.certificado).assina_tag( detalhe.AssinaturaCancelamento) xml_assinado = self.assina_raiz(raiz, '') return xml_assinado
def test_assinatura_multipla_pdf(): ecpf = Certificado(certificado_ecpf_caminho, certificado_ecpf_senha, raise_expirado=False) assinador_ecpf = Assinatura(ecpf) nome_arquivo = 'tests/files/google.pdf' arquivo = open(nome_arquivo, 'rb').read() dados_assinatura = { b'sigflags': 3, b'contact': b'Luis Felipe Mileo', b'location': b'BR', b'signingdate': str.encode(datetime.now(get_localzone()).strftime("%Y%M%d%H%M%S%Z")), b'reason': b'Teste Assinatura CPF', } assinatura1 = assinador_ecpf.assina_pdf( arquivo=arquivo, dados_assinatura=dados_assinatura, ) nome_arquivo = '/tmp/google-signed-multiple-1.pdf' with open(nome_arquivo, 'wb') as fp: fp.write(arquivo) fp.write(assinatura1) arquivo2 = open(nome_arquivo, 'rb').read() nfe = Certificado(certificado_nfe_caminho, certificado_nfe_senha, raise_expirado=False) assinador_nfe = Assinatura(nfe) dados_assinatura = { b'sigflags': 3, b'contact': b'KMEE INFORMATICA LTDA', b'location': b'BR', b'signingdate': str.encode(datetime.now(get_localzone()).strftime("%Y%M%d%H%M%S%Z")), b'reason': b'Teste Assinatura CNPJ', } assinatura2 = assinador_nfe.assina_pdf( arquivo=arquivo2, dados_assinatura=dados_assinatura, ) with open('/tmp/google-signed-multiple-1.pdf', 'wb') as fp: fp.write(arquivo2) fp.write(assinatura2)
def test_assinatura_multipla_pdf(): ecpf = Certificado(certificado_ecpf_caminho, certificado_ecpf_senha, raise_expirado=False) assinador_ecpf = Assinatura(ecpf) nome_arquivo = test_path + 'files/google.pdf' arquivo = open(nome_arquivo, 'rb').read() dados_assinatura = { 'sigflags': 3, 'contact': 'Luis Felipe Mileo', 'location': 'BR', 'signingdate': str.encode(datetime.utcnow().strftime("%Y%M%d%H%M%S%Z")), 'reason': 'Teste Assinatura CPF', } assinatura1 = assinador_ecpf.assina_pdf( arquivo=arquivo, dados_assinatura=dados_assinatura, ) file_temp = tempfile.gettempdir() + '/google-signed-multiple-1.pdf' with open(file_temp, 'wb') as fp: fp.write(arquivo) fp.write(assinatura1) arquivo2 = open(nome_arquivo, 'rb').read() nfe = Certificado(certificado_nfe_caminho, certificado_nfe_senha, raise_expirado=False) assinador_nfe = Assinatura(nfe) dados_assinatura = { 'sigflags': 3, 'contact': 'KMEE INFORMATICA LTDA', 'location': 'BR', 'signingdate': str.encode(datetime.utcnow().strftime("%Y%M%d%H%M%S%Z")), 'reason': 'Teste Assinatura CNPJ', } assinatura2 = assinador_nfe.assina_pdf( arquivo=arquivo2, dados_assinatura=dados_assinatura, ) file_temp = tempfile.gettempdir() + '/google-signed-multiple-1.pdf' with open(file_temp, 'wb') as fp: fp.write(arquivo2) fp.write(assinatura2)
def assina_raiz(self, raiz, id): xml_string, xml_etree = self._generateds_to_string_etree(raiz) xml_assinado = Assinatura(self._transmissao.certificado).assina_xml2( xml_etree, id) return xml_assinado.decode('utf-8').replace('\n', '').replace('\r', '')
def assina_raiz(self, raiz, id, getchildren=False): xml_string, xml_etree = self._generateds_to_string_etree(raiz) xml_assinado = Assinatura( self._transmissao.certificado).assina_nfse(xml_etree) return xml_assinado return xml_assinado.replace('\n', '').replace('\r', '')