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 elDocumentcompleto cuando solo necesita comprobar si un archivo está firmado — evita el coste de analizar todo el cuerpo del documento. - Compruebe
DigitalSignatureCollection.IsValidprimero para una rápida aprobación/rechazo antes de iterar los valores individuales deDigitalSignature.IsValid. SignatureTypele indica qué mecanismo de firma produjo la firma (CryptoApivs.XmlDsig); esto afecta a qué campos del certificado son significativos.- Trate
IsValid == falsecomo 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
| Problema | Causa | Corrección |
|---|---|---|
DigitalSignatures.Count es 0 en un .docx firmado | El archivo fue guardado nuevamente por una herramienta que eliminó la parte de la firma | Verifique contra el archivo original firmado, no contra una copia guardada nuevamente |
La firma informa IsValid = false | El contenido del documento cambió después de la firma, o el certificado no es de confianza/ha expirado | Trátelo como inválido; no intente “reparar” la firma |
| Intentar firmar un documento no tiene efecto | La firma no está implementada en esta edición FOSS | Utilice Aspose.Words para .NET (comercial) en flujos de trabajo de firma |
CertificateHolder.Certificate lanza una excepción al inspeccionarse | Los datos subyacentes del certificado están malformados o la parte de la firma está corrupta | Confirme 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étodo | Descripción |
|---|---|
Document.DigitalSignatures | Firmas ya adjuntas a un documento cargado |
DigitalSignatureUtil.LoadSignatures() | Leer firmas de un archivo o flujo sin cargar el documento completo |
DigitalSignatureCollection | Colección de solo lectura de objetos DigitalSignature; IsValid, Count |
DigitalSignature | Una única firma: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enumeración: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Envuelve la firma X509Certificate2 |