Цифрові підписи
Цифрові підписи
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, щоб ви могли інспектувати стандартні поля сертифіката (видавець, суб’єкт, строк дії) за допомогою власних API сертифікатів .NET.
Що не підтримується в цьому виданні
Поверхня API все ще оголошує члени, пов’язані з підписанням — DigitalSignatureUtil.Sign(), SignOptions, та XmlDsigLevel — для структурної сумісності з комерційною Aspose.Words для .NET об’єктною моделлю, проте створення нового цифрового підпису в документі не працює в цьому FOSS-виданні. Використовуйте це видання для verify підписів, які вже існують у документі; процес підписання вимагає Aspose.Words для .NET.
Поради та найкращі практики
- Віддавайте перевагу
DigitalSignatureUtil.LoadSignatures()замість відкриття повногоDocument, коли вам потрібно лише перевірити, чи підписано файл — це уникає витрат на розбір усього тіла документа. - Спочатку перевірте
DigitalSignatureCollection.IsValidдля швидкого pass/fail, перш ніж перебирати окремі значення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 | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Обгортає підпис X509Certificate2 |