Сервис проверки и визуализации электронной подписи
В статье «Автоматизация проверки электронной подписи с использованием КриптоАРМ Сервер» мы описали, как с помощью КриптоАРМ SDK реализовать проверку подписи. В этой статье покажем, как с помощью REST API можно проверить электронную подпись и визуализировать штампы на PDF-документах. Попробовать сервис можно здесь, а исходный код доступен в репозитории.
Обзор сервиса и его компонентов
Сервис проверки и визуализации электронной подписи предлагает следующие возможности: 1. REST API для обработки документов и проверки подписей. 2. Визуализацию штампов электронной подписи для PDF-документов. 3. Создание отчетов о проверке подписей для документов других форматов.
Наш тестовый сервис позволяет загружать документы и подписи в различных форматах (поддерживается проверка подписей PADES для PDF). Для PDF-файлов есть возможность создавать копию с визуальным штампом, а для других форматов — формировать отчет.
Сервис использует следующие библиотеки из состава КриптоАРМ SDK: - trusted-crypto — для проверки подписей и сертификатов; - trusted-pdf — для работы с PDF.
Зачем нужна визуализация электронной подписи?
Электронная подпись подтверждает авторство, неизменность и целостность данных. Однако бывает необходимо (например при для пользователей, работающих с бумажными копиями электронных документов), чтобы документы содержали отметку, визуально подтверждающую факт подписания. Визуализация электронной подписи — это добавление специального штампа на электронный документ, состоящего из:
- фразы «Документ подписан электронной подписью»;
- номера сертификата ключа подписи;
- ФИО владельца сертификата;
- срока действия сертификата;
- дополнительных атрибутов, такие как эмблема или логотип (при необходимости).
Согласно п. 5.23 ГОСТ Р 7.0.97-2016 визуализация подписи должна быть аналогична месту подписи в бумажном документе, а также видимой и читаемой.
Примеры запросов к сервису
1. Загрузка и проверка подписанного документа
Первый шаг — загрузка документа и подписи с помощью метода POST /api/v1/signature/verify
. Этот метод проверяет действительность электронной подписи.
Запрос:
- Метод: POST /cms/verify
- Заголовок: Content-Type: multipart/form-data
- Параметры:
- data
( Base64
): документ, для которого нужно проверить подпись, если сама подпись открепленная.
- cms
(обязательный, `Base64``): CMS подпись.
Пример ответа:
{
"status": 200,
"message": "",
"isValid": true,
"isValidSign": true,
"signs": [
{
"cadesTypeName": "CAdES-BES",
"certificate": {
"version": 3,
"status": true,
"subjectFriendlyName": "esia test3",
"issuerFriendlyName": "CRYPTO-PRO Test Center 2",
"subjectName": "CN=esia test3",
"issuerName": "E=support@cryptopro.ru\r\nC=RU\r\nL=Moscow\r\nO=CRYPTO-PRO LLC\r\nCN=CRYPTO-PRO Test Center 2",
"notAfter": "2024-10-26T16:25:37.000Z",
"notBefore": "2024-08-26T16:15:37.000Z",
"serialNumber": "120064ECE1352507757C00A08B00020064ECE1",
"thumbprint": "29063cd83537dbbd0a221705859b8f6e5bec5ad0",
"signatureAlgorithm": "1.2.643.7.1.1.3.2",
"signatureDigestAlgorithm": "1.2.643.7.1.1.2.2",
"publicKeyAlgorithm": "1.2.643.7.1.1.1.1"
},
"certificateData": "MIIDEz...",
"issuerName": "E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2",
"serialNumber": "120064ECE1352507757C00A08B00020064ECE1",
"signatureAlgorithm": "1.2.643.7.1.1.3.2",
"signatureDigestAlgorithm": "1.2.643.7.1.1.2.2",
"certs": [
{
"status": true,
"subjectFriendlyName": "esia test3",
"issuerFriendlyName": "CRYPTO-PRO Test Center 2",
"subjectName": "CN=esia test3",
"issuerName": "E=support@cryptopro.ru\r\nC=RU\r\nL=Moscow\r\nO=CRYPTO-PRO LLC\r\nCN=CRYPTO-PRO Test Center 2",
"notAfter": "2024-10-26T16:25:37.000Z",
"notBefore": "2024-08-26T16:15:37.000Z",
"serialNumber": "120064ECE1352507757C00A08B00020064ECE1",
"thumbprint": "29063cd83537dbbd0a221705859b8f6e5bec5ad0",
"signatureAlgorithm": "1.2.643.7.1.1.3.2",
"signatureDigestAlgorithm": "1.2.643.7.1.1.2.2",
"publicKeyAlgorithm": "1.2.643.7.1.1.1.1"
}
],
"isCertChainValid": true
}
]
}
2. Визуализация штампа электронной подписи на PDF-документах
Для PDF-документов сервис позволяет добавить визуальный штамп, отображающий основные сведения о подписанте. Такой штамп делает документ наглядным и удобным для работы в бумажном виде.
3. Генерация отчета о проверке
Когда сервис получает документ в формате, отличном от PDF, вместо визуализации штампа можно запросить отчет о проверке подписи.
Заключение
Итак, мы рассмотрели наш пример сервиса проверки и визуализации электронной подписи с REST API. Визуализация штампа упрощает работу с PDF-документами, а отчеты о проверке позволяют легко получить подтверждение подлинности для других типов документов.
Попробуйте бесплатную демонстрацию сервиса.
Используя исходный код тестового стенда вы можете реализовать свое решение. Мы всегда рады помочь с реализацией и расширить функционал, вопросы можно отправлять нам на почту sales@cryptoarm.ru.