Metadata-Version: 1.1
Name: dfva-python
Version: 0.0.5
Summary: DFVA client for python.
Home-page: https://github.com/luisza/dfva_python
Author: Luis Zarate
Author-email: luis.zarate@solvosoft.com
License: GNU General Public License v3 (GPLv3)
Description: dfva cliente para python
        #############################
        
        Este cliente permite comunicarse con DFVA_ para proveer servicios de firma digital para Costa Rica a institutiones.
        
        .. _DFVA: https://github.com/luisza/dfva
        
        Instalación y configuración
        --------------------------------
        
        Instale mediante pypi:
        
        .. code:: bash
        
            pip install dfva-python
        
        También se puede instalar utilizando el código fuente
        
        .. code:: bash
        
           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:
        
        .. code:: python
        
           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
        
        .. code:: python
        
            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
        
        .. code:: python
        
            client.is_suscriptor_connected('04-0777-08888')
        
        
        Si se desea firmar y revisar estado de la firma.
        
        .. code:: python
        
            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
        
        .. code:: python
        
            client.validate(DOCUMENT, 'certificate')
            
        
        Si se desea validar un documento
        
        .. code:: python
        
            client.validate(DOCUMENT, 'document', 'cofirma')
            # cofirma, contrafirma, odf, msoffice, pdf
        
        
        Running tests
        ----------------
        
        Necesita instalar el gestor de pruebas 
        
        .. code:: python
        
            pip install nose
        
        
        Ejecute el simulador de FVA BCCR  y su cliente de celery
        
        EN FVA BCCR ejecute 
        
        .. code:: bash
        
            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
        
        .. code:: bash
        
            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
        
        .. code:: python
        
            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
        
        .. code:: bash
        
            export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
            export TEST_WITH_BCCR=True
        
Platform: OS Independent
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Development Status :: 4 - Beta
Classifier: Topic :: Security :: Cryptography
