From d9ca484cf4ebb9732c2a0fdc0b5651d2d0c566ac Mon Sep 17 00:00:00 2001 From: "Luiz Henrique B. Crivelli" Date: Wed, 10 Apr 2024 19:31:53 -0300 Subject: [PATCH] Update certificado.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit caso certificado seja binário (esteja já carregado em memória (ex.: salvo em bin numa base de dados), ler direto do binario caso contrário (é uma string) mantem a leitura do arquivo --- pynfe/entidades/certificado.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/pynfe/entidades/certificado.py b/pynfe/entidades/certificado.py index 9e6dad2..119deac 100644 --- a/pynfe/entidades/certificado.py +++ b/pynfe/entidades/certificado.py @@ -42,19 +42,22 @@ def separar_arquivo(self, senha, caminho=False): Se caminho for True grava na pasta temporaria e retorna o caminho dos arquivos, senao retorna o objeto. Apos o uso devem ser excluidos com o metodo excluir. """ - - try: - with open(self.caminho_arquivo, "rb") as cert_arquivo: - cert_conteudo = cert_arquivo.read() - except (PermissionError, FileNotFoundError) as exc: - raise Exception( - """Falha ao abrir arquivo do certificado digital A1. - Verifique local e permissoes do arquivo.""" - ) from exc - except Exception as exc: - raise Exception( - "Falha ao abrir arquivo do certificado digital A1. Causa desconhecida." - ) from exc + + if type(self.caminho_arquivo) is bytes: + cert_conteudo = self.caminho_arquivo + else: + try: + with open(self.caminho_arquivo, "rb") as cert_arquivo: + cert_conteudo = cert_arquivo.read() + except (PermissionError, FileNotFoundError) as exc: + raise Exception( + """Falha ao abrir arquivo do certificado digital A1. + Verifique local e permissoes do arquivo.""" + ) from exc + except Exception as exc: + raise Exception( + "Falha ao abrir arquivo do certificado digital A1. Causa desconhecida." + ) from exc if not isinstance(senha, bytes): senha = str.encode(senha)