Объединение и разделение подписей с КриптоАРМ Server
Управляйте подписями как данными: объединяйте несколько подписей в одну, собирайте присоединённую подпись, меняйте формат и разделяйте обратно — всё через простые REST-запросы к КриптоАРМ Server.
Зачем это нужно
Операции с подписями решают три типовые задачи документооборота:
- Соподпись. Документ подписывают несколько сторон, каждая создаёт свою подпись — затем подписи объединяются в один файл.
- Смена формата. Одна система ЭДО требует отсоединённую подпись (файл отдельно от документа), другая — присоединённую (всё в одном). Сервер конвертирует между ними.
- Разделение. Из общей подписи с несколькими подписантами вытащить отдельные подписи — например, для архивирования или проверки по одной.
Отсоединённая и присоединённая подпись
Прежде чем объединять, важно различать два вида подписи:
- Отсоединённая — подпись хранится отдельно от документа. Документ не изменяется, подпись лежит рядом.
- Присоединённая — подпись включает сам документ внутри. Один файл содержит и данные, и подпись.
Объединение подписей
Метод /cms/merge принимает несколько отсоединённых CAdES-подписей и возвращает одну объединённую:
curl -X POST https://<host>/cms/merge \
-H "Content-Type: application/json" \
-d '{
"signatures": [
"MIAGCSqGSIb3DQEHAqCAMI…",
"MIAGCSqGSIb3DQEHAqCAMI…"
]
}'
Ответ:
{ "status": 200, "mergedSignature": "MIAGCSqGSIb3DQEHAqCAMI…" }
Результат — одна подпись, которая содержит подписи всех участников. Это самый простой способ собрать соподпись в единый файл.
Объединение в присоединённую подпись
Если нужно получить присоединённую подпись (документ внутри), добавьте сам документ:
curl -X POST https://<host>/cms/merge-attached \
-H "Content-Type: application/json" \
-d '{
"document": "SGVsbG8sIFdvcmxkIQ==",
"signatures": [
"MIAGCSqGSIb3DQEHAqCAMI…",
"MIAGCSqGSIb3DQEHAqCAMI…"
]
}'
Ответ — присоединённая подпись в поле mergedSignature: документ и все подписи в одном файле.
Из присоединённой — в отсоединённую
Обратная операция разбирает присоединённую подпись: извлекает документ и возвращает отдельные подписи:
curl -X POST https://<host>/cms/attached-to-detached \
-H "Content-Type: application/json" \
-d '{"attachedSignature": "MIAGCSqGSIb3DQEHAqCAMI…"}'
Ответ:
{
"status": 200,
"detachedSignatures": ["MIAGCS…", "MIAGCS…"],
"content": "SGVsbG8sIFdvcmxkIQ=="
}
content — извлечённый документ, detachedSignatures — подписи, отделённые от данных.
Разделение отсоединённой подписи
Метод /cms/detached-split разбивает отсоединённую подпись на отдельные подписи — по числу подписантов:
curl -X POST https://<host>/cms/detached-split \
-H "Content-Type: application/json" \
-d '{"detachedSignature": "MIAGCSqGSIb3DQEHAqCAMI…"}'
Ответ:
{
"status": 200,
"detachedSignatures": ["MIAGCS…", "MIAGCS…"]
}
Результат — всегда массив: при одной подписи в нём один элемент, при нескольких — по одной на каждого подписанта.
Работа с файлами
Все четыре операции есть и в файловом варианте — передавайте подписи и документы напрямую, без упаковки в Base64:
curl -X POST https://<host>/cms/merge-file \
-F "signatures=@sign1.sig" \
-F "signatures=@sign2.sig" \
-o merged.sig
Эндпоинты: /cms/merge-file, /cms/merge-attached-file, /cms/attached-to-detached-file, /cms/detached-split-file.
Заключение
КриптоАРМ Server берёт на себя всю механику работы с подписями: соподпись, смена формата и разделение выполняются отдельными REST-вызовами, без ручной работы с криптографией. Объединяйте, конвертируйте и разделяйте подписи в любом сочетании.
По вопросам интеграции пишите на support@trusted.ru