Firme digitali
Firme digitali
Aspose.Words FOSS per .NET può ispezionare e verificare le firme digitali già allegate a un .docx documento attraverso il Aspose.Words.DigitalSignatures namespace. Questa edizione copre la firma verification — lettura dei metadati della firma, verifica della validità e esame del certificato di firma. Non include la possibilità di creare nuove firme su un documento.
Lettura delle firme da un documento
Ogni Document espone una proprietà DigitalSignatures che restituisce un DigitalSignatureCollection — una collezione di sola lettura, enumerabile, di oggetti DigitalSignature già presenti nel file caricato. DigitalSignatureUtil.LoadSignatures(fileName) (e la sovraccarica LoadSignatures(stream)) legge le firme direttamente da un file o stream senza caricare l’intero documento in un oggetto Document, il che è utile quando è necessario solo verificare lo stato della firma. La proprietà IsValid della collezione indica se tutte le firme contenute sono valide, e Count indica quante firme sono state trovate.
Ispezione di una firma individuale
Ogni DigitalSignature espone IsValid (se la firma è crittograficamente valida), SignatureType (un valore DigitalSignatureType — CryptoApi, XmlDsig o Unknown), SignTime, Comments, SubjectName, IssuerName e i byte grezzi SignatureValue. La proprietà CertificateHolder restituisce un oggetto CertificateHolder che avvolge il certificato di firma; la sua proprietà Certificate espone il X509Certificate2 sottostante così puoi ispezionare i campi standard del certificato (emittente, soggetto, periodo di validità) con le API dei certificati di .NET.
Cosa non è supportato in questa edizione
L’interfaccia API dichiara ancora membri relativi alla firma — DigitalSignatureUtil.Sign(), SignOptions, e XmlDsigLevel — per compatibilità strutturale con il modello oggetto commerciale Aspose.Words per .NET, ma la creazione di una nuova firma digitale su un documento non è funzionale in questa edizione FOSS. Usa questa edizione per verify firme che già esistono in un documento; un flusso di lavoro di firma richiede Aspose.Words per .NET.
Suggerimenti e buone pratiche
- Preferisci
DigitalSignatureUtil.LoadSignatures()anziché aprire l’interoDocumentquando devi solo verificare se un file è firmato — evita il costo di analizzare l’intero corpo del documento. - Controlla prima
DigitalSignatureCollection.IsValidper un rapido esito positivo/negativo prima di iterare i singoli valoriDigitalSignature.IsValid. SignatureTypeti indica quale meccanismo di firma ha prodotto la firma (CryptoApivs.XmlDsig); ciò influisce su quali campi del certificato sono significativi.- Considera
IsValid == falsecome una condizione di errore irreversibile in qualsiasi pipeline automatizzata di acquisizione documenti — non presentare i metadati della firma di una firma non valida come affidabili.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
DigitalSignatures.Count è 0 su un .docx firmato | Il file è stato risalvato da uno strumento che ha rimosso la parte della firma | Verifica rispetto al file firmato originale, non a una copia risalvata |
La firma segnala IsValid = false | Il contenuto del documento è cambiato dopo la firma, oppure il certificato non è attendibile/scaduto | Trattalo come non valido; non tentare di “riparare” la firma |
| Tentare di firmare un documento non ha alcun effetto | La firma non è implementata in questa edizione FOSS | Usa Aspose.Words per .NET (commerciale) per i flussi di lavoro di firma |
CertificateHolder.Certificate genera un’eccezione durante l’ispezione | I dati del certificato sottostante sono malformati o la parte della firma è corrotta | Conferma che il file di origine sia un documento firmato autentico e non modificato |
FAQ
Può Aspose.Words FOSS per .NET firmare un documento?
No. Questa edizione può verificare le firme digitali esistenti ma non può crearne di nuove. Il metodo DigitalSignatureUtil.Sign() e la classe SignOptions esistono nella superficie API per compatibilità strutturale, ma la firma non è funzionale qui.
Come posso verificare se un documento è firmato senza caricarlo completamente?
Chiama DigitalSignatureUtil.LoadSignatures(fileName), che restituisce un DigitalSignatureCollection direttamente dal file.
Cosa significa DigitalSignatureCollection.IsValid?
È true solo quando ogni firma nella collezione è individualmente valida — un modo rapido per verificare l’integrità complessiva della firma del documento prima di ispezionare ogni DigitalSignature.
Dove posso ottenere i dettagli del certificato per una firma?
Tramite DigitalSignature.CertificateHolder.Certificate, che restituisce un .NET X509Certificate2 standard.
API Reference Riepilogo
| Classe / Metodo | Descrizione |
|---|---|
Document.DigitalSignatures | Firme già allegate a un documento caricato |
DigitalSignatureUtil.LoadSignatures() | Leggi le firme da un file o da uno stream senza caricare l’intero documento |
DigitalSignatureCollection | Collezione di sola lettura di oggetti DigitalSignature; IsValid, Count |
DigitalSignature | Una singola firma: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Avvolge la firma X509Certificate2 |