Skip to main content

dfva cliente para python

Este cliente permite comunicarse con DFVA para proveer servicios de firma digital para Costa Rica a institutiones.

Instalación y configuración

Instale mediante pypi:

pip install dfva-python

También se puede instalar utilizando el código fuente

git clone https://github.com/luisza/dfva_python.git
cd dfva_python
python setup.py install

Adicionalmente se crea un archivo de configuración en $HOME/.dfva_python/client.conf donde se ingresan los datos de la institución, una buena forma de crear este archivo es:

python
>>> from dfva_python.settings import Settings
>>> settings=Settings()
# a este punto ya se ha creado el archivo de configuración,
#pero puede ser de utilidad modificar las propiedades de la
# institución así
>>> settings.PRIVATE_KEY=''
>>> settings.SERVER_PUBLIC_KEY=''
>>> settings.PUBLIC_CERTIFICATE=''
>>> settings.CODE=''
>>> settings.URL_NOTIFY='N/D'
>>> settings.save()

Modo de uso

Este cliente permite:

  • Autenticar personas y verificar estado de autenticación

  • Firmar documento xml, odf, ms office y verificar estado de firma durante el tiempo que el usuario está firmando

  • Validar un certificado emitido con la CA nacional de Costa Rica provista por el BCCR

  • Validar un documento XML firmado.

  • Revisar si un suscriptor está conectado.

Ejemplo de uso

Nota: notificationURL debe estar registrado en dfva o ser N/D en clientes no web

Si se desea autenticar y revisar estado de la autenticación

from dfva_python.client import Client
client = Client()
auth_resp = client.authenticate('04-0212-0119')
print(auth_resp)
client.authenticate_check(auth_resp['id_transaction'])
# eliminando la peticion
client.authenticate_delete(auth_resp['id_transaction'])

Si se desea revisar si un suscriptor está conectado

client.is_suscriptor_connected('04-0777-08888')

Si se desea firmar y revisar estado de la firma.

DOCUMENT = '''IyEvYmluL2Jhc2gKCk5PRk9SQ0U9dHJ1ZQpBUFRfQ0FDSEU9IiIKCndoaWxlIGdldG9wdHMgY2h5
IG9wdGlvbgpkbwogY2FzZSAiJHtvcHRpb259IgogaW4KIHkpIE5PRk9SQ0U9ZmFsc2U7OwogYykg
QVBUX0NBQ0hFPXRydWU7OwogaCkgbXloZWxwCiAgICBleGl0IDAgOzsKIGVzYWMKZG9uZQoKaWYg
WyAkQVBUX0NBQ0hFIF07IHRoZW4gCiBlY2hvICJCSU5HTyIgCmZpCgo='''

sign_resp=client.sign( '04-0212-0119', DOCUMENT.encode(), "resumen ejemplo", _format='xml_cofirma')
# _format puede ser xml_cofirma, xml_contrafirma, odf, msoffice
print(sign_resp)
client.sign_check(sign_resp['id_transaction'])
# eliminando la peticion
client.sign_delete(auth_resp['id_transaction'])

Nota: La revisión de estado de la autenticación/firma no es necesaria en servicios web ya que estos son notificados por en la URL de institución proporcionado.

Si se desea validar un certificado

client.validate(DOCUMENT, 'certificate')

Si se desea validar un documento

client.validate(DOCUMENT, 'document', 'cofirma')
# cofirma, contrafirma, odf, msoffice, pdf

Running tests

Necesita instalar el gestor de pruebas

pip install nose

Ejecute el simulador de FVA BCCR y su cliente de celery

EN FVA BCCR ejecute

python manage.py runserver 8001
celery  -A fva_bccr worker  -l info

Puede ejecutar además celery beat para mayor exactitud, (‘’’celery -A fva_bccr worker -BE -l info’’’), aunque puede causar inestabilidad en las pruebas. También es importante acceder a http://localhost:8001/admin/constance/config/ y habilitar USE_UNITEST para que no espere el TASK_WAIT_TO_RESPONSE definido o poner un TASK_WAIT_TO_RESPONSE bajo como 1 segundo.

Por último ejecute las pruebas

nosetests -v --nocapture dfva_python.tests

Además se incluye un utilitario para generar las combinaciones de las pruebas con la finalidad de hacer más simple la codificación de los diferentes casos

from dfva_python.utils_test import build_test_document_python
build_test_document_python("TestAuthenticate")

Esto podría ser util para correr las pruebas cuando se conecta a BCCR

export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
export TEST_WITH_BCCR=True

Release files for dfva-python 0.0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dfva-python 0.0.7
File Size Uploaded
dfva_python-0.0.7.tar.gz 31.1 kB Details

Release files / dfva_python-0.0.7.tar.gz

Download URL dfva_python-0.0.7.tar.gz
Size 31.1 kB
Tags Source
SHA-256 checksum
How to use checksums
67a47d5b1c8f7bb774ee880205503eab7a38703c117ea2fe07162d69b1aba2c7
BLAKE2b-256 checksum
How to use checksums
10cc9113df062818137d5dd08bd2e3516f07e3163a3c7bbb748e91cdd46ef290
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.0.7 This release

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page