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
- Firmas Integradas en PDF: La firma se almacena dentro del archivo PDF. Puedes utilizar librerías como
node-signpdfpara firmar el PDF y herramientas comopdf-libynode-forgepara verificar la firma. - 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
Publicar un comentario