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’intero Document quando devi solo verificare se un file è firmato — evita il costo di analizzare l’intero corpo del documento.
  • Controlla prima DigitalSignatureCollection.IsValid per un rapido esito positivo/negativo prima di iterare i singoli valori DigitalSignature.IsValid.
  • SignatureType ti indica quale meccanismo di firma ha prodotto la firma (CryptoApi vs. XmlDsig); ciò influisce su quali campi del certificato sono significativi.
  • Considera IsValid == false come 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

ProblemaCausaCorrezione
DigitalSignatures.Count è 0 su un .docx firmatoIl file è stato risalvato da uno strumento che ha rimosso la parte della firmaVerifica rispetto al file firmato originale, non a una copia risalvata
La firma segnala IsValid = falseIl contenuto del documento è cambiato dopo la firma, oppure il certificato non è attendibile/scadutoTrattalo come non valido; non tentare di “riparare” la firma
Tentare di firmare un documento non ha alcun effettoLa firma non è implementata in questa edizione FOSSUsa Aspose.Words per .NET (commerciale) per i flussi di lavoro di firma
CertificateHolder.Certificate genera un’eccezione durante l’ispezioneI dati del certificato sottostante sono malformati o la parte della firma è corrottaConferma 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 / MetodoDescrizione
Document.DigitalSignaturesFirme già allegate a un documento caricato
DigitalSignatureUtil.LoadSignatures()Leggi le firme da un file o da uno stream senza caricare l’intero documento
DigitalSignatureCollectionCollezione di sola lettura di oggetti DigitalSignature; IsValid, Count
DigitalSignatureUna singola firma: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder
DigitalSignatureTypeEnum: CryptoApi, XmlDsig, Unknown
CertificateHolderAvvolge la firma X509Certificate2

Vedi anche

 Italiano