Skip to main content

Biblioteca para uso com o eSocial

Project description

LIBeSocial

Biblioteca em Python para lidar com os processos do eSocial:

  • Validação dos XML's dos eventos;
  • Comunicação com o Webservices do eSocial para envio e consulta de lotes;
  • Assinatura dos XML's (e conexão com o webservices) com certificado tipo A1.

Apesar desta biblioteca ter sido desenvolvida para lidar especialmente com os eventos de SST (Saúde e Segurança do Trabalho), nada impede que ela possa ser utilizada para enviar/validar quaisquer dos eventos disponíveis no projeto eSocial.

No momento só é possível utilizar assinaturas do tipo A1 em arquivos no formato PKCS#12 (geralmente arquivos com extensão .pfx ou .p12).

Instalação

PyPi:

pip install libesocial

A versão mais recente diretamente do repositório:

pip install https://github.com/qualitaocupacional/libesocial/archive/master.zip

Ou você pode clonar este repositório:

git clone https://github.com/qualitaocupacional/libesocial

Entrar na pasta do repositório recém clonado:

> cd libesocial
> python setup.py install

Uso básico

Assinando um evento

import esocial.xml
import esocial.utils

cert_data = esocial.utils.pkcs12_data('my_cert_file.pfx', 'my password')
evt2220 = esocial.xml.load_fromfile('S2220.xml')

# Signing using the signature algorithms from eSocial documentation
evt2220_signed = esocial.xml.sign(evt2220, cert_data)

Validando um evento

import esocial.xml

evt2220 = esocial.xml.load_fromfile('S2220.xml')
try:
    esocial.xml.XMLValidate(evt2220).validate()
except AssertionError as e:
    print('O XML do evento S-2220 é inválido!')
    print(e)

ou

import esocial.xml

evt2220 = esocial.xml.load_fromfile('S2220.xml')
xmlschema = esocial.xml.XMLValidate(evt2220)
if xmlschema.isvalid():
    print('XML do evento é válido! :-D.')
else:
    print('O XML do evento S-2220 é inválido!')
    print(str(xmlschema.last_error))

OBSERVAÇÃO: Até o presente momento (15/05/2018), a SignXML, versão 2.5.2 que está no PyPi não está alinhada com a versão mais atual da Cryptography:

(...)/site-packages/signxml/__init__.py:370: CryptographyDeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.
  signer = key.signer(padding=PKCS1v15(), algorithm=hash_alg)

Isso não atrapalha o funcionamento da LIBeSocial, mas é um aviso de que no futuro essa função não vai mais funcionar. Você pode instalar a mesma versão 2.5.2 da SignXML diretamente do repositório oficial, onde esta issue já foi corrigida:

pip install https://github.com/XML-Security/signxml/archive/master.zip

Requisitos

A LIBeSocial requer as seguintes bibliotecas Python:

  • requests >= 2.7.0
  • lxml >= 4.2.1
  • zeep >= 2.5.0
  • pyOpenSSL >= 17.5.0
  • signxml >= 2.5.2
  • six >= 1.11.0

Licença

A LIBeSocial é um projeto de código aberto, desenvolvido pelo departamento de Pesquisa e Desenvolvimento e Tecnologia da Informação da Qualitá Segurança e Saúde Ocupacional e está licenciada pela Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
libesocial-0.0.1rc1-py2.py3-none-any.whl (171.6 kB) Copy SHA256 hash SHA256 Wheel py2.py3
libesocial-0.0.1rc1.tar.gz (116.6 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page