Firmas Digitales Separadas

 En caso de que la firma sea un archivo separado, puedes usar un enfoque similar al que describí anteriormente para firmar y verificar documentos.

Firmar el Documento

const forge = require('node-forge');
const fs = require('fs');

// Leer la clave privada y el certificado
const privateKeyPem = fs.readFileSync('path/to/private-key.pem', 'utf8');
const certificatePem = fs.readFileSync('path/to/certificate.pem', 'utf8');

// Cargar la clave privada
const privateKey = forge.pki.privateKeyFromPem(privateKeyPem);

// Documento a firmar (el contenido del PDF en este caso)
const document = fs.readFileSync('path/to/document.pdf');

// Crear un hash del documento
const md = forge.md.sha256.create();
md.update(document.toString('utf8'), 'utf8');

// Firmar el hash
const signature = privateKey.sign(md);

// Guardar la firma en un archivo
fs.writeFileSync('path/to/signature.sig', signature);

console.log('Documento firmado exitosamente.');


Verificar la Firma

const forge = require('node-forge');
const fs = require('fs');

// Leer el certificado y la firma
const certificatePem = fs.readFileSync('path/to/certificate.pem', 'utf8');
const signature = fs.readFileSync('path/to/signature.sig');

// Cargar el certificado
const certificate = forge.pki.certificateFromPem(certificatePem);

// Documento original (el contenido del PDF en este caso)
const document = fs.readFileSync('path/to/document.pdf');

// Crear un hash del documento
const md = forge.md.sha256.create();
md.update(document.toString('utf8'), 'utf8');

// Verificar la firma
const verified = certificate.publicKey.verify(md.digest().bytes(), signature);

if (verified) {
  console.log('La firma es válida.');
} else {
  console.log('La firma no es válida.');
}

Resumen

  1. Firmas Integradas en PDF: La firma se almacena dentro del archivo PDF. Puedes utilizar librerías como node-signpdf para firmar el PDF y herramientas como pdf-lib y node-forge para verificar la firma.
  2. Firmas Separadas: La firma se almacena en un archivo separado. El proceso de firma y verificación puede realizarse utilizando la clave privada y el certificado público del firmante.

Ambos métodos tienen sus propias ventajas y desventajas, y la elección depende de tus necesidades específicas. Si tienes más preguntas o necesitas más detalles, no dudes en preguntar.


Comentarios

Entradas populares de este blog

firmas digitales integradas en PDFs

fiel

API Web Crypto,