Цифрові підписи

Цифрові підписи

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
DigitalSignatureTypeEnum: CryptoApi, XmlDsig, Unknown
CertificateHolderОбгортає підпис X509Certificate2

Дивіться також

 Українська