Сервис проверки и визуализации электронной подписи - API КриптоАРМ
Перейти к содержанию

Сервис проверки и визуализации электронной подписи

В статье «Автоматизация проверки электронной подписи с использованием КриптоАРМ Сервер» мы описали, как с помощью КриптоАРМ 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.