Робота з цифровими підписами
Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації.
Aspose.Words підтримує документи з цифровими підписами та надає доступ до них, що дозволяє виявляти та утверджувати цифрові підписи на документі та підписати сформований документ PDF із заданою довідкою. В даний час цифрові підписи підтримуються на DOC, OOXML та ODT документи. Підписання створених документів здійснюється у форматі PDF.
Почати онлайн
Ми можемо самі зателефонувати одержувачу. Безкоштовний підпис онлайнй
Цифрові підписи не зберігаються на відкритій та Зберегти
Важливим моментом для замітки є те, що документ, завантажений, а потім збережений за допомогою Aspose.Words втратить підписи, які підписуються на документ. Цей дизайн як цифровий підпис гарантує, що зміст не був модифікований і додатково автентифікує визначення, який підписаний документом. Ці принципи будуть недійсними, якщо оригінальні підписи були передані до отриманого документа.
У зв’язку з цим, якщо ви обробляєте документи, завантажені на сервер, це може бути потенційно означати, що ви можете псувати документ, завантажений на сервер таким чином, не знаючи. Таким чином, для перевірки цифрових підписів на документі та отримання відповідної дії, якщо будь-який знайдений, наприклад, оповіщення може бути відправлено клієнту, повідомляє про те, що документ, який передається, містить цифрові підписи, які будуть втрачені, якщо він обробляється. Ви можете завантажити файл шаблону цього прикладу з Головнай
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
info = aw.FileFormatUtil.detect_file_format(docs_base.my_dir + "Digitally signed.docx") | |
if info.has_digital_signature: | |
print("Document has digital signatures, they will be lost if you open/save this document with Aspose.words.") | |
Код вище використовується FileFormatUtil.detect_file_format метод виявлення, якщо документ містить цифрові підписи без завантаження документа першим. Це забезпечує ефективний і безпечний спосіб перевірки документа для підписів перед їх обробкою. При виконанні метод повертає FileFormatInfo об’єкт, який забезпечує майно FileFormatInfo.has_digital_signatureй Це майно повертається true якщо документ містить один або кілька цифрових підписів. Важливо відзначити, що цей метод не перевіряє підписи, він визначає, чи присутні підписи. Дійсні цифрові підписи покриваються в наступному розділі.
Count
майно майна Document.digital_signatures збірка.
Цифрові підписи на Macros (VBA Projects)
Ви можете отримати доступ до цифрових підписів на макроси. Це тому Aspose.Words не має прямої угоди з макросами в документі. Проте цифрові підписи на макроси зберігаються при експорті документа в будь-який формат слово. Ці підписи можуть бути збережені на Коді ВБА, оскільки бінарний вміст макросів не змінено навіть якщо сам документ модифікований.
Доступ та перевірка цифрових підписів
Документ може мати декілька цифрових підписів. Ці підписи можуть отримати доступ до всіх Document.digital_signatures збірка. Кожен об’єкт повертається DigitalSignature що представляє собою єдиний цифровий підпис, що належить до документа. Це забезпечує членів, які дозволяють перевірити дійсність підпису.
Найголовніше майно для перевірки з цифровими підписами – це дійсність кожного підпису в документі. Всі підписи в документі можуть бути дійсні один раз, викликаючи DigitalSignatureCollection.is_valid майно. Це повернеться true якщо всі підписи в документі діють або якщо документ не має підписів і false якщо принаймні один цифровий підпис не діє.
Кожен підпис також може бути індивідуально ввірений DigitalSignature.is_validй Підпис не може бути дійсним з декількох причин, наприклад, документ було змінено з моменту підписання або отримання сертифікату. Додаткову інформацію про підпис також можна отримати. Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації. Ви можете завантажити файл шаблону цього прикладу з Головнай
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Digitally signed.docx") | |
for signature in doc.digital_signatures : | |
print("*** Signature Found ***") | |
print("Is valid: " + str(signature.is_valid)) | |
# This property is available in MS Word documents only. | |
print("Reason for signing: " + signature.comments) | |
print("Time of signing: " + str(signature.sign_time)) | |
#print("Subject name: " + signature.certificate_holder.certificate.subject_name.name) | |
#print("Issuer name: " + signature.certificate_holder.certificate.issuer_name.name) | |
print() | |
Підписання документів Word
DigitalSignatureUtil Клас надає методи підписання документа. DigitalSignatureUtil.sign метод вивіски джерело документа з використанням CertificateHolder з цифровим підписом та записами підписаного документа на потік призначення
Нижче наведено, як записати простий документ
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
certHolder = aw.digitalsignatures.CertificateHolder.create(docs_base.my_dir + "morzal.pfx", "aw") | |
aw.digitalsignatures.DigitalSignatureUtil.sign(docs_base.my_dir + "Digitally signed.docx", docs_base.artifacts_dir + "Document.signed.docx", certHolder) |
Нижче показано, як зареєструватися зашифрований документ
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
signOptions = aw.digitalsignatures.SignOptions() | |
signOptions.decryption_password = "decryptionPassword" | |
certHolder = aw.digitalsignatures.CertificateHolder.create(docs_base.my_dir + "morzal.pfx", "aw") | |
aw.digitalsignatures.DigitalSignatureUtil.sign(docs_base.my_dir + "Digitally signed.docx", docs_base.artifacts_dir + "Document.encrypted_document.docx", | |
certHolder, signOptions) |
Підписання документа Word з лініями Signature
Ви можете зареєструвати початковий документ за допомогою CertificateHolder і SignOptions з цифровим підписом та записами підписаного документа на файл призначення. Використання SignOptions Ви можете вказати параметри оформлення документів. Нижче наведено, як створити новий рядок підпису та реєстраційний документ
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
signatureLine = builder.insert_signature_line(aw.SignatureLineOptions()).signature_line | |
doc.save(docs_base.artifacts_dir + "SignDocuments.signature_line.docx") | |
signOptions = aw.digitalsignatures.SignOptions() | |
signOptions.signature_line_id = signatureLine.id | |
with open(docs_base.images_dir + "Enhanced Windows MetaFile.emf", "rb") as image_file: | |
signOptions.signature_line_image = image_file.read() | |
certHolder = aw.digitalsignatures.CertificateHolder.create(docs_base.my_dir + "morzal.pfx", "aw") | |
aw.digitalsignatures.DigitalSignatureUtil.sign(docs_base.artifacts_dir + "SignDocuments.signature_line.docx", | |
docs_base.artifacts_dir + "SignDocuments.new_signature_line.docx", certHolder, signOptions) |
Нижче показано, як змінити існуючий рядок підпису та реєстраційний документ
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Signature line.docx") | |
signatureLine = doc.first_section.body.get_child(aw.NodeType.SHAPE, 0, True).as_shape().signature_line | |
signOptions = aw.digitalsignatures.SignOptions() | |
signOptions.signature_line_id = signatureLine.id | |
imagefile = open(docs_base.images_dir + "Enhanced Windows MetaFile.emf", "rb") | |
with open(docs_base.images_dir + "Enhanced Windows MetaFile.emf", "rb") as image_file: | |
signOptions.signature_line_image = image_file.read() | |
certHolder = aw.digitalsignatures.CertificateHolder.create(docs_base.my_dir + "morzal.pfx", "aw") | |
aw.digitalsignatures.DigitalSignatureUtil.sign(docs_base.my_dir + "Digitally signed.docx", | |
docs_base.artifacts_dir + "SignDocuments.signing_existing_signature_line.docx", certHolder, signOptions) |
Запис документа Word за допомогою ідентифікатора сигналу
Нижче показано, як зареєструватися документ Word за допомогою ідентифікатора постачальника підписів. Криптографічний сервіс провайдер (CSP) є незалежним програмним модулем, який фактично виконує алгоритми криптографічного дослідження для автентифікації, кодування та шифрування. MS Office залишає за собою значення {00000000-0000-0000-0000-0000-000000000000000000000000} для його постачальника підписів за замовчуванням.
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Signature line.docx") | |
signatureLine = doc.first_section.body.get_child(aw.NodeType.SHAPE, 0, True).as_shape().signature_line | |
signOptions = aw.digitalsignatures.SignOptions() | |
signOptions.provider_id = signatureLine.provider_id | |
signOptions.signature_line_id = signatureLine.id | |
certHolder = aw.digitalsignatures.CertificateHolder.create(docs_base.my_dir + "morzal.pfx", "aw") | |
aw.digitalsignatures.DigitalSignatureUtil.sign(docs_base.my_dir + "Digitally signed.docx", | |
docs_base.artifacts_dir + "SignDocuments.set_signature_provider_id.docx", certHolder, signOptions) |
Створити новий підпис Лінія Sign Word Документація за допомогою ідентифікатора постачальника
Нижче наведено, як створити рядок підпису та підписку Документ Word за допомогою ідентифікатора постачальника підписів.
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document() | |
builder = aw.DocumentBuilder(doc) | |
signatureLineOptions = aw.SignatureLineOptions() | |
signatureLineOptions.signer = "vderyushev" | |
signatureLineOptions.signer_title = "QA" | |
signatureLineOptions.email = "vderyushev@aspose.com" | |
signatureLineOptions.show_date = True | |
signatureLineOptions.default_instructions = False | |
signatureLineOptions.instructions = "Please sign here." | |
signatureLineOptions.allow_comments = True | |
signatureLine = builder.insert_signature_line(signatureLineOptions).signature_line | |
signatureLine.provider_id = uuid.UUID('{CF5A7BB4-8F3C-4756-9DF6-BEF7F13259A2}') | |
doc.save(docs_base.artifacts_dir + "SignDocuments.signature_line_provider_id.docx") | |
signOptions = aw.digitalsignatures.SignOptions() | |
signOptions.signature_line_id = signatureLine.id | |
signOptions.provider_id = signatureLine.provider_id | |
signOptions.comments = "Document was signed by vderyushev" | |
signOptions.sign_time = datetime.today() | |
certHolder = aw.digitalsignatures.CertificateHolder.create(docs_base.my_dir + "morzal.pfx", "aw") | |
aw.digitalsignatures.DigitalSignatureUtil.sign(docs_base.artifacts_dir + "SignDocuments.signature_line_provider_id.docx", | |
docs_base.artifacts_dir + "SignDocuments.create_new_signature_line_and_set_provider_id.docx", certHolder, signOptions) |
Доступ до цифрового значення Signature
Aspose.Words також забезпечує можливість отримання цифрового значення підпису з цифрово підписаного документа як байтовий масив за допомогою SignatureValue майно.
Приклад коду показує, як отримати значення цифрового підпису як байтовий масив з документа:
doc = aw.Document(MY_DIR + "Digitally signed.docx")
for digital_signature in doc.digital_signatures:
signature_value = base64.b64encode(digital_signature.signature_value)
print(f"Base64 signature value is: {signature_value}")