Firmas digitales

Firmas digitales

Aspose.Words FOSS para .NET puede inspeccionar y verificar firmas digitales que ya están adjuntas a un .docx documento a través del Aspose.Words.DigitalSignatures espacio de nombres. Esta edición cubre la firma verification — lectura de los metadatos de la firma, verificación de la validez y examen del certificado de firma. No incluye la capacidad de crear nuevas firmas en un documento.


Lectura de firmas de un documento

Cada Document expone una propiedad DigitalSignatures que devuelve un DigitalSignatureCollection — una colección de solo lectura y enumerable de objetos DigitalSignature ya presentes en el archivo cargado. DigitalSignatureUtil.LoadSignatures(fileName) (y la sobrecarga LoadSignatures(stream)) lee firmas directamente de un archivo o flujo sin cargar el documento completo en un objeto Document, lo cual es útil cuando solo necesitas comprobar el estado de la firma. La propiedad IsValid de la colección indica si todas las firmas que contiene son válidas, y Count indica cuántas firmas se encontraron.


Inspección de una firma individual

Cada DigitalSignature expone IsValid (si la firma es criptográficamente válida), SignatureType (un valor DigitalSignatureType — CryptoApi, XmlDsig o Unknown), SignTime, Comments, SubjectName, IssuerName, y los bytes crudos SignatureValue. La propiedad CertificateHolder devuelve un objeto CertificateHolder que envuelve el certificado de firma; su propiedad Certificate expone el X509Certificate2 subyacente para que puedas inspeccionar los campos estándar del certificado (emisor, sujeto, período de validez) con las propias API de certificados de .NET.


Qué no está soportado en esta edición

La superficie de API aún declara miembros relacionados con la firma — DigitalSignatureUtil.Sign(), SignOptions, y XmlDsigLevel — para compatibilidad estructural con el modelo de objetos comercial Aspose.Words para .NET, pero la creación de una nueva firma digital en un documento no es funcional en esta edición FOSS. Use esta edición para verify firmas que ya existen en un documento; un flujo de trabajo de firma requiere Aspose.Words para .NET.


Consejos y mejores prácticas

  • Prefiera DigitalSignatureUtil.LoadSignatures() en lugar de abrir el Document completo cuando solo necesita comprobar si un archivo está firmado — evita el coste de analizar todo el cuerpo del documento.
  • Compruebe DigitalSignatureCollection.IsValid primero para una rápida aprobación/rechazo antes de iterar los valores individuales de DigitalSignature.IsValid.
  • SignatureType le indica qué mecanismo de firma produjo la firma (CryptoApi vs. XmlDsig); esto afecta a qué campos del certificado son significativos.
  • Trate IsValid == false como una condición de fallo crítico en cualquier canal de ingestión de documentos automatizado — no presente los metadatos de la firma de una firma inválida como confiables.

Problemas comunes

ProblemaCausaCorrección
DigitalSignatures.Count es 0 en un .docx firmadoEl archivo fue guardado nuevamente por una herramienta que eliminó la parte de la firmaVerifique contra el archivo original firmado, no contra una copia guardada nuevamente
La firma informa IsValid = falseEl contenido del documento cambió después de la firma, o el certificado no es de confianza/ha expiradoTrátelo como inválido; no intente “reparar” la firma
Intentar firmar un documento no tiene efectoLa firma no está implementada en esta edición FOSSUtilice Aspose.Words para .NET (comercial) en flujos de trabajo de firma
CertificateHolder.Certificate lanza una excepción al inspeccionarseLos datos subyacentes del certificado están malformados o la parte de la firma está corruptaConfirme que el archivo fuente es un documento firmado genuino y sin modificar

FAQ

¿Puede Aspose.Words FOSS para .NET firmar un documento?

No. Esta edición puede verificar firmas digitales existentes pero no puede crear nuevas. El método DigitalSignatureUtil.Sign() y la clase SignOptions existen en la capa API para compatibilidad estructural, pero la firma no es funcional aquí.

¿Cómo puedo comprobar si un documento está firmado sin cargarlo completamente?

Llame a DigitalSignatureUtil.LoadSignatures(fileName), que devuelve un DigitalSignatureCollection directamente del archivo.

¿Qué significa DigitalSignatureCollection.IsValid?

Es true solo cuando cada firma en la colección es individualmente válida — una forma rápida de verificar la integridad global de firmas del documento antes de inspeccionar cada DigitalSignature.

¿Dónde obtengo los detalles del certificado de una firma?

A través de DigitalSignature.CertificateHolder.Certificate, que devuelve un .NET X509Certificate2 estándar.


API Reference Resumen

Clase / MétodoDescripción
Document.DigitalSignaturesFirmas ya adjuntas a un documento cargado
DigitalSignatureUtil.LoadSignatures()Leer firmas de un archivo o flujo sin cargar el documento completo
DigitalSignatureCollectionColección de solo lectura de objetos DigitalSignature; IsValid, Count
DigitalSignatureUna única firma: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder
DigitalSignatureTypeEnumeración: CryptoApi, XmlDsig, Unknown
CertificateHolderEnvuelve la firma X509Certificate2

Ver también

 Español