Semnături digitale
Semnături digitale
Aspose.Words FOSS pentru .NET poate inspecta și verifica semnăturile digitale care sunt deja atașate la un .docx document prin intermediul Aspose.Words.DigitalSignatures spațiului de nume. Această ediție acoperă semnătură verification — citirea metadatelor semnăturii, verificarea validității și examinarea certificatului de semnare. Nu include capacitatea de a crea semnături noi pe un document.
Citirea semnăturilor dintr-un document
Fiecare Document expune o proprietate DigitalSignatures care returnează un DigitalSignatureCollection — o colecție numai pentru citire, enumerabilă, de obiecte DigitalSignature deja prezente în fișierul încărcat. DigitalSignatureUtil.LoadSignatures(fileName) (și suprasarcina LoadSignatures(stream)) citește semnăturile direct dintr-un fișier sau flux fără a încărca documentul complet într-un obiect Document, ceea ce este util când trebuie doar să verificați starea semnăturii. Proprietatea IsValid a colecției raportează dacă fiecare semnătură conținută este validă, iar Count raportează câte semnături au fost găsite.
Inspectarea unei semnături individuale
Fiecare DigitalSignature expune IsValid (dacă semnătura este criptografic validă), SignatureType (o valoare DigitalSignatureType — CryptoApi, XmlDsig sau Unknown), SignTime, Comments, SubjectName, IssuerName și octeții brute SignatureValue. Proprietatea CertificateHolder returnează un obiect CertificateHolder care învelește certificatul de semnare; proprietatea sa Certificate expune X509Certificate2 de bază pentru a putea inspecta câmpurile standard ale certificatului (emitent, subiect, perioada de valabilitate) cu API-urile de certificate ale .NET.
Ce nu este suportat în această ediție
Suprafața API declară în continuare membri relaționați cu semnarea — DigitalSignatureUtil.Sign(), SignOptions, și XmlDsigLevel — pentru compatibilitate structurală cu modelul de obiecte Aspose.Words comercial pentru .NET, dar crearea unei noi semnături digitale pe un document nu este funcțională în această ediție FOSS. Folosiți această ediție pentru a verify semnăturile care există deja într-un document; un flux de lucru de semnare necesită Aspose.Words pentru .NET.
Sfaturi și practici recomandate
- Preferați
DigitalSignatureUtil.LoadSignatures()în loc să deschideți întregulDocumentcând aveți nevoie doar să verificați dacă un fișier este semnat — evită costul analizei întregului corp al documentului. - Verificați mai întâi
DigitalSignatureCollection.IsValidpentru un rezultat rapid de trecere/eșec înainte de a itera valorile individualeDigitalSignature.IsValid. SignatureTypevă spune ce mecanism de semnare a generat semnătura (CryptoApivs.XmlDsig); acest lucru influențează care câmpuri ale certificatului sunt semnificative.- Tratați
IsValid == falseca o condiție de eșec sever în orice flux automat de preluare a documentelor — nu expuneți metadatele semnăturii dintr-o semnătură invalidă ca fiind de încredere.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
DigitalSignatures.Count este 0 pe un .docx semnat | Fișierul a fost re-salvat de un instrument care a eliminat partea de semnătură | Verificați cu fișierul semnat original, nu cu o copie re-salvată |
Semnătura raportează IsValid = false | Conținutul documentului s-a modificat după semnare, sau certificatul nu este de încredere/expirat | Tratează ca fiind invalid; nu încerca să “repari” semnătura |
| Încercarea de a semna un document nu are niciun efect | Semnarea nu este implementată în această ediție FOSS | Folosește Aspose.Words pentru .NET (commercial) pentru fluxurile de lucru de semnare |
CertificateHolder.Certificate aruncă o excepție când este inspectat | Datele de bază ale certificatului sunt malformate sau partea de semnătură este coruptă | Confirmă că fișierul sursă este un document semnat autentic, nemodificat |
FAQ
Poate Aspose.Words FOSS pentru .NET să semneze un document?
Nu. Această ediție poate verifica semnăturile digitale existente, dar nu poate crea altele noi. Metoda DigitalSignatureUtil.Sign() și clasa SignOptions există în suprafața API pentru compatibilitate structurală, dar semnarea nu este funcțională aici.
Cum pot verifica dacă un document este semnat fără a-l încărca complet?
Apelă DigitalSignatureUtil.LoadSignatures(fileName), care returnează un DigitalSignatureCollection direct din fișier.
Ce înseamnă DigitalSignatureCollection.IsValid?
Este true numai atunci când fiecare semnătură din colecție este validă individual — o modalitate rapidă de a verifica integritatea generală a semnăturii documentului înainte de a inspecta fiecare DigitalSignature.
De unde pot obține detaliile certificatului pentru o semnătură?
Prin DigitalSignature.CertificateHolder.Certificate, care returnează un X509Certificate2 standard .NET.
API Reference Rezumat
| Clasă / Metodă | Descriere: |
|---|---|
Document.DigitalSignatures | Semnăturile deja atașate unui document încărcat |
DigitalSignatureUtil.LoadSignatures() | Citește semnăturile dintr-un fișier sau flux fără a încărca întregul document |
DigitalSignatureCollection | Colecție numai în citire de obiecte DigitalSignature; IsValid, Count |
DigitalSignature | O singură semnătură: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Împachetează semnarea X509Certificate2 |