Digitala signaturer
Digitala signaturer
Aspose.Words FOSS för .NET kan inspektera och verifiera digitala signaturer som redan är bifogade till en .docx dokument genom den Aspose.Words.DigitalSignatures namnrymd. Denna utgåva täcker signatur verification — läsa signaturmetadata, kontrollera giltighet och granska signeringscertifikatet. Den inkluderar inte möjligheten att skapa nya signaturer i ett dokument.
Läsa signaturer från ett dokument
Varje Document exponerar en DigitalSignatures egenskap som returnerar en DigitalSignatureCollection — en skrivskyddad, uppräkningsbar samling av DigitalSignature objekt som redan finns i den laddade filen. DigitalSignatureUtil.LoadSignatures(fileName) (och LoadSignatures(stream)-överladdningen) läser signaturer direkt från en fil eller ström utan att ladda hela dokumentet i ett Document objekt, vilket är användbart när du bara behöver kontrollera signaturstatus. IsValid-egenskapen för samlingen rapporterar huruvida varje signatur den innehåller är giltig, och Count rapporterar hur många signaturer som hittades.
Inspektera en enskild signatur
Varje DigitalSignature exponerar IsValid (om signaturen är kryptografiskt giltig), SignatureType (ett DigitalSignatureType värde — CryptoApi, XmlDsig eller Unknown), SignTime, Comments, SubjectName, IssuerName och de råa SignatureValue bytes. CertificateHolder-egenskapen returnerar ett CertificateHolder objekt som omsluter signeringscertifikatet; dess Certificate-egenskap exponerar den underliggande X509Certificate2 så att du kan inspektera standardcertifikatfält (utfärdare, ämne, giltighetsperiod) med .NET s egna certifikat-API:er.
Vad som inte stöds i denna utgåva
Ytan för API deklarerar fortfarande signaturrelaterade medlemmar — DigitalSignatureUtil.Sign(), SignOptions, och XmlDsigLevel — för strukturell kompatibilitet med den kommersiella Aspose.Words för .NET objektmodellen, men att skapa en ny digital signatur i ett dokument är inte funktionellt i denna FOSS-utgåva. Använd denna utgåva för att verify signaturer som redan finns i ett dokument; ett signeringsflöde kräver Aspose.Words för .NET.
Tips och bästa praxis
- Föredra
DigitalSignatureUtil.LoadSignatures()framför att öppna helaDocumentnär du bara behöver kontrollera om en fil är signerad — det undviker kostnaden för att parsra hela dokumentkroppen. - Kontrollera
DigitalSignatureCollection.IsValidförst för ett snabbt godkännande/avslag innan du itererar över enskildaDigitalSignature.IsValid-värden. SignatureTypeberättar vilken signaturmekanism som skapade signaturen (CryptoApivs.XmlDsig); detta påverkar vilka certifikatfält som är meningsfulla.- Behandla
IsValid == falsesom ett hårt felvillkor i alla automatiserade dokumentintags-pipelines — exponera inte signaturmetadata från en ogiltig signatur som pålitlig.
Vanliga problem
| Problem | Orsak | Åtgärd |
|---|---|---|
DigitalSignatures.Count är 0 på en signerad .docx | Filen sparades om av ett verktyg som tog bort signaturdelen | Verifiera mot den ursprungliga signerade filen, inte en om-sparad kopia |
Signaturen rapporterar IsValid = false | Dokumentets innehåll har ändrats efter signering, eller så är certifikatet opålitligt/utgånget | Behandla som ogiltig; försök inte “reparera” signaturen |
| Att försöka signera ett dokument har ingen effekt | Signering är inte implementerad i denna FOSS-utgåva | Använd Aspose.Words för .NET (kommersiell) för signeringsflöden |
CertificateHolder.Certificate kastar ett fel vid inspektion | Underliggande certifikatdata är felaktigt formaterade eller signaturdelen är korrupt | Bekräfta att källfilen är ett äkta, oförändrat signerat dokument |
FAQ
Kan Aspose.Words FOSS för .NET signera ett dokument?
Nej. Denna utgåva kan verifiera befintliga digitala signaturer men kan inte skapa nya. Metoden DigitalSignatureUtil.Sign() och klassen SignOptions finns i API-ytan för strukturell kompatibilitet, men signering är inte funktionell här.
Hur kontrollerar jag om ett dokument är signerat utan att ladda det helt?
Anropa DigitalSignatureUtil.LoadSignatures(fileName), som returnerar en DigitalSignatureCollection direkt från filen.
Vad betyder DigitalSignatureCollection.IsValid?
Det är true endast när varje signatur i samlingen är individuellt giltig — ett snabbt sätt att kontrollera hela dokumentets signaturintegritet innan varje DigitalSignature inspekteras.
Var får jag certifikatdetaljerna för en signatur?
Via DigitalSignature.CertificateHolder.Certificate, som returnerar en standard .NET X509Certificate2.
API Reference Sammanfattning
| Klass / Metod | Beskrivning |
|---|---|
Document.DigitalSignatures | Signaturer som redan är bifogade till ett laddat dokument |
DigitalSignatureUtil.LoadSignatures() | Läs signaturer från en fil eller ström utan att ladda hela dokumentet |
DigitalSignatureCollection | Skrivskyddad samling av DigitalSignature-objekt; IsValid, Count |
DigitalSignature | En enda signatur: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Omsluter signeringen X509Certificate2 |