التوقيعات الرقمية
التوقيعات الرقمية
يمكن لـ Aspose.Words FOSS لـ .NET فحص والتحقق من التواقيع الرقمية المرفقة بالفعل بـ .docx المستند من خلال Aspose.Words.DigitalSignatures المجال. يغطي هذا الإصدار التوقيع verification — قراءة بيانات التعريف للتوقيع، والتحقق من الصلاحية، وفحص شهادة التوقيع. لا يتضمن القدرة على إنشاء توقيعات جديدة على مستند.
قراءة التوقيعات من مستند
كل Document يُظهر خاصية DigitalSignatures تُعيد DigitalSignatureCollection — مجموعة قراءة-فقط وقابلة للتعداد من كائنات DigitalSignature الموجودة بالفعل في الملف المُحمَّل. DigitalSignatureUtil.LoadSignatures(fileName) (وLoadSignatures(stream) المُحمَّل الزائد) يقرأ التوقيعات مباشرةً من ملف أو تدفق دون تحميل المستند بالكامل إلى كائن Document، وهو مفيد عندما تحتاج فقط للتحقق من حالة التوقيع. خاصية IsValid في المجموعة تُبلغ عما إذا كان كل توقيع يحتويه صالحًا، وCount تُبلغ عن عدد التوقيعات التي تم العثور عليها.
فحص توقيع فردي
كل DigitalSignature يُظهر IsValid (ما إذا كان التوقيع صالحًا تشفيريًا)، SignatureType (قيمة DigitalSignatureType — CryptoApi أو XmlDsig أو Unknown)، SignTime، Comments، SubjectName، IssuerName، والبايتات الخام SignatureValue. خاصية CertificateHolder تُعيد كائن CertificateHolder يلتف حول شهادة التوقيع؛ خاصية Certificate تُظهر X509Certificate2 الأساسية حتى تتمكن من فحص حقول الشهادة القياسية (المُصدر، الموضوع، فترة الصلاحية) باستخدام واجهات برمجة الشهادات الخاصة بـ .NET.
ما غير المدعوم في هذا الإصدار
ما يزال سطح API يعلن عن الأعضاء المتعلقة بالتوقيع — DigitalSignatureUtil.Sign(), SignOptions، و XmlDsigLevel — للتوافق البنيوي مع نموذج الكائن التجاري Aspose.Words لـ .NET، لكن إنشاء توقيع رقمي جديد على مستند غير فعال في هذا الإصدار FOSS. استخدم هذا الإصدار لـ verify التواقيع الموجودة بالفعل في مستند؛ يتطلب سير عمل التوقيع يحتاج Aspose.Words لـ .NET.
نصائح وأفضل الممارسات
- يفضل استخدام
DigitalSignatureUtil.LoadSignatures()على فتحDocumentكامل عندما تحتاج فقط للتحقق مما إذا كان الملف موقعًا — فهذا يتجنب تكلفة تحليل جسم المستند بالكامل. - تحقق من
DigitalSignatureCollection.IsValidأولاً للحصول على نتيجة سريعة نجاح/فشل قبل تكرار قيمDigitalSignature.IsValidالفردية. SignatureTypeيخبرك أي آلية توقيع أنتجت التوقيع (CryptoApiمقابلXmlDsig)؛ هذا يؤثر على الحقول المعنوية في الشهادة.- عامل
IsValid == falseكحالة فشل حازمة في أي خط أنابيب تلقائي لاستلام المستندات — لا تعرض بيانات التعريف الخاصة بالتوقيع من توقيع غير صالح على أنها موثوقة.
مشكلات شائعة
| مشكلة | السبب | إصلاح |
|---|---|---|
DigitalSignatures.Count يساوي 0 على .docx موقّع | تم إعادة حفظ الملف بواسطة أداة أزالت جزء التوقيع | تحقق مقابل الملف الأصلي الموقّع، وليس نسخةً أعيد حفظها |
التوقيع يُظهر IsValid = false | تم تغيير محتوى المستند بعد التوقيع، أو الشهادة غير موثوقة/منتهية الصلاحية | اعتبره غير صالح؛ لا تحاول “إصلاح” التوقيع |
| محاولة توقيع مستند لا تُحدث أي تأثير | التوقيع غير مُنفّذ في هذه النسخة المفتوحة المصدر (FOSS) | استخدم Aspose.Words لـ .NET (تجاري) لتدفقات العمل الخاصة بالتوقيع |
CertificateHolder.Certificate يُثير استثناءً عند الفحص | بيانات الشهادة الأساسية مشوهة أو جزء التوقيع تالف | تأكد من أن ملف المصدر هو وثيقة موقعة أصلية وغير مُعدَّلة |
FAQ
هل يمكن لـ Aspose.Words FOSS لـ .NET توقيع مستند؟
لا. يمكن لهذا الإصدار التحقق من التوقيعات الرقمية الحالية لكنه لا يستطيع إنشاء توقيعات جديدة. طريقة DigitalSignatureUtil.Sign() وفئة SignOptions موجودتان في سطح API للتوافق البنيوي، لكن التوقيع غير فعال هنا.
كيف يمكنني التحقق مما إذا كان المستند موقّعًا دون تحميله بالكامل؟
استدعِ DigitalSignatureUtil.LoadSignatures(fileName)، والذي يُعيد DigitalSignatureCollection مباشرةً من الملف.
ماذا يعني DigitalSignatureCollection.IsValid؟
إنه true فقط عندما تكون كل توقيع في المجموعة صالحًا بشكل فردي — طريقة سريعة للتحقق من سلامة توقيع المستند ككل قبل فحص كل DigitalSignature.
من أين أحصل على تفاصيل الشهادة لتوقيع ما؟
من خلال DigitalSignature.CertificateHolder.Certificate، الذي يُعيد معيارية .NET X509Certificate2.
API Reference ملخص
| فئة / طريقة | وصف |
|---|---|
Document.DigitalSignatures | التواقيع مرفقة بالفعل بوثيقة محمّلة |
DigitalSignatureUtil.LoadSignatures() | قراءة التوقيعات من ملف أو تدفق دون تحميل المستند بالكامل |
DigitalSignatureCollection | مجموعة للقراءة فقط من كائنات DigitalSignature; IsValid, Count |
DigitalSignature | توقيع واحد: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | تعداد: CryptoApi, XmlDsig, Unknown |
CertificateHolder | يغلف عملية التوقيع X509Certificate2 |