El sello de tiempo se puede solicitar de dos maneras:
Incrustado dentro de un PDF: si se van a sellar documentos PDF recomendamos utilizar esta manera. El sello queda incrustado dentro de la metadata del documento y después se agrega una firma para que no se pueda modificar. Sirve como una manera de cerrar el documento y no se tienen que mantener dos archivos.
Sello para cualquier tipo de archivo: La otra opción es generar el sello como un archivo independiente. Esto permite que se puedan generar sellos para cualquier tipo de archivo, como fotos, videos, docx, xlsx, etc.
Además de los métodos para obtener el sello de tiempo, están disponibles los métodos para validar el sello generado. La validación revisa que:
El hash del documento corresponda al hash que se encuentra en el sello
Que el status del sello sea válido
Que la firma del sello sea válida
Estampilla incrustada dentro de un PDF
Generación
Para generar el sello e incrustarlo dentro de un PDF, solicitamos el binario del documento:
{
"status": "success" o "error",
"document":"base64 del documento PDF",
"timestampData":{
"genTime":"fecha de generacion del sello",
"hash":"hash que fue sellado",
"status":"status contenido dentro de la respuesta de la TSA",
"tsa":"nombre de la TSA que firmó el sello de tiempo"
},
"error":"si 'status' es 'error', contendra una descripción del error",
}
Validación
Después de obtener un documento sellado, se puede validar en cualquier momento. Este proceso extrae el sello del documento y lo valida, sólo acepta documentos con el sello de tiempo incrustado.
{
"status": "success" o "error",
"document":"base64 del documento PDF",
"timestamp":"el timestamp en base64 que se extrajo del documento PDF",
"timestampData":{
"genTime":"fecha de generacion del sello",
"hash":"hash que fue sellado",
"status":"status contenido dentro de la respuesta de la TSA",
"tsa":"nombre de la TSA que firmó el sello de tiempo"
},
"error":"si 'status' es 'error', contendra una descripción del error",
}
Sello para cualquier tipo de PDF
Generación
Para generar un sello para cualquier tipo de archivo, enviamos el hash 256 en hexadecimal del archivo:
// genera un hash256 de los datos para los que quieres
// una estampilla de tiempo
const hash = crypto.createHash('sha256')
hash.update('datos a estampillar');
// manda el hash como un string hexadecimal
const response = await services.timestamp({
hash: hash.digest('hex')
})
La respuesta contiene la siguiente información:
{
"status": "success" o "error",
"timestamp":"el timestamp en base64 generado para el archivo",
"timestampData":{
"genTime":"fecha de generacion del sello",
"hash":"hash que fue sellado",
"status":"status contenido dentro de la respuesta de la TSA",
"tsa":"nombre de la TSA que firmó el sello de tiempo"
},
"error":"si 'status' es 'error', contendra una descripción del error",
}
Validación
Después de obtener el sello, se puede validar en cualquier momento enviando el sello junto con el archivo original o el hash con el que se generó
La respuesta para cualquiera de las dos opciones contendrá la siguiente información:
{
"status": "success" o "error",
"timestampData":{
"genTime":"fecha de generacion del sello",
"hash":"hash que fue sellado",
"status":"status contenido dentro de la respuesta de la TSA",
"tsa":"nombre de la TSA que firmó el sello de tiempo"
},
"error":"si 'status' es 'error', contendra una descripción del error",
}