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)
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)
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)
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)
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)
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)