Digitale handtekeningen
Digitale handtekeningen
Aspose.Words FOSS voor .NET kan digitale handtekeningen die al aan een .docx document via de Aspose.Words.DigitalSignatures namespace. Deze editie behandelt handtekening verification — het lezen van handtekeningmetadata, het controleren van de geldigheid, en het onderzoeken van het ondertekeningscertificaat. Het bevat niet de mogelijkheid om nieuwe handtekeningen op een document te maken.
Handtekeningen lezen uit een document
Elke Document exposeert een DigitalSignatures eigenschap die een DigitalSignatureCollection retourneert — een alleen-lezen, enumerateerbare collectie van DigitalSignature objecten die al in het geladen bestand aanwezig zijn. DigitalSignatureUtil.LoadSignatures(fileName) (en de LoadSignatures(stream) overload) leest handtekeningen direct uit een bestand of stream zonder het volledige document te laden in een Document object, wat handig is wanneer je alleen de handtekeningsstatus wilt controleren. De IsValid eigenschap van de collectie geeft aan of elke handtekening die het bevat geldig is, en Count geeft aan hoeveel handtekeningen er zijn gevonden.
Een individuele handtekening inspecteren
Elke DigitalSignature exposeert IsValid (of de handtekening cryptografisch geldig is), SignatureType (een DigitalSignatureType waarde — CryptoApi, XmlDsig of Unknown), SignTime, Comments, SubjectName, IssuerName, en de ruwe SignatureValue bytes. De CertificateHolder eigenschap retourneert een CertificateHolder object dat het ondertekeningscertificaat omsluit; de Certificate eigenschap daarvan exposeert de onderliggende X509Certificate2 zodat je standaard certificaatvelden (issuer, subject, validity period) kunt inspecteren met de eigen certificaat-API’s van .NET.
Wat niet wordt ondersteund in deze editie
De API surface declareert nog steeds ondertekeningsgerelateerde leden — DigitalSignatureUtil.Sign(), SignOptions, en XmlDsigLevel — voor structurele compatibiliteit met het commerciële Aspose.Words voor .NET objectmodel, maar het creëren van een nieuwe digitale handtekening op een document is niet functioneel in deze FOSS-editie. Gebruik deze editie om verify handtekeningen die al in een document bestaan; een ondertekeningsworkflow vereist Aspose.Words voor .NET.
Tips en best practices
- Geef de voorkeur aan
DigitalSignatureUtil.LoadSignatures()boven het openen van de volledigeDocumentwanneer je alleen hoeft te controleren of een bestand is ondertekend — het vermijdt de kosten van het parseren van de volledige documentinhoud. - Controleer eerst
DigitalSignatureCollection.IsValidvoor een snelle pass/fail voordat je individueleDigitalSignature.IsValidwaarden doorloopt. SignatureTypevertelt je welk ondertekeningsmechanisme de handtekening heeft geproduceerd (CryptoApivs.XmlDsig); dit beïnvloedt welke certificaatvelden betekenisvol zijn.- Beschouw
IsValid == falseals een harde foutconditie in elke geautomatiseerde document-intake-pipeline — presenteer handtekeningmetadata van een ongeldige handtekening niet als betrouwbaar.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
DigitalSignatures.Count is 0 op een ondertekend .docx | Bestand is opnieuw opgeslagen door een tool die het handtekeningdeel heeft verwijderd | Controleer tegen het originele ondertekende bestand, niet tegen een opnieuw opgeslagen kopie |
Handtekening meldt IsValid = false | Documentinhoud gewijzigd na ondertekening, of het certificaat is niet vertrouwd/verlopen | Behandel als ongeldig; probeer de handtekening niet te “repareren” |
| Pogingen om een document te ondertekenen hebben geen effect | Ondertekenen is niet geïmplementeerd in deze FOSS-editie | Gebruik Aspose.Words voor .NET (commercieel) voor ondertekeningsworkflows |
CertificateHolder.Certificate gooit een uitzondering bij inspectie | Onderliggende certificaatgegevens zijn misvormd of het handtekeninggedeelte is corrupt | Bevestig dat het bronbestand een echt, onveranderd ondertekend document is |
FAQ
Kan Aspose.Words FOSS voor .NET een document ondertekenen?
Nee. Deze editie kan bestaande digitale handtekeningen verifiëren, maar kan geen nieuwe maken. De DigitalSignatureUtil.Sign() methode en SignOptions klasse bestaan in het API oppervlak voor structurele compatibiliteit, maar ondertekenen is hier niet functioneel.
Hoe controleer ik of een document ondertekend is zonder het volledig te laden?
Roep DigitalSignatureUtil.LoadSignatures(fileName) aan, die een DigitalSignatureCollection direct uit het bestand retourneert.
Wat betekent DigitalSignatureCollection.IsValid?
Het is true alleen wanneer elke handtekening in de collectie individueel geldig is — een snelle manier om de algehele handtekeningintegriteit van het document te controleren voordat elke DigitalSignature wordt geïnspecteerd.
Waar haal ik de certificaatdetails voor een handtekening?
Via DigitalSignature.CertificateHolder.Certificate, die een standaard .NET X509Certificate2 retourneert.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
Document.DigitalSignatures | Handtekeningen die al aan een geladen document zijn gekoppeld |
DigitalSignatureUtil.LoadSignatures() | Lees handtekeningen uit een bestand of stream zonder het volledige document te laden |
DigitalSignatureCollection | Alleen-lezen collectie van DigitalSignature objecten; IsValid, Count |
DigitalSignature | Een enkele handtekening: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Omhult de ondertekening X509Certificate2 |