Exemplo n.º 1
0
    def person_show(self, request, *args, **kwargs):
        """
        ::

          POST /authenticate/{code}/person_show/

        Solicita un estado de la solicitud de autenticación para un usuario 

        Los valores a suministrar en el parámetro data son:

        * **person:** identificación de la persona solicitante de autenticación,
        * **identification:** Identificación de la persona a autenticar,
        * **request_datetime:** Hora de petición en formato '%Y-%m-%d %H:%M:%S', osea  '2006-10-25 14:30:59'

        Data es un diccionario, osea un objeto de tipo clave -> valor

        Los valores devueltos son: 

        * **expiration_datetime:** hora final de validez
        * **request_datetime:** Hora de recepción de la solicitud
        * **id_transaction:** Id de trasnacción en el FVA del BCCR
        * **status:** Código de error de la transacción
        * **identification:** Identificador del suscriptor
        * **code:** Código para mostrar al usuario
        * **received_notification** True si la autenticación ha sido procesada, False si está esperando al usuario
        """
        ip = get_ip(request)
        logger.debug('Authentication: Show Person %s %r' % (ip, request.data))
        logger.info('Authentication: Show Person %s %s %s %s' %
                    get_log_person_information(request))
        return self.show(request, *args, **kwargs)
Exemplo n.º 2
0
    def person_show(self, request, *args, **kwargs):
        """
        ::

          POST /sign/{code}/person_show/

        Verifica la firma dado un código y su respectiva identificación

        Los valores a suministrar en el parámetro data son:

        * **person:** identificación de la persona solicitante de firma,
        * **identification:** Identificación de la persona a autenticar,
        * **request_datetime:** Hora de petición en formato '%Y-%m-%d %H:%M:%S', osea  '2006-10-25 14:30:59'

        Data es un diccionario, osea un objeto de tipo clave -> valor

        Los valores devueltos son: 

        * **expiration_datetime:** hora final de validez
        * **request_datetime:** Hora de recepción de la solicitud
        * **id_transaction:** Id de trasnacción en el FVA del BCCR
        * **sign_document:** Normalmente None, es un campo para almacenar el documento, pero no se garantiza que venga el documento firmado
        * **status:** Código de error de la transacción
        * **identification:** Identificador del suscriptor
        * **code:** Código para mostrar al usuario
        * **received_notification** True si la autenticación ha sido procesada, False si está esperando al usuario

        """
        ip = get_ip(request)
        logger.debug('Sign: Show Person %s %r' % (ip, request.data))
        logger.info('Sign: Show Person %s %s %s %s' %
                    get_log_person_information(request))
        return self.show(request, *args, **kwargs)
Exemplo n.º 3
0
    def person_document(self, request, *args, **kwargs):
        """
        ::

          POST /validate/person_document/

        Solicita una verificación de firma  de un documento xml  

        Los valores a suministrar en el parámetro data son:

        * **person:** Identificación de la persona validante,
        * **document:** Archivo en base64 del certificado, 
        * **format:** Formato del documento a validar disponibles (cofirma, contrafirma, msoffice, odf)
        * **request_datetime:** Hora de petición en formato '%Y-%m-%d %H:%M:%S', osea  '2006-10-25 14:30:59'

        Data es un diccionario, osea un objeto de tipo clave -> valor

        Los valores devueltos son: 

        * **identification:**  Identificación del suscriptor
        * **request_datetime:**  Hora de recepción de la solicitud
        * **code:** Código de identificación de la transacción (no es el mismo que el que se muestra en al usuario en firma)
        * **status:** Estado de la solicitud
        * **status_text:**  Descripción en texto del estado
        * **warnings:** Lista de advertencias
        * **errors:** Lista de errores encontrados en el documento del tipo [ {'codigo': 'codigo','descripcion': 'descripción'}, ... ]
        * **signers:** Lista con la información de los firmantes [ {'identification': '08-8888-8888', 'full_name': 'nombre del suscriptor', 'signature_date': timezone.now()}, ... ]
        * **was_successfully:**  Si la verificación del certificado fue exitosa

        **Nota:**  Si la validación del documento no fue exitosa, entonces los campos de firmantes deben ignorase o son nulos.

        """

        ip = get_ip(request)
        logger.debug('Validator: Document Person %s %r' % (ip, request.data))
        logger.info('Validator: Document Person %s %s %s %s' %
                    get_log_person_information(request))
        self.serializer_class = ValidatePersonDocument_Request_Serializer
        self.queryset = ValidatePersonDocumentRequest.objects.all()
        self.response_class = ValidatePersonDocumentRequest_Response_Serializer
        self.DEFAULT_ERROR = ERRORES_VALIDAR_XMLCOFIRMA
        return self._create(request, *args, **kwargs)
Exemplo n.º 4
0
    def person_certificate(self, request, *args, **kwargs):
        """
        ::

          POST /validate/person_certificate/

        Solicita una de un certificado de autenticación para un usuario 

        Los valores a suministrar en el parámetro data son:

        * **person:** Identificación de la persona validante,
        * **document:** Archivo en base64 del certificado, 
        * **request_datetime:** Hora de petición en formato '%Y-%m-%d %H:%M:%S', osea  '2006-10-25 14:30:59'

        Data es un diccionario, osea un objeto de tipo clave -> valor

        Los valores devueltos son: 

        * **identification:**  Identificación del suscriptor
        * **request_datetime:**  Hora de recepción de la solicitud
        * **code:** Código de identificación de la transacción (no es el mismo que el que se muestra en al usuario en firma)
        * **status:** Estado de la solicitud
        * **codigo_de_error:**  Códigos de error del certificado, si existen
        * **full_name:**  Nombre completo del suscriptor
        * **start_validity:**  Inicio de la vigencia del certificado
        * **end_validity:**  Fin de la vigencia del certificado
        * **was_successfully:**  Si la verificación del certificado fue exitosa

        **Nota:**  Si la validación del certificado no fue exitosa, entonces los campos de identificación, nombre_completo, inicio_vigencia,
        fin_vigencia deben ignorase o son nulos.

        """
        ip = get_ip(request)
        logger.debug('Validator: Certificate Person %s %r' %
                     (ip, request.data))
        logger.info('Validator: Certificate Person %s %s %s %s' %
                    get_log_person_information(request))
        self.DEFAULT_ERROR = ERRORES_VALIDA_CERTIFICADO
        return self._create(request, *args, **kwargs)
Exemplo n.º 5
0
    def person(self, request, *args, **kwargs):
        """
        ::

          POST /sign/person/

        Solicita una firma de un documento xml, odf o msoffice para un usuario 

        Los valores a suministrar en el parámetro data son:

        * **person:** identificación de la persona solicitante de firma,
        * **notification_url:** URL para la notificación (debe estar inscrita) o N/D si marca falso en not_webapp,
        * **document:** Archivo en base64, 
        * **format:** tipo de archivo (xml_cofirma,xml_contrafirma, odf, msoffice), 
        * **algorithm_hash:** algoritmo usado para calcular hash, 
        * **document_hash:** hash del documento,
        * **resumen:** Información de ayuda acerca del documento,      
        * **identification:** Identificación de la persona a firmar,
        * **request_datetime:** Hora de petición en formato '%Y-%m-%d %H:%M:%S', osea  '2006-10-25 14:30:59'

        Data es un diccionario, osea un objeto de tipo clave -> valor

        Los valores devueltos son: 

        * **expiration_datetime:** hora final de validez
        * **request_datetime:** Hora de recepción de la solicitud
        * **id_transaction:** Id de trasnacción en el FVA del BCCR
        * **sign_document:** Normalmente None, es un campo para almacenar el documento, pero no se garantiza que venga el documento firmado
        * **status:** Código de error de la transacción
        * **identification:** Identificador del suscriptor
        * **code:** Código para mostrar al usuario
        * **received_notification** True si la autenticación ha sido procesada, False si está esperando al usuario

        """
        ip = get_ip(request)
        logger.debug('Sign: Create Person %s %r' % (ip, request.data))
        logger.info('Sign: Create Person %s %s %s %s' %
                    get_log_person_information(request))
        return self._create(request, *args, **kwargs)
Exemplo n.º 6
0
    def person_suscriptor_connected(self, request, *args, **kwargs):
        """
        ::

          POST /validate/person_suscriptor_connected/

        Verifica si una persona está conectada (es contactable por el BCCR).  

        Los valores a suministrar en el parámetro data son:

        * **person:** Identificación de la persona validante,
        * **identification:** Identificación de la persona a buscar, 
        * **request_datetime:** Hora de petición en formato '%Y-%m-%d %H:%M:%S', osea  '2006-10-25 14:30:59'

        Data es un diccionario, osea un objeto de tipo clave -> valor

        **Retorna:** 
            **is_connected:** True si la persona está conectada, false si no lo está
        """
        ip = get_ip(request)
        logger.debug('Connected:  person %s %r' % (ip, request.data))
        logger.info('Connected:  person %s %s %s %s' %
                    get_log_person_information(request))
        return self._create(request, *args, **kwargs)