Tanda Tangan Digital
Tanda Tangan Digital
Aspose.Words FOSS untuk .NET dapat memeriksa dan memverifikasi tanda tangan digital yang sudah terlampir pada sebuah .docx dokumen melalui Aspose.Words.DigitalSignatures namespace. Edisi ini mencakup tanda tangan verification — membaca metadata tanda tangan, memeriksa keabsahan, dan memeriksa sertifikat penandatangan. Tidak termasuk kemampuan untuk membuat tanda tangan baru pada sebuah dokumen.
Membaca Tanda Tangan dari Dokumen
Setiap Document mengekspos properti DigitalSignatures yang mengembalikan DigitalSignatureCollection — sebuah koleksi hanya-baca, dapat diiterasi dari objek DigitalSignature yang sudah ada di file yang dimuat. DigitalSignatureUtil.LoadSignatures(fileName) (dan overload LoadSignatures(stream)) membaca tanda tangan secara langsung dari file atau aliran tanpa memuat seluruh dokumen ke dalam objek Document, yang berguna ketika Anda hanya perlu memeriksa status tanda tangan. Properti IsValid pada koleksi melaporkan apakah setiap tanda tangan yang dikandungnya valid, dan Count melaporkan berapa banyak tanda tangan yang ditemukan.
Memeriksa Tanda Tangan Individu
Setiap DigitalSignature mengekspos IsValid (apakah tanda tangan secara kriptografis valid), SignatureType (nilai DigitalSignatureType — CryptoApi, XmlDsig, atau Unknown), SignTime, Comments, SubjectName, IssuerName, dan byte mentah SignatureValue. Properti CertificateHolder mengembalikan objek CertificateHolder yang membungkus sertifikat penandatangan; properti Certificate mengekspos X509Certificate2 yang mendasarinya sehingga Anda dapat memeriksa bidang standar sertifikat (issuer, subject, validity period) dengan API sertifikat milik .NET.
Apa yang Tidak Didukung dalam Edisi Ini
Permukaan API masih mendeklarasikan anggota terkait penandatanganan — DigitalSignatureUtil.Sign(), SignOptions, dan XmlDsigLevel — untuk kompatibilitas struktural dengan model objek Aspose.Words komersial untuk .NET, tetapi membuat tanda tangan digital baru pada sebuah dokumen tidak berfungsi dalam edisi FOSS ini. Gunakan edisi ini untuk verify tanda tangan yang sudah ada dalam sebuah dokumen; alur kerja penandatanganan memerlukan Aspose.Words untuk .NET.
Tips dan Praktik Terbaik
- Lebih pilih
DigitalSignatureUtil.LoadSignatures()daripada membukaDocumentsecara lengkap ketika Anda hanya perlu memeriksa apakah sebuah file ditandatangani — ini menghindari biaya parsing seluruh isi dokumen. - Periksa
DigitalSignatureCollection.IsValidterlebih dahulu untuk lulus/gagal cepat sebelum mengiterasi nilaiDigitalSignature.IsValidindividual. SignatureTypememberi tahu Anda mekanisme penandatanganan mana yang menghasilkan tanda tangan (CryptoApivs.XmlDsig); ini memengaruhi bidang sertifikat mana yang bermakna.- Anggap
IsValid == falsesebagai kondisi kegagalan keras dalam setiap pipeline pengambilan dokumen otomatis — jangan menampilkan metadata tanda tangan dari tanda tangan yang tidak valid sebagai dapat dipercaya.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
DigitalSignatures.Count adalah 0 pada .docx yang ditandatangani | File disimpan ulang oleh alat yang menghapus bagian tanda tangan | Verifikasi terhadap file yang ditandatangani asli, bukan salinan yang disimpan ulang |
Tanda tangan melaporkan IsValid = false | Konten dokumen berubah setelah penandatanganan, atau sertifikat tidak tepercaya/kadaluarsa | Anggap tidak valid; jangan mencoba “repair” tanda tangan |
| Mencoba menandatangani dokumen tidak menghasilkan apa-apa | Penandatanganan belum diimplementasikan dalam edisi FOSS ini | Gunakan Aspose.Words untuk .NET (komersial) untuk alur kerja penandatanganan |
CertificateHolder.Certificate menimbulkan pengecualian saat diperiksa | Data sertifikat yang mendasari rusak formatnya atau bagian tanda tangan korup | Pastikan file sumber adalah dokumen bertanda tangan yang asli dan tidak dimodifikasi |
FAQ
Apakah Aspose.Words FOSS untuk .NET dapat menandatangani dokumen?
Tidak. Edisi ini dapat memverifikasi tanda tangan digital yang ada tetapi tidak dapat membuat yang baru. Metode DigitalSignatureUtil.Sign() dan kelas SignOptions ada di permukaan API untuk kompatibilitas struktural, tetapi penandatanganan tidak berfungsi di sini.
Bagaimana saya memeriksa apakah sebuah dokumen ditandatangani tanpa memuatnya sepenuhnya?
Panggil DigitalSignatureUtil.LoadSignatures(fileName), yang mengembalikan DigitalSignatureCollection langsung dari file.
Apa arti DigitalSignatureCollection.IsValid?
Ini adalah true hanya ketika setiap tanda tangan dalam koleksi secara individual valid — cara cepat untuk memeriksa integritas tanda tangan dokumen secara keseluruhan sebelum memeriksa setiap DigitalSignature.
Di mana saya dapat memperoleh detail sertifikat untuk sebuah tanda tangan?
Melalui DigitalSignature.CertificateHolder.Certificate, yang mengembalikan .NET X509Certificate2 standar.
API Reference Ringkasan
| Kelas / Metode | Deskripsi |
|---|---|
Document.DigitalSignatures | Tanda tangan sudah terlampir pada dokumen yang dimuat |
DigitalSignatureUtil.LoadSignatures() | Baca tanda tangan dari file atau aliran tanpa memuat seluruh dokumen |
DigitalSignatureCollection | Koleksi hanya-baca dari objek DigitalSignature; IsValid, Count |
DigitalSignature | Satu tanda tangan: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Membungkus penandatanganan X509Certificate2 |