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)
예제 #4
0
    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)
예제 #7
0
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)
예제 #8
0
    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)
예제 #9
0
    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
예제 #10
0
    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)
예제 #13
0
 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', '')
예제 #14
0
 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', '')