firmas digitales separadas
Para las firmas digitales separadas, el proceso implica trabajar con el documento y el archivo de la firma digital por separado. Aquí te explico cómo funciona este proceso y te proporciono ejemplos de código en Node.js para firmar y verificar documentos utilizando archivos de firma digital separados.
Proceso de Firmas Digitales Separadas
Firmante:
- El firmante genera un hash del documento.
- El hash se cifra utilizando la clave privada del firmante para crear la firma digital.
- La firma digital se almacena en un archivo separado.
Receptor:
- El receptor recibe tanto el documento como el archivo de la firma digital.
- El receptor genera un hash del documento.
- El receptor descifra la firma digital utilizando la clave pública del firmante obtenida del certificado digital.
- El receptor compara el hash generado con el hash descifrado. Si coinciden, la firma es válida.
Ejemplo de Código para Firmar un Documento
Firmar un Documento
Para las firmas digitales separadas, el proceso implica trabajar con el documento y el archivo de la firma digital por separado. Aquí te explico cómo funciona este proceso y te proporciono ejemplos de código en Node.js para firmar y verificar documentos utilizando archivos de firma digital separados.
Proceso de Firmas Digitales Separadas
Firmante:
- El firmante genera un hash del documento.
- El hash se cifra utilizando la clave privada del firmante para crear la firma digital.
- La firma digital se almacena en un archivo separado.
Receptor:
- El receptor recibe tanto el documento como el archivo de la firma digital.
- El receptor genera un hash del documento.
- El receptor descifra la firma digital utilizando la clave pública del firmante obtenida del certificado digital.
- El receptor compara el hash generado con el hash descifrado. Si coinciden, la firma es válida.
Ejemplo de Código para Firmar un Documento
Firmar un 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 (por ejemplo, el contenido de un archivo PDF)
const document = fs.readFileSync('path/to/document.pdf');
// Crear un hash del documento
const md = forge.md.sha256.create();
md.update(document.toString('binary'), 'binary');
// Firmar el hash
const signature = privateKey.sign(md);
// Guardar la firma en un archivo separado
fs.writeFileSync('path/to/signature.sig', signature);
console.log('Documento firmado exitosamente.');
Ejemplo de Código para Verificar una Firma
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 archivo PDF)
const document = fs.readFileSync('path/to/document.pdf');
// Crear un hash del documento
const md = forge.md.sha256.create();
md.update(document.toString('binary'), 'binary');
// 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.');
}
Comentarios
Publicar un comentario