Changes between Version 14 and Version 15 of actividades_2018_pruebas


Ignore:
Timestamp:
May 31, 2018, 8:31:49 AM (6 years ago)
Author:
pbuitrago
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • actividades_2018_pruebas

    v14 v15  
    2222== Sección 1: Subir documento pdf ==
    2323
    24 En la primera sección se envía al sistema Murachí el archivo pdf que se va a firmar. Entonces para esta sección se requiere de un formulario que permita tomar del sistema de archivo documentos pdf y luego enviarlo con el método ''$.ajax usando el recurso /Murachi/0.1/archivos/'' '''Característica del formulario HTML'''
     24En la primera sección se envía al sistema Murachí el archivo pdf que se va a firmar. Entonces para esta sección se requiere de un formulario que permita tomar del sistema de archivo documentos pdf y luego enviarlo con el método ''$.ajax usando el recurso /Murachi/0.1/archivos/''
     25
     26'''Característica del formulario HTML'''
    2527
    2628[[br]]
     
    8587[[BR]]
    8688
    87 Ahora vamos a necesitar una función en javascript que me permita usar la librería Forge para cargar y acceder al archivo .p12 o .pfx y obtener la información necesaria para realizar el proceso de firma electrónica.[[BR]]
     89Ahora vamos a necesitar una función en ''javascript'' que me permita usar la librería ''Forge'' para cargar y acceder al archivo ''.p12'' o ''.pfx'' y obtener la información necesaria para realizar el proceso de firma electrónica.[[BR]]
    8890
    8991[[br]]
     
    177179[[BR]]
    178180
    179 Con esta función obtenemos la clave privada almacenada en la variable privateKey y el certificado almacenado en la variable certBytesHex.
     181Con esta función obtenemos la clave privada almacenada en la variable ''privateKey'' y el certificado almacenado en la variable ''certBytesHex''.
    180182
    181183La clave privada es un conjunto de bytes que debemos convertir a string, para esto se tiene la siguiente función
     
    203205}}}
    204206
    205 [[BR]]
     207[[BR]
     208
    206209'''Función SignFilePDF() Sección 1. Subir documento pdf'''
    207210
    208 En esta sección la función procesa los datos del formulario. Vamos a cargar el archivo .p12 o .pfx y usando la función getCertificate(e), y se obtiene el archivo pdf seleccionado en el formulario a través del método document.getElementById("file-sign") donde “file-sign” corresponde al id del elemento input de tipo “file” del formulario. Luego se almacena en un objeto de tipo FormData que permite el envío del archivo al servidor usando el método $.ajax
    209 Opciones de configuración de la petición $.ajax:
    210 ulr: Establece la URL en donde se realiza la petición, para esta sección es "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos".
    211 type: Establece el tipo de petición, para esta actividad vamos a utilizar "POST".
    212 dataType: Establece el formato de la respuesta que es permitido, si el servidor devuelve información con un formato diferente al especificado el código fallará. Para este proceso se establece “json”.
    213 data: Establece la información que se enviará al servidor. Para este proceso se envía el archivo almacenado en una variable de tipo FormaData.
    214 contentType: Establece el tipo de codificación que se va a utilizar, para esta actividad es "application/json".
    215 processData: Establece si la información que se envía al servidor debe ser procesada a una cadena de caracteres. Para evitar esto se debe utilizar el valor “false”. En esta sección sólo se quiere enviar el archivo sin ser procesado.
    216 xhrFields y headers: ya indicado al principio de esta sección.
     211En esta sección la función procesa los datos del formulario. Vamos a cargar el archivo ''.p12'' o ''.pfx'' y usando la función ''getCertificate(e)'', y se obtiene el archivo ''pdf'' seleccionado en el formulario a través del método ''document.getElementById("file-sign")'' donde ''“file-sign”'' corresponde al id del elemento input de tipo ''“file”'' del formulario. Luego se almacena en un objeto de tipo ''FormData'' que permite el envío del archivo al servidor usando el método ''$.ajax''
     212
     213'''Opciones de configuración de la petición $.ajax:'''
     214'''ulr:''' Establece la URL en donde se realiza la petición, para esta sección es ''"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos"''.
     215'''type:''' Establece el tipo de petición, para esta actividad vamos a utilizar ''"POST"''.
     216'''dataType:''' Establece el formato de la respuesta que es permitido, si el servidor devuelve información con un formato diferente al especificado el código fallará. Para este proceso se establece “json”.
     217'''data:''' Establece la información que se enviará al servidor. Para este proceso se envía el archivo almacenado en una variable de tipo ''FormaData''.
     218'''contentType:''' Establece el tipo de codificación que se va a utilizar, para esta actividad es ''"application/json"''.
     219'''processData:''' Establece si la información que se envía al servidor debe ser procesada a una cadena de caracteres. Para evitar esto se debe utilizar el valor ''“false”''. En esta sección sólo se quiere enviar el archivo sin ser procesado.
     220'''xhrFields:''' {withCredentials: true} esta característica puede usarse para establecer la propiedad de '''withCredentials'''. Si se establece ''TRUE'' permite que se pase los ''cookies'' al servidor y permitir solicitudes de dominios cruzados.
     221'''headers:''' {"Authorization":"Basic YWRtaW46YWRtaW4="} autenticación básica HTTP
    217222
    218223[[BR]]
     
    268273[[BR]]
    269274
    270 La repuesta de esta sección se procesa por el método .done a través del argumento response donde podemos acceder al valor del JSON con la función JSON.stringify.
     275La repuesta de esta sección se procesa por el método ''.done'' a través del argumento response donde podemos acceder al valor del ''JSON'' con la función ''JSON.stringify''.
    271276
    272277[[BR]]
     
    392397
    393398En esta sección se va a calcular el valor del hash del documento que se envió en la sección 1, en tal sentido antes del cálculo del hash se debe enviar al servidor Murachí toda la información que se agregará al documento tales como el certificado del firmante como información adicional necesaria para la firma electrónica:
    394 fileId: corresponde al identificador del archivo que se encuentra en el servidor y se desea firmar (identificador único del archivo pdf).
    395 certificate: corresponde al certificado del firmante en formato hexadecimal.
    396 reason: corresponde a la razón de la firma (cadena descriptiva del por qué de la firma).
    397 location: corresponde a la ubicación donde se realiza la firma.
    398 contact: corresponde a información de contacto del firmante.
    399 signatureVisible: true para mostrar un indicador visible de firma en la primera página del documento pdf y false para no mostrar un indicador visible de firma en la primera página del documento pdf.
    400 
    401 El certificado lo obtuvimos en la sección anterior, en la función getCertificate(). Luego enviarlo al sistema Murachí con el metodo $.ajax usando el recurso :Murachi/0.1/archivos/pdfs
     399
     400'''fileId:''' corresponde al identificador del archivo que se encuentra en el servidor y se desea firmar (identificador único del archivo pdf).
     401'''certificate:''' corresponde al certificado del firmante en formato hexadecimal.
     402'''reason:''' corresponde a la razón de la firma (cadena descriptiva del por qué de la firma).
     403'''location:''' corresponde a la ubicación donde se realiza la firma.
     404'''contact:''' corresponde a información de contacto del firmante.
     405'''signatureVisible:''' true para mostrar un indicador visible de firma en la primera página del documento pdf y false para no mostrar un indicador visible de firma en la primera página del documento pdf.
     406
     407El certificado lo obtuvimos en la sección anterior, en la función ''getCertificate()''. Luego enviarlo al sistema Murachí con el metodo ''$.ajax'' usando el recurso '':Murachi/0.1/archivos/pdfs''
    402408
    403409
     
    435441
    436442
    437 Si la petición tiene éxito la repuesta de esta sección se procesa a través de la función success: donde se le pase tres parámetros, data: que corresponde al resultado de la petición formateado según el valor del parámetro dataType (respuesta del servidor), textStatus: que corresponde a una cadena que describe el estado y jpXHR: que es un objeto que permite ejecutar varias funciones.
     443Si la petición tiene éxito la repuesta de esta sección se procesa a través de la función ''success:'' donde se le pase tres parámetros, ''data:'' que corresponde al resultado de la petición formateado según el valor del parámetro ''dataType'' (respuesta del servidor), ''textStatus:'' que corresponde a una cadena que describe el estado y ''jpXHR:'' que es un objeto que permite ejecutar varias funciones.
    438444
    439445[[br]]