Trabajar con Firmas Digitales

Una firma digital es una implementación tecnológica de firmas electrónicas para firmar documentos y autenticar al firmante para garantizar que un documento no ha sido modificado desde su firma. Cada firma digital es única para cada firmante debido a seguir el protocolo PKI para generar tanto claves públicas como privadas. Firmar un documento digital significa crear una firma usando la clave privada del firmante donde se utiliza un algoritmo matemático para cifrar el hash generado.

Aspose.Words le permite detectar, contar o verificar las firmas digitales existentes, y también añadir una nueva firma a su documento para averiguar cualquier manipulación en él. También puede eliminar todas las firmas digitales de un documento. Usar el DigitalSignatureUtil clase para trabajar con firmas digitales.

Este artículo explica cómo hacer todo lo anterior para validar la autenticidad e integridad de un documento digital.

Formatos compatibles

Aspose.Words permite trabajar con firmas digitales en documentos DOC, OOXML y ODT y firmar el documento generado en PDF o XPS formato.

Limitaciones de las firmas digitales

La tabla de abajo describe algunas limitaciones que puede enfrentar mientras trabaja con firmas digitales a través de Aspose.Words, así como algunas opciones alternativas.

Limitación Opción alternativa
Pérdida de firmas digitales en un documento después de cargar y guardarlo. Por lo tanto, procesar un documento a un servidor puede causar la pérdida de todas las firmas digitales sin previo aviso Compruebe si un documento tiene firmas digitales y tome la acción adecuada si se encuentra alguno. Por ejemplo, envía una alerta a los clientes informándoles que el documento que están subiendo contiene firmas digitales que se perderán si se procesa
Aspose.Words soporta trabajar con macros en un documento. Pero… Aspose.Words todavía no admite firmas digitales en macros Exportar el documento de nuevo a cualquier formato de Word, y utilizar Microsoft Word añadir una firma digital a macros

Detectar, Contar y Verificar Firmas Digitales

Aspose.Words permite detectar la firma digital en un documento usando el DetectFileFormat método y el HasDigitalSignature propiedad. Vale la pena señalar que tal cheque solo detectará el hecho de la firma, pero no su validez.

Un documento puede ser firmado más de una vez, y esto puede ser hecho por diferentes usuarios. Para comprobar la validez de las firmas digitales, es necesario cargarlas del documento utilizando el LoadSignatures método y utilizar el IsValid propiedad. También Aspose.Words le permite contar un conjunto de todas las firmas digitales dentro de un documento usando el Count propiedad.

Todo esto proporciona una manera eficiente y segura de comprobar un documento para las firmas antes de procesarlo.

El siguiente ejemplo de código muestra cómo detectar la presencia de firmas digitales y verificarlas:

Crear una firma digital

Para crear una firma digital, necesitará cargar un certificado de firma que confirme identidad. Cuando envía un documento firmado digitalmente, también envía su certificado y clave pública.

Aspose.Words le permite crear certificado X.509, un certificado digital que utiliza el estándar X.509 PKI aceptado internacionalmente para verificar que una clave pública pertenece al firmante incluido dentro del certificado. Para hacer esto, utilice el Create método dentro del CertificateHolder clase.

Las siguientes secciones explican cómo añadir una firma digital, una línea de firma y cómo firmar un documento PDF generado.

Sign a Document

Aspose.Words permite firmar un documento DOC, DOCX o ODT digitalmente utilizando el Sign método y SignOptions propiedades.

El siguiente ejemplo de código muestra cómo firmar documentos usando un titular de certificado y opciones de firma:

Añadir una línea de señalización

Una línea de firma es una representación visual de una firma digital en un documento. Aspose.Words permite insertar una línea de firma usando la DocumentBuilder.InsertSignatureLine método. También puede configurar los parámetros para esta representación usando el SignatureLineOptions clase.

Por ejemplo, la imagen siguiente muestra cómo se pueden mostrar firmas válidas e inválidas.

valid-digital-signature invalid-digital-signature

Además, si un documento contiene una línea de firma y ninguna firma digital, hay una característica para pedir al usuario que agregue una firma.

El siguiente ejemplo de código muestra cómo firmar un documento con un certificado personal y una línea de firma específica:

Firme un documento PDF generado

Aspose.Words le permite firmar y obtener todos los detalles de un documento PDF usando el PdfDigitalSignatureDetails propiedades.

El siguiente ejemplo de código muestra cómo firmar un PDF generado:

La imagen siguiente demuestra que el documento PDF generado se abre en Adobe Acrobat y la firma digital se verifica como presente y válida.

create-digital-signed-pdf-aspose-words-java

Recuperar el valor de la firma digital

Aspose.Words también proporciona la capacidad de recuperar el valor de firma digital de un documento firmado digitalmente como matriz de byte utilizando el SignatureValue propiedad.

El siguiente ejemplo de código muestra cómo obtener el valor de firma digital como matriz de byte de un documento:

Quitar las firmas digitales

Aspose.Words permite eliminar todas las firmas digitales de un documento firmado usando el RemoveAllSignatures método.

El siguiente ejemplo de código muestra cómo cargar y eliminar firmas digitales de un documento: