Package: dfva-python
dfva cliente para pythonEste cliente permite comunicarse conDFVApara proveer servicios de firma digital para Costa Rica a institutiones.Instalación y configuraciónInstale mediante pypi:pipinstalldfva-pythonTambién se puede instalar utilizando el código fuentegitclonehttps://github.com/luisza/dfva_python.gitcddfva_pythonpythonsetup.pyinstallAdicionalmente 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>>>fromdfva_python.settingsimportSettings>>>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 usoEste cliente permite:Autenticar personas y verificar estado de autenticaciónFirmar documento xml, odf, ms office y verificar estado de firma durante el tiempo que el usuario está firmandoValidar un certificado emitido con la CA nacional de Costa Rica provista por el BCCRValidar un documento XML firmado.Revisar si un suscriptor está conectado.Ejemplo de usoNota:notificationURL debe estar registrado en dfva o ser N/D en clientes no webSi se desea autenticar y revisar estado de la autenticaciónfromdfva_python.clientimportClientclient=Client()auth_resp=client.authenticate('04-0212-0119')print(auth_resp)client.authenticate_check(auth_resp['id_transaction'])# eliminando la peticionclient.authenticate_delete(auth_resp['id_transaction'])Si se desea revisar si un suscriptor está conectadoclient.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, msofficeprint(sign_resp)client.sign_check(sign_resp['id_transaction'])# eliminando la peticionclient.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 certificadoclient.validate(DOCUMENT,'certificate')Si se desea validar un documentoclient.validate(DOCUMENT,'document','cofirma')# cofirma, contrafirma, odf, msoffice, pdfRunning testsNecesita instalar el gestor de pruebaspipinstallnoseEjecute el simulador de FVA BCCR  y su cliente de celeryEN FVA BCCR ejecutepythonmanage.pyrunserver8001celery-Afva_bccrworker-linfoPuede 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 ahttp://localhost:8001/admin/constance/config/y habilitarUSE_UNITESTpara que no espere elTASK_WAIT_TO_RESPONSEdefinido o
poner unTASK_WAIT_TO_RESPONSEbajo como 1 segundo.Por último ejecute las pruebasnosetests-v--nocapturedfva_python.testsAdemá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 casosfromdfva_python.utils_testimportbuild_test_document_pythonbuild_test_document_python("TestAuthenticate")Esto podría ser util para correr las pruebas cuando se conecta a BCCRexportREQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crtexportTEST_WITH_BCCR=True