umcaservice / документація
umcaservice - кросплатформенний криптографічний REST API сервіс на базі сертифікованої ДССЗЗІ бібліотеки CryptoLib для інтеграції криптографії в веб-застосунки.
Наразі доступні дві редакції сервісу:
- basic - вільна версія сервісу для некомерційного використання. Основний функціонал - постановка вдосконаленого або кваліфікованого електронного підпису
- full - версія сервісу для комерційного використання. Функціонал - постановка та перевірка вдосконаленого або кваліфікованого ЕП, менеджмент сертифікатів та носіїв ключової інформації, направлене шифрування та розшифрування
- Windows 7 (з Service Pack 1), 8, 10, Windows Server 2012, 2016, 2019
- GNU/Linux (дистрибутиви на основі Debian, також є серверні збірки для CentOS/RHEL)
- Mac OS X 10.13+
- iOS 13+
- Android 7+
- Постановки ЕП(чистий підпис або конверти формату CAdES BES, CAdES TS, CAdES Long C, CAdES Long X)
- Перевірки конвертів ЕП, міток часу та сертифікатів
- Менеджменту косіїв ключової інформації(генерація та видалення ключів з сертифікатами, оновлення сертифікатів на НКІ, зміна pin-коду)
- Направленого шифрування та розшифрування даних
- Апаратні: пристрої з інтерфейсом PKCS#11
- Програмні в форматах: Pfx(PKCS#12), JKS (Java Key Store), .DAT(АТ "ІІТ"), .ZS2(АЦСК "Україна")
Використання
За замовчуванням, сервіс має стандартний набір налаштувань і не потребує додаткового налаштування, проте є можливість додаткового налаштування утиліти.
Основні налаштування утиліти записані в файлі конфігурації, якщо він відсутній - утиліта створює його за шляхом %APPDATA%/Avtor/UmCAService/umcago.conf
для Windows
та $HOME/.umcad/umcago.conf
для Linux та Mac OS X. Також доступний веб-конфігуратор сервісу(пункт меню "Конфігурація" в меню утиліти).
В комплекті umcaservice наявні дві бібліотеки PKCS#11 для токенів/смарт-карт ТОВ "АВТОР" моделей CC337 та CC338. Для підтримки інших смарт-карт чи токенів необхідно додати до списку Pkcs11Modules шляхи до бібіліотек PKCS#11 для цих пристроїв.
Приклади застосування API доступні у вигляді колекції Postman.
Також доступний демонстраційний веб-застосунок UmCADemo, що використовує API umcaservice.
Параметри командного рядка утиліти:
--text-mode, -t
- запустити утиліту в режимі командного рядка замість іконки в системному треї(тільки Linux, Mac OS X)--config path_to_config, -c path_to_config,
- вказати власний файл конфігурації--send-crashes, -s
- надсилати креш-дампи сервісу на наш сервер обробки, щоб ми змогли усунути проблему--language lang_code, -l lang_code
- перевизначити мову інтерфейсу сервісу(доступні значення:uk, en, de, ru, el
)--doc, -d
- запустити в режимі розробника(в контекстному меню буде пункт, який відкриває документацію)
У випадку, коли сервіс нештатно завершує роботу - система моніторингу формує звіт про помилку при наступному запуску сервісу.
Всі звіти зберігаються в папці %APPDATA%/Avtor/UmCAService/
для ОС Windows або $HOME/.umcad/
для Unix-систем з іменами:
виду umcago_{час формування}.crash
.
Сервіс підтримує опцію надсилання звітів про помилки на наш сервер збору креш-дампів, щоб ми мали інформацію для
вирішення проблеми. За замовчуванням ця функція відключена. Щоб увімкнути - необхідно запустити сервіс з прапорцем --send-crashes
.
При цьому трафік між клієнтом та сервером збору креш-дампів захищений за допомогою TLS. Важливо: ніякі інші персональні дані користувача,
крім версії сервісу, ОС, архітектури та креш-дампу не збираються і на сервер не передаються.
API
Взаємодія з сервісом відбувається через HHTP API, яке описане на цій сторінці. Кореневий URI API за замовчуванням: https://localhost:25989. При потребі його можна перевизначити через файл конфігурації. Нижче подані схеми API для редакцій basic та full
- вказує на наявність методу тільки в full версії сервісу
- вказує на те, що метод використовує коржики(cookie-файли) для збільшення продуктивності
- вказує на те, що метод доступний тільки при локальних викликах(
Referer=localhost
)- вказує на необхідність заповнення поля
- вказує на те, що поле має бути base64-рядком при передачі за допомогою multipart/form-data чи application/x-www-form-urlencoded
About
About
Отримати інформацію про сервіс
GET
/about
Response
application/json
AboutResponse
Struct
Name
Type
Description
Name
string
Version
string
Edition
string
Author
string
Email
string
AppID
string
OS
string
Arch
string
Certificates
CreateCertificate
Створення нового ключа та самопідписаного сертифікату на ключовому носії
POST
/certificates
Request
application/json
GenerateCertificateRequest
Struct
Структура запиту генерації нового ключа
Name
Type
Description
Pin
string
KeyRequest
KeyRequest
Запит ключа
KeyStore
SlotInfo
НКІ для генерації ключа
Response
application/json
CertificateDescriptorWide
Struct
Розширений дескриптор сертифікату
Name
Type
Description
Base64
string
Subject
map[string]string
Словник полів subjectRDN
Issuer
map[string]string
Словник полів issuerRDN
DirectoryAttributes
map[string]string
Словник розширення "атрибути директорії"
NotBefore
Timestamp
Початок дії сертифікату
NotAfter
Timestamp
Закінчення дії сертифікату
Email
string
Email згідно RFC 822
CertificateSerialNumber
string
Серійний номер сертифікату
KeyUsage
KU
Використання ключа
PublicKey
string
Відкритий ключ
PublicKeyAlg
string
Алгоритм відкритого ключа
KeyLength
int
Довжина ключа
CriticalEkus
[]string
Критичні розширені використання ключа
CertificatePolicies
[]string
Розширення "політики сертифікату"
SubjectKeyIdentifier
string
Розширення "ідентифікатор ключа"
AuthorityKeyIdentifier
string
Розширення "ідентифікатор ключа видавця"
SubjectFingerprint
string
Геш-сума структури subjectRDN
SelfSigned
bool
Визначення, чи самопідписаний сертифікат
AlternativeName
map[string][]string
Словник розширення "альтернативне ім'я суб'єкта", можливі ключі словника: "IPs", "DNSNames", "URIs", "EmailAddresses" або довільні об'єктні ідентифікатори
ExtendedKeyUsage
ExtendedKeyUsage
extended key usage extension
QcStatements
QcStatements
qcStatements extension
DeleteCertificate
Видалення сертифікату з ключового насія
DELETE
/certificates
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
DeleteCertificateRequest
Struct
Структура запиту на видалення сертифікату
Name
Type
Description
Certificate
[]byte
Pin
string
Response
application/json
GetCertificateStructure
Отримати структуру сертифікату
POST
/certificates/structure
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
CertificateStructRequest
Struct
Name
Type
Description
Certificate
[]byte
Response
application/json
CertificateDescriptor
Struct
Дескриптор сертифікату
Name
Type
Description
Subject
map[string]string
Словник полів subjectRDN
Issuer
map[string]string
Словник полів issuerRDN
DirectoryAttributes
map[string]string
Словник розширення "атрибути директорії"
NotBefore
Timestamp
Початок дії сертифікату
NotAfter
Timestamp
Закінчення дії сертифікату
Email
string
Email згідно RFC 822
CertificateSerialNumber
string
Серійний номер сертифікату
KeyUsage
KU
Використання ключа
PublicKey
string
Відкритий ключ
PublicKeyAlg
string
Алгоритм відкритого ключа
KeyLength
int
Довжина ключа
CriticalEkus
[]string
Критичні розширені використання ключа
CertificatePolicies
[]string
Розширення "політики сертифікату"
SubjectKeyIdentifier
string
Розширення "ідентифікатор ключа"
AuthorityKeyIdentifier
string
Розширення "ідентифікатор ключа видавця"
SubjectFingerprint
string
Геш-сума структури subjectRDN
SelfSigned
bool
Визначення, чи самопідписаний сертифікат
AlternativeName
map[string][]string
Словник розширення "альтернативне ім'я суб'єкта", можливі ключі словника: "IPs", "DNSNames", "URIs", "EmailAddresses" або довільні об'єктні ідентифікатори
ExtendedKeyUsage
ExtendedKeyUsage
extended key usage extension
QcStatements
QcStatements
qcStatements extension
GetCertificates
Отримання списку сертифікатів згідно фільтру
GET
/certificates
GetCertificatesRequest
Struct
Фільтр для пошуку сертифікатів в НКІ
Name
Type
Description
KsType
KsType
SubjectCN
string
SubjectSerialNumber
string
SelfSigned
bool
SubjectKeyIdentifier
string
SubjectFingerprint
string
KeyUsage
string
CertificateSerialNumber
string
SubjectUid
string
Email
string
IssuerCN
string
IssuerSN
string
Response
application/json
[]CertificateDescriptorWide
Array of CertificateDescriptorWide
UpdateCertificate
Оновлення сертифікату на ключовому носії або запис ідентифікатору запиту на сертифікат
PATCH
/certificates
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
UpdateCertificateRequest
Struct
Структура запиту оновлення сертифікату
Name
Type
Description
Certificate
[]byte
Pin
string
CaRequestID
string
Ідентифікатор запиту на отримання сертифікату в ЦСК
Response
application/json
Config
DeleteConfig
Видалити сертифікат з ключем на НКІ
DELETE
/config
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
Response
application/json
GetConfig
Отримання файлу конфігурації
GET
/config
Response
application/json
UmCAConfig
Struct
Структура конфігурації UmCAService
Name
Type
Description
Port
int
Порт на якому стартує сервіс
TLSKeyFile
string
Шлях до файлу з TLS ключем PKCS#8(формат PEM)
TLSCertFile
string
Шлях до файлу з TLS сертифікатом (формат PEM)
IsLocal
bool
Прапорець що вказує чи необхідно запускати сервіс в локальному режимі
WhiteList
[]string
Білий список дозволених сервісів (зірочка '*' - означає не виконувати перевірку Referer)
CmpServices
[]string
Cписок CMP-сервісів
TspServices
[]string
Список TSP-сервісів
FileKeyStores
[]string
Список шляхів до директорій з програмними ключами('%/' - скорочене позначення для знімних носіїв інформації, наприклад Flash-носії)
ProxySettings
ProxySettings
Налаштування проксі
CertificateCacheDir
string
Шлях до директорії з кешем сертифікатів та СВС
Pkcs11Modules
[]string
Список PKCS#11 модулів
TrustedCertificatesDir
string
Шлях до директорії з довіреними сертифікатами
IntermediateCertificatesDir
string
Шлях до директорії з проміжними сертифікатами
IntermediateCertificatesCmsURL
string
URL Cms - контейнер з проміжними сертифікатами
TrustedCertificatesCmsURL
string
URL Cms - контейнер з довіреними сертифікатами
Log
string
Шлях до файлу з логом, або пороженє значення, якщо лог необхідно писати в STDOUT
LogLevel
int
Рівень логування: 1 - DEBUG - максимальний рівень (в тому числі наявність запитів логується), 4 - ERRORS - рівень помилок, 5 - OFF - без логування
SimplifiedMode
bool
Прапорець, що вказує на запуск сервісу у спрощеному режимі
UpdateConfig
Оновлення файлу конфігурації
POST
/config
Request
application/json
UmCAConfig
Struct
Структура конфігурації UmCAService
Name
Type
Description
Port
int
Порт на якому стартує сервіс
TLSKeyFile
string
Шлях до файлу з TLS ключем PKCS#8(формат PEM)
TLSCertFile
string
Шлях до файлу з TLS сертифікатом (формат PEM)
IsLocal
bool
Прапорець що вказує чи необхідно запускати сервіс в локальному режимі
WhiteList
[]string
Білий список дозволених сервісів (зірочка '*' - означає не виконувати перевірку Referer)
CmpServices
[]string
Cписок CMP-сервісів
TspServices
[]string
Список TSP-сервісів
FileKeyStores
[]string
Список шляхів до директорій з програмними ключами('%/' - скорочене позначення для знімних носіїв інформації, наприклад Flash-носії)
ProxySettings
ProxySettings
Налаштування проксі
CertificateCacheDir
string
Шлях до директорії з кешем сертифікатів та СВС
Pkcs11Modules
[]string
Список PKCS#11 модулів
TrustedCertificatesDir
string
Шлях до директорії з довіреними сертифікатами
IntermediateCertificatesDir
string
Шлях до директорії з проміжними сертифікатами
IntermediateCertificatesCmsURL
string
URL Cms - контейнер з проміжними сертифікатами
TrustedCertificatesCmsURL
string
URL Cms - контейнер з довіреними сертифікатами
Log
string
Шлях до файлу з логом, або пороженє значення, якщо лог необхідно писати в STDOUT
LogLevel
int
Рівень логування: 1 - DEBUG - максимальний рівень (в тому числі наявність запитів логується), 4 - ERRORS - рівень помилок, 5 - OFF - без логування
SimplifiedMode
bool
Прапорець, що вказує на запуск сервісу у спрощеному режимі
Response
application/json
UpdateConfigPartial
Часткове оновлення конфігурації сервісу
PATCH
/config
Request
application/json
UpdateConfRequest
Struct
Структура запиту на часткове оновлення поточної конфігурації сервісу
Name
Type
Description
CmpServices
[]string
TspServices
[]string
Response
application/json
Decrypt
Decrypt
Розшифрування данних
POST
/decrypt
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
DecryptRequest
Struct
Запит на розшифрування конверту
Name
Type
Description
Data
[]byte
Зашифровані дані, якщо вони не прикріплені до CMS або конкатанація CMS Detached та шифорваних даних(формат .enc)
Cms
[]byte
CMS Enveloped конверт
Pin
string
Пін-код до носія, на якому зберігається ключ отримувача
Response
application/octet-stream
Encrypt
Encrypt
Шифруваня данних абонентів
POST
/encrypt
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
EncryptRequest
Struct
Структура запиту зашифровування даних
Name
Type
Description
Certificates
[][]byte
Сертифікати отримувачів
Data
[]byte
Дані для зашифрування
AsBlob
bool
Прапорець, що вказує формат повернення відповіді(octet-stream
якщо значення true
). Також може бути заданий http-заголовком Accept: application/octet-stream
EncSchema
int
Схема виводу ключа шифрування, ключа для направленого шифрування ДСТУ4145, зазвичай 0 або 256 для сумісності
IDByIssuerSN
bool
Ідентифікація сертифікату за серійним номером сертифікату та видевцем
AttachedData
bool
Прапорець, що вказує чи потрібно прикріпити зашифровані дані до конверту CMS Enveloped
EncryptionAlgOid
string
Ідентифікатор алгоритму шифрування
Response
application/octet-stream
application/json
EncryptedResponse
Struct
Структура результату шифрування; при серіалізації в 'application/octet-stream' значення 'Cms' та 'EncryptedContent' конкатенуються (формат .enc)
Name
Type
Description
Cms
[]byte
EncryptedContent
[]byte
Envelope
MakeEnvelope
Створити підписаний/зашифрований конверт
POST
/envelope/make
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
MakeEnvelopeRequest
Struct
Name
Type
Description
Files
[][]byte
Список файлів, які необхідно вкласти в конверт
Certificate
[]byte
Сертифікат підписувача (залишити порожнім, якщо підпис не потрібний)
Pin
string
Пін-код носія з ключем підписувача
Recipients
[][]byte
Список сертифікатів шифрування отримувачів(залишити порожнім, якщо шифрування не потрібне)
EncryptionAlgOid
string
oid-ідентифікатор симетричного алгоритму для шифрування
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/octet-stream
OpenEnvelope
Відкриття підписаного/зашифрованого конверту
POST
/envelope/open
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
OpenEnvelopeRequest
Struct
Name
Type
Description
Data
[]byte
Конверт у форматі AvtorEnvelope, який необхідно відкрити
Pin
string
Пін-код носія з ключем для розшифрування
Certificate
[]byte
Сертифікат шифрування (або порожнє значення для автоматичного його пошуку в сховищі ключів користувача)
IntendedEku
string
Очікуване розширене використання ключа. "any" - будь яке розширене використання.
MustBeTimestamped
bool
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки
ValidateAsCADES
bool
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів
ValidateContentTimeStamp
bool
Прапорець, що вказує на необхідність перевірки мітки часу на дані
PreferOCSP
bool
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці
Policy
string
Політика перевірки сертифікатів
Можливі значення в запиті:
default
- політика за замовчуванням
stdua
- політика STDUA
qcua
- політика QCUA
czoua
- політика сумісності з ЦЗО
AttachedDataAsResource
bool
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування
GenerateValidationReport
bool
Прапорець, що вказує на необхідність формування звіту перевірки підпису
Response
application/octet-stream
PreOpenEnvelope
Привідкрити конверт в форматі AvtorEnvelope
POST
/envelope/preopen
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
PreOpenEnvelopeRequest
Struct
Name
Type
Description
Data
[]byte
Response
application/json
PreOpenEnvelopeResponse
Struct
Name
Type
Description
EnvelopeType
int
Тип конверту: 1 - підписаний, 2 - зашифрований, 3 - і те і інше
RecieverKeyStore
KeyStoreSlotDescriptor
Дескриптор НКІ отримувача конверту
Keystores
ChangePin
Зміна пін-коду на ключовому носії
PATCH
/keystores
Request
application/json
ChangePinRequest
Struct
Структура запиту зміни пін-коду
Name
Type
Description
OldPin
string
Старий пін-код
NewPin
string
Повий пін-код
KeyStore
KeyStoreSelector
Селектор НКІ
Response
application/json
CheckPin
Перевірка пін-коду на НКІ
POST
/keystores/checkpin
Request
application/json
CheckPinRequest
Struct
Cтруктура запиту перевірки пін-коду
Name
Type
Description
Pin
string
KeyStore
KeyStoreSelector
Response
application/json
GetKeyStores
Отримати список носіїв ключової інформації
GET
/keystores
GetKeyStoresRequest
Struct
Структура запиту на отримання списку НКІ
Name
Type
Description
ReadCertificates
bool
Прапорець, що вказує чи необхідне читання сертифікатів
EnfoldFileKeyStores
bool
Прапорець, що вказує чи необхідно прочитати директорії збереження файлових носіїв(налаштування FileKeyStores в конфігурації) замість безпосередньо програмних НКІ
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
SubjectCN
string
SubjectSerialNumber
string
SelfSigned
bool
SubjectKeyIdentifier
string
SubjectFingerprint
string
KeyUsage
string
CertificateSerialNumber
string
SubjectUid
string
Email
string
IssuerCN
string
IssuerSN
string
Response
application/json
[]KeyStoreSlotDescriptor
Array of KeyStoreSlotDescriptor
ImportKeyStore
Імпортувати файл НКІ до сховища UmCAService
POST
/keystores/import
Request
application/json
ImportKeyStoreRequest
Struct
Name
Type
Description
Data
[]byte
Файл НКІ, що має бути імпортований
KeyStore
SlotInfo
Дескриптор ключового сховища. На даний момент часу підтримуються тільки файлові сховища, тому KeyStore.Description має містити шлях до директорії зберігання ключів, а KeyStore.Hw=true. Також опційно можна вказати ім'я файлу в KeyStore.Label
Response
application/json
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
LoadAssociatedCertificates
Завантажити асоційовані сертифікати (створити додаткові key11.dat-файли за потреби)
POST
/keystores/loadcerts
Request
application/json
LoadAssociatedCertificatesRequest
Struct
a structure of request for loading needed certificates
Name
Type
Description
Pin
string
KeyStore
SlotInfoRequest
Response
application/json
[]CertificateDescriptorWide
Array of CertificateDescriptorWide
SelectKeyStore
Знаходження НКІ за селектором
POST
/keystores/select
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
KeyStoreSelector
Struct
Cелектор носія ключової інформації: для вибору НКІ необхідно задати сертифікат або cms-конверт (зашифрований чи підписаний) або деякі з полів дескриптору НКІ
Name
Type
Description
Certificate
[]byte
Сертифікат для пошуку НКІ, якому він належить
Cms
[]byte
Зашифрований або підписаний конверт в форматі CMS для пошуку НКІ, що містить сертифікат отримувача або підписувача відповідно
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
Response
application/json
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
Log
GetLog
Отримання файлу з логом (якщо є)
GET
/log
Response
application/json
Sign
CreateMultipleSignatures
Підписати пакет документів
POST
/sign/multiple
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
MultipleSignaturesRequest
Struct
структура запиту для пакетного підпису
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
MultipleData
[][]byte
масив документів для підпису
MultipleCms
[][]byte
список існуючих конвертів підпису для додавання нових підписів
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/json
[][]byte
CreateSignature
Підписання документу (новий або існуючий)
POST
/sign
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
SignatureRequest
Struct
Структура запиту на отримання ЕЦП
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
Cms
[]byte
Існуючий конверт, який необхідно підписати (або залишити порожнім, якщо необхідно створити новий)
Data
[]byte
Дані для підпису
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
AsBlob
bool
Прапорець, що вказує формат повернення відповіді(octet-stream
якщо значення true
). Також може бути заданий http-заголовком Accept: application/octet-stream
AsResource
bool
Прапорець, що вказує на необхідність створення файлу з підписом в кеші, відповідь має містити посилання на створений ресурс
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/octet-stream
application/json
GetSignatureFile
Завантажити файл з підписом або прикріплені до конверту дані
GET
/sign/:id
Response
application/octet-stream
application/pdf
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/x-pkcs7-signature
Verify
Verify
Перевірка підписаного документу або сертифікат
POST
/verify
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
ValidationRequest
Struct
Структура запиту перевірки cms-конверту або сертифікату
Name
Type
Description
Certificate
[]byte
Сертифікат для перевірки (вказувати, тільки якщо необхідна перевірка лиш сертифікату, а не конверту)
Data
[]byte
Дані, що підписувались (тільки якщо вони відсутні в конверті)
Cms
[]byte
CMS-конверт для перевірки(можливо розширений до CADES-C(X) Long)
IntendedEku
string
Очікуване розширене використання ключа. "any" - будь яке розширене використання.
MustBeTimestamped
bool
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки
ValidateAsCADES
bool
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів
ValidateContentTimeStamp
bool
Прапорець, що вказує на необхідність перевірки мітки часу на дані
PreferOCSP
bool
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці
Policy
string
Політика перевірки сертифікатів
Можливі значення в запиті:
default
- політика за замовчуванням
stdua
- політика STDUA
qcua
- політика QCUA
czoua
- політика сумісності з ЦЗО
AttachedDataAsResource
bool
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування
GenerateValidationReport
bool
Прапорець, що вказує на необхідність формування звіту перевірки підпису
Response
application/json
ValidationResponse
Struct
Name
Type
Description
Status
string
Загальний статус перевірки:
Ok якщо конверт або сертифікат пройшли валідацію повністю
Nok якщо конверт пройшов валідацію частково, тобто є проблеми з валідацією окремих сертифікатів підписувачів або міток часу
текcт помилки якщо конверт не пройшов базовий етап валідації(зіпсований формат, відсутність даних, тощо), якщо перевірявся тільки сертифікат - помилка при валідації сертифікату
Signers
[]SignerInfo
Масив з інформацією про підписників (тільки при перевірці CMS)
AttachedData
AttachedData
Прикріплені до конверту дані(байтовий масив або url)
ValidationReportURL
string
Посилання на звіт перевірки підпису
About
Отримати інформацію про сервіс
AboutResponse
Struct
Name | Type | Description | |
---|---|---|---|
Name |
string
|
||
Version |
string
|
||
Edition |
string
|
||
Author |
string
|
||
Email |
string
|
||
AppID |
string
|
||
OS |
string
|
||
Arch |
string
|
CreateCertificate
Створення нового ключа та самопідписаного сертифікату на ключовому носії
GenerateCertificateRequest
Struct
Name | Type | Description | |
---|---|---|---|
Pin |
string
|
||
KeyRequest |
KeyRequest
|
Запит ключа | |
KeyStore |
SlotInfo
|
НКІ для генерації ключа |
CertificateDescriptorWide
Struct
Name | Type | Description | |
---|---|---|---|
Base64 |
string
|
||
Subject |
map[string]string
|
Словник полів subjectRDN | |
Issuer |
map[string]string
|
Словник полів issuerRDN | |
DirectoryAttributes |
map[string]string
|
Словник розширення "атрибути директорії" | |
NotBefore |
Timestamp
|
Початок дії сертифікату | |
NotAfter |
Timestamp
|
Закінчення дії сертифікату | |
Email |
string
|
Email згідно RFC 822 | |
CertificateSerialNumber |
string
|
Серійний номер сертифікату | |
KeyUsage |
KU
|
Використання ключа | |
PublicKey |
string
|
Відкритий ключ | |
PublicKeyAlg |
string
|
Алгоритм відкритого ключа | |
KeyLength |
int
|
Довжина ключа | |
CriticalEkus |
[]string
|
Критичні розширені використання ключа | |
CertificatePolicies |
[]string
|
Розширення "політики сертифікату" | |
SubjectKeyIdentifier |
string
|
Розширення "ідентифікатор ключа" | |
AuthorityKeyIdentifier |
string
|
Розширення "ідентифікатор ключа видавця" | |
SubjectFingerprint |
string
|
Геш-сума структури subjectRDN | |
SelfSigned |
bool
|
Визначення, чи самопідписаний сертифікат | |
AlternativeName |
map[string][]string
|
Словник розширення "альтернативне ім'я суб'єкта", можливі ключі словника: "IPs", "DNSNames", "URIs", "EmailAddresses" або довільні об'єктні ідентифікатори | |
ExtendedKeyUsage |
ExtendedKeyUsage
|
extended key usage extension | |
QcStatements |
QcStatements
|
qcStatements extension |
DeleteCertificate
Видалення сертифікату з ключового насія
DeleteCertificateRequest
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
[]byte
|
||
Pin |
string
|
GetCertificateStructure
Отримати структуру сертифікату
CertificateStructRequest
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
[]byte
|
CertificateDescriptor
Struct
Name | Type | Description | |
---|---|---|---|
Subject |
map[string]string
|
Словник полів subjectRDN | |
Issuer |
map[string]string
|
Словник полів issuerRDN | |
DirectoryAttributes |
map[string]string
|
Словник розширення "атрибути директорії" | |
NotBefore |
Timestamp
|
Початок дії сертифікату | |
NotAfter |
Timestamp
|
Закінчення дії сертифікату | |
Email |
string
|
Email згідно RFC 822 | |
CertificateSerialNumber |
string
|
Серійний номер сертифікату | |
KeyUsage |
KU
|
Використання ключа | |
PublicKey |
string
|
Відкритий ключ | |
PublicKeyAlg |
string
|
Алгоритм відкритого ключа | |
KeyLength |
int
|
Довжина ключа | |
CriticalEkus |
[]string
|
Критичні розширені використання ключа | |
CertificatePolicies |
[]string
|
Розширення "політики сертифікату" | |
SubjectKeyIdentifier |
string
|
Розширення "ідентифікатор ключа" | |
AuthorityKeyIdentifier |
string
|
Розширення "ідентифікатор ключа видавця" | |
SubjectFingerprint |
string
|
Геш-сума структури subjectRDN | |
SelfSigned |
bool
|
Визначення, чи самопідписаний сертифікат | |
AlternativeName |
map[string][]string
|
Словник розширення "альтернативне ім'я суб'єкта", можливі ключі словника: "IPs", "DNSNames", "URIs", "EmailAddresses" або довільні об'єктні ідентифікатори | |
ExtendedKeyUsage |
ExtendedKeyUsage
|
extended key usage extension | |
QcStatements |
QcStatements
|
qcStatements extension |
GetCertificates
Отримання списку сертифікатів згідно фільтру
GetCertificatesRequest
Struct
Name | Type | Description | |
---|---|---|---|
KsType |
KsType
|
||
SubjectCN |
string
|
||
SubjectSerialNumber |
string
|
||
SelfSigned |
bool
|
||
SubjectKeyIdentifier |
string
|
||
SubjectFingerprint |
string
|
||
KeyUsage |
string
|
||
CertificateSerialNumber |
string
|
||
SubjectUid |
string
|
||
Email |
string
|
||
IssuerCN |
string
|
||
IssuerSN |
string
|
[]CertificateDescriptorWide
Array of CertificateDescriptorWide
UpdateCertificate
Оновлення сертифікату на ключовому носії або запис ідентифікатору запиту на сертифікат
UpdateCertificateRequest
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
[]byte
|
||
Pin |
string
|
||
CaRequestID |
string
|
Ідентифікатор запиту на отримання сертифікату в ЦСК |
Config
DeleteConfig
Видалити сертифікат з ключем на НКІ
DELETE
/config
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
Response
application/json
GetConfig
Отримання файлу конфігурації
GET
/config
Response
application/json
UmCAConfig
Struct
Структура конфігурації UmCAService
Name
Type
Description
Port
int
Порт на якому стартує сервіс
TLSKeyFile
string
Шлях до файлу з TLS ключем PKCS#8(формат PEM)
TLSCertFile
string
Шлях до файлу з TLS сертифікатом (формат PEM)
IsLocal
bool
Прапорець що вказує чи необхідно запускати сервіс в локальному режимі
WhiteList
[]string
Білий список дозволених сервісів (зірочка '*' - означає не виконувати перевірку Referer)
CmpServices
[]string
Cписок CMP-сервісів
TspServices
[]string
Список TSP-сервісів
FileKeyStores
[]string
Список шляхів до директорій з програмними ключами('%/' - скорочене позначення для знімних носіїв інформації, наприклад Flash-носії)
ProxySettings
ProxySettings
Налаштування проксі
CertificateCacheDir
string
Шлях до директорії з кешем сертифікатів та СВС
Pkcs11Modules
[]string
Список PKCS#11 модулів
TrustedCertificatesDir
string
Шлях до директорії з довіреними сертифікатами
IntermediateCertificatesDir
string
Шлях до директорії з проміжними сертифікатами
IntermediateCertificatesCmsURL
string
URL Cms - контейнер з проміжними сертифікатами
TrustedCertificatesCmsURL
string
URL Cms - контейнер з довіреними сертифікатами
Log
string
Шлях до файлу з логом, або пороженє значення, якщо лог необхідно писати в STDOUT
LogLevel
int
Рівень логування: 1 - DEBUG - максимальний рівень (в тому числі наявність запитів логується), 4 - ERRORS - рівень помилок, 5 - OFF - без логування
SimplifiedMode
bool
Прапорець, що вказує на запуск сервісу у спрощеному режимі
UpdateConfig
Оновлення файлу конфігурації
POST
/config
Request
application/json
UmCAConfig
Struct
Структура конфігурації UmCAService
Name
Type
Description
Port
int
Порт на якому стартує сервіс
TLSKeyFile
string
Шлях до файлу з TLS ключем PKCS#8(формат PEM)
TLSCertFile
string
Шлях до файлу з TLS сертифікатом (формат PEM)
IsLocal
bool
Прапорець що вказує чи необхідно запускати сервіс в локальному режимі
WhiteList
[]string
Білий список дозволених сервісів (зірочка '*' - означає не виконувати перевірку Referer)
CmpServices
[]string
Cписок CMP-сервісів
TspServices
[]string
Список TSP-сервісів
FileKeyStores
[]string
Список шляхів до директорій з програмними ключами('%/' - скорочене позначення для знімних носіїв інформації, наприклад Flash-носії)
ProxySettings
ProxySettings
Налаштування проксі
CertificateCacheDir
string
Шлях до директорії з кешем сертифікатів та СВС
Pkcs11Modules
[]string
Список PKCS#11 модулів
TrustedCertificatesDir
string
Шлях до директорії з довіреними сертифікатами
IntermediateCertificatesDir
string
Шлях до директорії з проміжними сертифікатами
IntermediateCertificatesCmsURL
string
URL Cms - контейнер з проміжними сертифікатами
TrustedCertificatesCmsURL
string
URL Cms - контейнер з довіреними сертифікатами
Log
string
Шлях до файлу з логом, або пороженє значення, якщо лог необхідно писати в STDOUT
LogLevel
int
Рівень логування: 1 - DEBUG - максимальний рівень (в тому числі наявність запитів логується), 4 - ERRORS - рівень помилок, 5 - OFF - без логування
SimplifiedMode
bool
Прапорець, що вказує на запуск сервісу у спрощеному режимі
Response
application/json
UpdateConfigPartial
Часткове оновлення конфігурації сервісу
PATCH
/config
Request
application/json
UpdateConfRequest
Struct
Структура запиту на часткове оновлення поточної конфігурації сервісу
Name
Type
Description
CmpServices
[]string
TspServices
[]string
Response
application/json
Decrypt
Decrypt
Розшифрування данних
POST
/decrypt
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
DecryptRequest
Struct
Запит на розшифрування конверту
Name
Type
Description
Data
[]byte
Зашифровані дані, якщо вони не прикріплені до CMS або конкатанація CMS Detached та шифорваних даних(формат .enc)
Cms
[]byte
CMS Enveloped конверт
Pin
string
Пін-код до носія, на якому зберігається ключ отримувача
Response
application/octet-stream
Encrypt
Encrypt
Шифруваня данних абонентів
POST
/encrypt
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
EncryptRequest
Struct
Структура запиту зашифровування даних
Name
Type
Description
Certificates
[][]byte
Сертифікати отримувачів
Data
[]byte
Дані для зашифрування
AsBlob
bool
Прапорець, що вказує формат повернення відповіді(octet-stream
якщо значення true
). Також може бути заданий http-заголовком Accept: application/octet-stream
EncSchema
int
Схема виводу ключа шифрування, ключа для направленого шифрування ДСТУ4145, зазвичай 0 або 256 для сумісності
IDByIssuerSN
bool
Ідентифікація сертифікату за серійним номером сертифікату та видевцем
AttachedData
bool
Прапорець, що вказує чи потрібно прикріпити зашифровані дані до конверту CMS Enveloped
EncryptionAlgOid
string
Ідентифікатор алгоритму шифрування
Response
application/octet-stream
application/json
EncryptedResponse
Struct
Структура результату шифрування; при серіалізації в 'application/octet-stream' значення 'Cms' та 'EncryptedContent' конкатенуються (формат .enc)
Name
Type
Description
Cms
[]byte
EncryptedContent
[]byte
Envelope
MakeEnvelope
Створити підписаний/зашифрований конверт
POST
/envelope/make
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
MakeEnvelopeRequest
Struct
Name
Type
Description
Files
[][]byte
Список файлів, які необхідно вкласти в конверт
Certificate
[]byte
Сертифікат підписувача (залишити порожнім, якщо підпис не потрібний)
Pin
string
Пін-код носія з ключем підписувача
Recipients
[][]byte
Список сертифікатів шифрування отримувачів(залишити порожнім, якщо шифрування не потрібне)
EncryptionAlgOid
string
oid-ідентифікатор симетричного алгоритму для шифрування
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/octet-stream
OpenEnvelope
Відкриття підписаного/зашифрованого конверту
POST
/envelope/open
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
OpenEnvelopeRequest
Struct
Name
Type
Description
Data
[]byte
Конверт у форматі AvtorEnvelope, який необхідно відкрити
Pin
string
Пін-код носія з ключем для розшифрування
Certificate
[]byte
Сертифікат шифрування (або порожнє значення для автоматичного його пошуку в сховищі ключів користувача)
IntendedEku
string
Очікуване розширене використання ключа. "any" - будь яке розширене використання.
MustBeTimestamped
bool
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки
ValidateAsCADES
bool
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів
ValidateContentTimeStamp
bool
Прапорець, що вказує на необхідність перевірки мітки часу на дані
PreferOCSP
bool
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці
Policy
string
Політика перевірки сертифікатів
Можливі значення в запиті:
default
- політика за замовчуванням
stdua
- політика STDUA
qcua
- політика QCUA
czoua
- політика сумісності з ЦЗО
AttachedDataAsResource
bool
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування
GenerateValidationReport
bool
Прапорець, що вказує на необхідність формування звіту перевірки підпису
Response
application/octet-stream
PreOpenEnvelope
Привідкрити конверт в форматі AvtorEnvelope
POST
/envelope/preopen
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
PreOpenEnvelopeRequest
Struct
Name
Type
Description
Data
[]byte
Response
application/json
PreOpenEnvelopeResponse
Struct
Name
Type
Description
EnvelopeType
int
Тип конверту: 1 - підписаний, 2 - зашифрований, 3 - і те і інше
RecieverKeyStore
KeyStoreSlotDescriptor
Дескриптор НКІ отримувача конверту
Keystores
ChangePin
Зміна пін-коду на ключовому носії
PATCH
/keystores
Request
application/json
ChangePinRequest
Struct
Структура запиту зміни пін-коду
Name
Type
Description
OldPin
string
Старий пін-код
NewPin
string
Повий пін-код
KeyStore
KeyStoreSelector
Селектор НКІ
Response
application/json
CheckPin
Перевірка пін-коду на НКІ
POST
/keystores/checkpin
Request
application/json
CheckPinRequest
Struct
Cтруктура запиту перевірки пін-коду
Name
Type
Description
Pin
string
KeyStore
KeyStoreSelector
Response
application/json
GetKeyStores
Отримати список носіїв ключової інформації
GET
/keystores
GetKeyStoresRequest
Struct
Структура запиту на отримання списку НКІ
Name
Type
Description
ReadCertificates
bool
Прапорець, що вказує чи необхідне читання сертифікатів
EnfoldFileKeyStores
bool
Прапорець, що вказує чи необхідно прочитати директорії збереження файлових носіїв(налаштування FileKeyStores в конфігурації) замість безпосередньо програмних НКІ
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
SubjectCN
string
SubjectSerialNumber
string
SelfSigned
bool
SubjectKeyIdentifier
string
SubjectFingerprint
string
KeyUsage
string
CertificateSerialNumber
string
SubjectUid
string
Email
string
IssuerCN
string
IssuerSN
string
Response
application/json
[]KeyStoreSlotDescriptor
Array of KeyStoreSlotDescriptor
ImportKeyStore
Імпортувати файл НКІ до сховища UmCAService
POST
/keystores/import
Request
application/json
ImportKeyStoreRequest
Struct
Name
Type
Description
Data
[]byte
Файл НКІ, що має бути імпортований
KeyStore
SlotInfo
Дескриптор ключового сховища. На даний момент часу підтримуються тільки файлові сховища, тому KeyStore.Description має містити шлях до директорії зберігання ключів, а KeyStore.Hw=true. Також опційно можна вказати ім'я файлу в KeyStore.Label
Response
application/json
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
LoadAssociatedCertificates
Завантажити асоційовані сертифікати (створити додаткові key11.dat-файли за потреби)
POST
/keystores/loadcerts
Request
application/json
LoadAssociatedCertificatesRequest
Struct
a structure of request for loading needed certificates
Name
Type
Description
Pin
string
KeyStore
SlotInfoRequest
Response
application/json
[]CertificateDescriptorWide
Array of CertificateDescriptorWide
SelectKeyStore
Знаходження НКІ за селектором
POST
/keystores/select
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
KeyStoreSelector
Struct
Cелектор носія ключової інформації: для вибору НКІ необхідно задати сертифікат або cms-конверт (зашифрований чи підписаний) або деякі з полів дескриптору НКІ
Name
Type
Description
Certificate
[]byte
Сертифікат для пошуку НКІ, якому він належить
Cms
[]byte
Зашифрований або підписаний конверт в форматі CMS для пошуку НКІ, що містить сертифікат отримувача або підписувача відповідно
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
Response
application/json
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
Log
GetLog
Отримання файлу з логом (якщо є)
GET
/log
Response
application/json
Sign
CreateMultipleSignatures
Підписати пакет документів
POST
/sign/multiple
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
MultipleSignaturesRequest
Struct
структура запиту для пакетного підпису
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
MultipleData
[][]byte
масив документів для підпису
MultipleCms
[][]byte
список існуючих конвертів підпису для додавання нових підписів
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/json
[][]byte
CreateSignature
Підписання документу (новий або існуючий)
POST
/sign
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
SignatureRequest
Struct
Структура запиту на отримання ЕЦП
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
Cms
[]byte
Існуючий конверт, який необхідно підписати (або залишити порожнім, якщо необхідно створити новий)
Data
[]byte
Дані для підпису
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
AsBlob
bool
Прапорець, що вказує формат повернення відповіді(octet-stream
якщо значення true
). Також може бути заданий http-заголовком Accept: application/octet-stream
AsResource
bool
Прапорець, що вказує на необхідність створення файлу з підписом в кеші, відповідь має містити посилання на створений ресурс
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/octet-stream
application/json
GetSignatureFile
Завантажити файл з підписом або прикріплені до конверту дані
GET
/sign/:id
Response
application/octet-stream
application/pdf
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/x-pkcs7-signature
Verify
Verify
Перевірка підписаного документу або сертифікат
POST
/verify
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
ValidationRequest
Struct
Структура запиту перевірки cms-конверту або сертифікату
Name
Type
Description
Certificate
[]byte
Сертифікат для перевірки (вказувати, тільки якщо необхідна перевірка лиш сертифікату, а не конверту)
Data
[]byte
Дані, що підписувались (тільки якщо вони відсутні в конверті)
Cms
[]byte
CMS-конверт для перевірки(можливо розширений до CADES-C(X) Long)
IntendedEku
string
Очікуване розширене використання ключа. "any" - будь яке розширене використання.
MustBeTimestamped
bool
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки
ValidateAsCADES
bool
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів
ValidateContentTimeStamp
bool
Прапорець, що вказує на необхідність перевірки мітки часу на дані
PreferOCSP
bool
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці
Policy
string
Політика перевірки сертифікатів
Можливі значення в запиті:
default
- політика за замовчуванням
stdua
- політика STDUA
qcua
- політика QCUA
czoua
- політика сумісності з ЦЗО
AttachedDataAsResource
bool
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування
GenerateValidationReport
bool
Прапорець, що вказує на необхідність формування звіту перевірки підпису
Response
application/json
ValidationResponse
Struct
Name
Type
Description
Status
string
Загальний статус перевірки:
Ok якщо конверт або сертифікат пройшли валідацію повністю
Nok якщо конверт пройшов валідацію частково, тобто є проблеми з валідацією окремих сертифікатів підписувачів або міток часу
текcт помилки якщо конверт не пройшов базовий етап валідації(зіпсований формат, відсутність даних, тощо), якщо перевірявся тільки сертифікат - помилка при валідації сертифікату
Signers
[]SignerInfo
Масив з інформацією про підписників (тільки при перевірці CMS)
AttachedData
AttachedData
Прикріплені до конверту дані(байтовий масив або url)
ValidationReportURL
string
Посилання на звіт перевірки підпису
DeleteConfig
Видалити сертифікат з ключем на НКІ
GetConfig
Отримання файлу конфігурації
UmCAConfig
Struct
Name | Type | Description | |
---|---|---|---|
Port |
int
|
Порт на якому стартує сервіс | |
TLSKeyFile |
string
|
Шлях до файлу з TLS ключем PKCS#8(формат PEM) | |
TLSCertFile |
string
|
Шлях до файлу з TLS сертифікатом (формат PEM) | |
IsLocal |
bool
|
Прапорець що вказує чи необхідно запускати сервіс в локальному режимі | |
WhiteList |
[]string
|
Білий список дозволених сервісів (зірочка '*' - означає не виконувати перевірку Referer) | |
CmpServices |
[]string
|
Cписок CMP-сервісів | |
TspServices |
[]string
|
Список TSP-сервісів | |
FileKeyStores |
[]string
|
Список шляхів до директорій з програмними ключами('%/' - скорочене позначення для знімних носіїв інформації, наприклад Flash-носії) | |
ProxySettings |
ProxySettings
|
Налаштування проксі | |
CertificateCacheDir |
string
|
Шлях до директорії з кешем сертифікатів та СВС | |
Pkcs11Modules |
[]string
|
Список PKCS#11 модулів | |
TrustedCertificatesDir |
string
|
Шлях до директорії з довіреними сертифікатами | |
IntermediateCertificatesDir |
string
|
Шлях до директорії з проміжними сертифікатами | |
IntermediateCertificatesCmsURL |
string
|
URL Cms - контейнер з проміжними сертифікатами | |
TrustedCertificatesCmsURL |
string
|
URL Cms - контейнер з довіреними сертифікатами | |
Log |
string
|
Шлях до файлу з логом, або пороженє значення, якщо лог необхідно писати в STDOUT | |
LogLevel |
int
|
Рівень логування: 1 - DEBUG - максимальний рівень (в тому числі наявність запитів логується), 4 - ERRORS - рівень помилок, 5 - OFF - без логування | |
SimplifiedMode |
bool
|
Прапорець, що вказує на запуск сервісу у спрощеному режимі |
UpdateConfig
Оновлення файлу конфігурації
UmCAConfig
Struct
Name | Type | Description | |
---|---|---|---|
Port |
int
|
Порт на якому стартує сервіс | |
TLSKeyFile |
string
|
Шлях до файлу з TLS ключем PKCS#8(формат PEM) | |
TLSCertFile |
string
|
Шлях до файлу з TLS сертифікатом (формат PEM) | |
IsLocal |
bool
|
Прапорець що вказує чи необхідно запускати сервіс в локальному режимі | |
WhiteList |
[]string
|
Білий список дозволених сервісів (зірочка '*' - означає не виконувати перевірку Referer) | |
CmpServices |
[]string
|
Cписок CMP-сервісів | |
TspServices |
[]string
|
Список TSP-сервісів | |
FileKeyStores |
[]string
|
Список шляхів до директорій з програмними ключами('%/' - скорочене позначення для знімних носіїв інформації, наприклад Flash-носії) | |
ProxySettings |
ProxySettings
|
Налаштування проксі | |
CertificateCacheDir |
string
|
Шлях до директорії з кешем сертифікатів та СВС | |
Pkcs11Modules |
[]string
|
Список PKCS#11 модулів | |
TrustedCertificatesDir |
string
|
Шлях до директорії з довіреними сертифікатами | |
IntermediateCertificatesDir |
string
|
Шлях до директорії з проміжними сертифікатами | |
IntermediateCertificatesCmsURL |
string
|
URL Cms - контейнер з проміжними сертифікатами | |
TrustedCertificatesCmsURL |
string
|
URL Cms - контейнер з довіреними сертифікатами | |
Log |
string
|
Шлях до файлу з логом, або пороженє значення, якщо лог необхідно писати в STDOUT | |
LogLevel |
int
|
Рівень логування: 1 - DEBUG - максимальний рівень (в тому числі наявність запитів логується), 4 - ERRORS - рівень помилок, 5 - OFF - без логування | |
SimplifiedMode |
bool
|
Прапорець, що вказує на запуск сервісу у спрощеному режимі |
UpdateConfigPartial
Часткове оновлення конфігурації сервісу
UpdateConfRequest
Struct
Name | Type | Description | |
---|---|---|---|
CmpServices |
[]string
|
||
TspServices |
[]string
|
Decrypt
Розшифрування данних
DecryptRequest
Struct
Name | Type | Description | |
---|---|---|---|
Data |
[]byte
|
Зашифровані дані, якщо вони не прикріплені до CMS або конкатанація CMS Detached та шифорваних даних(формат .enc) | |
Cms |
[]byte
|
CMS Enveloped конверт | |
Pin |
string
|
Пін-код до носія, на якому зберігається ключ отримувача |
Encrypt
Encrypt
Шифруваня данних абонентів
POST
/encrypt
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
EncryptRequest
Struct
Структура запиту зашифровування даних
Name
Type
Description
Certificates
[][]byte
Сертифікати отримувачів
Data
[]byte
Дані для зашифрування
AsBlob
bool
Прапорець, що вказує формат повернення відповіді(octet-stream
якщо значення true
). Також може бути заданий http-заголовком Accept: application/octet-stream
EncSchema
int
Схема виводу ключа шифрування, ключа для направленого шифрування ДСТУ4145, зазвичай 0 або 256 для сумісності
IDByIssuerSN
bool
Ідентифікація сертифікату за серійним номером сертифікату та видевцем
AttachedData
bool
Прапорець, що вказує чи потрібно прикріпити зашифровані дані до конверту CMS Enveloped
EncryptionAlgOid
string
Ідентифікатор алгоритму шифрування
Response
application/octet-stream
application/json
EncryptedResponse
Struct
Структура результату шифрування; при серіалізації в 'application/octet-stream' значення 'Cms' та 'EncryptedContent' конкатенуються (формат .enc)
Name
Type
Description
Cms
[]byte
EncryptedContent
[]byte
Envelope
MakeEnvelope
Створити підписаний/зашифрований конверт
POST
/envelope/make
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
MakeEnvelopeRequest
Struct
Name
Type
Description
Files
[][]byte
Список файлів, які необхідно вкласти в конверт
Certificate
[]byte
Сертифікат підписувача (залишити порожнім, якщо підпис не потрібний)
Pin
string
Пін-код носія з ключем підписувача
Recipients
[][]byte
Список сертифікатів шифрування отримувачів(залишити порожнім, якщо шифрування не потрібне)
EncryptionAlgOid
string
oid-ідентифікатор симетричного алгоритму для шифрування
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/octet-stream
OpenEnvelope
Відкриття підписаного/зашифрованого конверту
POST
/envelope/open
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
OpenEnvelopeRequest
Struct
Name
Type
Description
Data
[]byte
Конверт у форматі AvtorEnvelope, який необхідно відкрити
Pin
string
Пін-код носія з ключем для розшифрування
Certificate
[]byte
Сертифікат шифрування (або порожнє значення для автоматичного його пошуку в сховищі ключів користувача)
IntendedEku
string
Очікуване розширене використання ключа. "any" - будь яке розширене використання.
MustBeTimestamped
bool
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки
ValidateAsCADES
bool
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів
ValidateContentTimeStamp
bool
Прапорець, що вказує на необхідність перевірки мітки часу на дані
PreferOCSP
bool
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці
Policy
string
Політика перевірки сертифікатів
Можливі значення в запиті:
default
- політика за замовчуванням
stdua
- політика STDUA
qcua
- політика QCUA
czoua
- політика сумісності з ЦЗО
AttachedDataAsResource
bool
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування
GenerateValidationReport
bool
Прапорець, що вказує на необхідність формування звіту перевірки підпису
Response
application/octet-stream
PreOpenEnvelope
Привідкрити конверт в форматі AvtorEnvelope
POST
/envelope/preopen
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
PreOpenEnvelopeRequest
Struct
Name
Type
Description
Data
[]byte
Response
application/json
PreOpenEnvelopeResponse
Struct
Name
Type
Description
EnvelopeType
int
Тип конверту: 1 - підписаний, 2 - зашифрований, 3 - і те і інше
RecieverKeyStore
KeyStoreSlotDescriptor
Дескриптор НКІ отримувача конверту
Keystores
ChangePin
Зміна пін-коду на ключовому носії
PATCH
/keystores
Request
application/json
ChangePinRequest
Struct
Структура запиту зміни пін-коду
Name
Type
Description
OldPin
string
Старий пін-код
NewPin
string
Повий пін-код
KeyStore
KeyStoreSelector
Селектор НКІ
Response
application/json
CheckPin
Перевірка пін-коду на НКІ
POST
/keystores/checkpin
Request
application/json
CheckPinRequest
Struct
Cтруктура запиту перевірки пін-коду
Name
Type
Description
Pin
string
KeyStore
KeyStoreSelector
Response
application/json
GetKeyStores
Отримати список носіїв ключової інформації
GET
/keystores
GetKeyStoresRequest
Struct
Структура запиту на отримання списку НКІ
Name
Type
Description
ReadCertificates
bool
Прапорець, що вказує чи необхідне читання сертифікатів
EnfoldFileKeyStores
bool
Прапорець, що вказує чи необхідно прочитати директорії збереження файлових носіїв(налаштування FileKeyStores в конфігурації) замість безпосередньо програмних НКІ
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
SubjectCN
string
SubjectSerialNumber
string
SelfSigned
bool
SubjectKeyIdentifier
string
SubjectFingerprint
string
KeyUsage
string
CertificateSerialNumber
string
SubjectUid
string
Email
string
IssuerCN
string
IssuerSN
string
Response
application/json
[]KeyStoreSlotDescriptor
Array of KeyStoreSlotDescriptor
ImportKeyStore
Імпортувати файл НКІ до сховища UmCAService
POST
/keystores/import
Request
application/json
ImportKeyStoreRequest
Struct
Name
Type
Description
Data
[]byte
Файл НКІ, що має бути імпортований
KeyStore
SlotInfo
Дескриптор ключового сховища. На даний момент часу підтримуються тільки файлові сховища, тому KeyStore.Description має містити шлях до директорії зберігання ключів, а KeyStore.Hw=true. Також опційно можна вказати ім'я файлу в KeyStore.Label
Response
application/json
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
LoadAssociatedCertificates
Завантажити асоційовані сертифікати (створити додаткові key11.dat-файли за потреби)
POST
/keystores/loadcerts
Request
application/json
LoadAssociatedCertificatesRequest
Struct
a structure of request for loading needed certificates
Name
Type
Description
Pin
string
KeyStore
SlotInfoRequest
Response
application/json
[]CertificateDescriptorWide
Array of CertificateDescriptorWide
SelectKeyStore
Знаходження НКІ за селектором
POST
/keystores/select
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
KeyStoreSelector
Struct
Cелектор носія ключової інформації: для вибору НКІ необхідно задати сертифікат або cms-конверт (зашифрований чи підписаний) або деякі з полів дескриптору НКІ
Name
Type
Description
Certificate
[]byte
Сертифікат для пошуку НКІ, якому він належить
Cms
[]byte
Зашифрований або підписаний конверт в форматі CMS для пошуку НКІ, що містить сертифікат отримувача або підписувача відповідно
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
Response
application/json
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
Log
GetLog
Отримання файлу з логом (якщо є)
GET
/log
Response
application/json
Sign
CreateMultipleSignatures
Підписати пакет документів
POST
/sign/multiple
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
MultipleSignaturesRequest
Struct
структура запиту для пакетного підпису
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
MultipleData
[][]byte
масив документів для підпису
MultipleCms
[][]byte
список існуючих конвертів підпису для додавання нових підписів
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/json
[][]byte
CreateSignature
Підписання документу (новий або існуючий)
POST
/sign
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
SignatureRequest
Struct
Структура запиту на отримання ЕЦП
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
Cms
[]byte
Існуючий конверт, який необхідно підписати (або залишити порожнім, якщо необхідно створити новий)
Data
[]byte
Дані для підпису
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
AsBlob
bool
Прапорець, що вказує формат повернення відповіді(octet-stream
якщо значення true
). Також може бути заданий http-заголовком Accept: application/octet-stream
AsResource
bool
Прапорець, що вказує на необхідність створення файлу з підписом в кеші, відповідь має містити посилання на створений ресурс
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/octet-stream
application/json
GetSignatureFile
Завантажити файл з підписом або прикріплені до конверту дані
GET
/sign/:id
Response
application/octet-stream
application/pdf
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/x-pkcs7-signature
Verify
Verify
Перевірка підписаного документу або сертифікат
POST
/verify
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
ValidationRequest
Struct
Структура запиту перевірки cms-конверту або сертифікату
Name
Type
Description
Certificate
[]byte
Сертифікат для перевірки (вказувати, тільки якщо необхідна перевірка лиш сертифікату, а не конверту)
Data
[]byte
Дані, що підписувались (тільки якщо вони відсутні в конверті)
Cms
[]byte
CMS-конверт для перевірки(можливо розширений до CADES-C(X) Long)
IntendedEku
string
Очікуване розширене використання ключа. "any" - будь яке розширене використання.
MustBeTimestamped
bool
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки
ValidateAsCADES
bool
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів
ValidateContentTimeStamp
bool
Прапорець, що вказує на необхідність перевірки мітки часу на дані
PreferOCSP
bool
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці
Policy
string
Політика перевірки сертифікатів
Можливі значення в запиті:
default
- політика за замовчуванням
stdua
- політика STDUA
qcua
- політика QCUA
czoua
- політика сумісності з ЦЗО
AttachedDataAsResource
bool
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування
GenerateValidationReport
bool
Прапорець, що вказує на необхідність формування звіту перевірки підпису
Response
application/json
ValidationResponse
Struct
Name
Type
Description
Status
string
Загальний статус перевірки:
Ok якщо конверт або сертифікат пройшли валідацію повністю
Nok якщо конверт пройшов валідацію частково, тобто є проблеми з валідацією окремих сертифікатів підписувачів або міток часу
текcт помилки якщо конверт не пройшов базовий етап валідації(зіпсований формат, відсутність даних, тощо), якщо перевірявся тільки сертифікат - помилка при валідації сертифікату
Signers
[]SignerInfo
Масив з інформацією про підписників (тільки при перевірці CMS)
AttachedData
AttachedData
Прикріплені до конверту дані(байтовий масив або url)
ValidationReportURL
string
Посилання на звіт перевірки підпису
Encrypt
Шифруваня данних абонентів
EncryptRequest
Struct
Name | Type | Description | |
---|---|---|---|
Certificates |
[][]byte
|
Сертифікати отримувачів | |
Data |
[]byte
|
Дані для зашифрування | |
AsBlob |
bool
|
Прапорець, що вказує формат повернення відповіді(octet-stream якщо значення true ). Також може бути заданий http-заголовком Accept: application/octet-stream |
|
EncSchema |
int
|
Схема виводу ключа шифрування, ключа для направленого шифрування ДСТУ4145, зазвичай 0 або 256 для сумісності | |
IDByIssuerSN |
bool
|
Ідентифікація сертифікату за серійним номером сертифікату та видевцем | |
AttachedData |
bool
|
Прапорець, що вказує чи потрібно прикріпити зашифровані дані до конверту CMS Enveloped | |
EncryptionAlgOid |
string
|
Ідентифікатор алгоритму шифрування |
EncryptedResponse
Struct
Name | Type | Description | |
---|---|---|---|
Cms |
[]byte
|
||
EncryptedContent |
[]byte
|
MakeEnvelope
Створити підписаний/зашифрований конверт
MakeEnvelopeRequest
Struct
Name | Type | Description | |
---|---|---|---|
Files |
[][]byte
|
Список файлів, які необхідно вкласти в конверт | |
Certificate |
[]byte
|
Сертифікат підписувача (залишити порожнім, якщо підпис не потрібний) | |
Pin |
string
|
Пін-код носія з ключем підписувача | |
Recipients |
[][]byte
|
Список сертифікатів шифрування отримувачів(залишити порожнім, якщо шифрування не потрібне) | |
EncryptionAlgOid |
string
|
oid-ідентифікатор симетричного алгоритму для шифрування | |
SigType |
SignatureDescriptor
|
Дескриптор підпису | |
DigestAlgOid |
string
|
Ідентифікатор алгоритму підпису |
OpenEnvelope
Відкриття підписаного/зашифрованого конверту
OpenEnvelopeRequest
Struct
Name | Type | Description | |
---|---|---|---|
Data |
[]byte
|
Конверт у форматі AvtorEnvelope, який необхідно відкрити | |
Pin |
string
|
Пін-код носія з ключем для розшифрування | |
Certificate |
[]byte
|
Сертифікат шифрування (або порожнє значення для автоматичного його пошуку в сховищі ключів користувача) | |
IntendedEku |
string
|
Очікуване розширене використання ключа. "any" - будь яке розширене використання. | |
MustBeTimestamped |
bool
|
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки | |
ValidateAsCADES |
bool
|
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів | |
ValidateContentTimeStamp |
bool
|
Прапорець, що вказує на необхідність перевірки мітки часу на дані | |
PreferOCSP |
bool
|
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці | |
Policy |
string
|
Політика перевірки сертифікатів Можливі значення в запиті: default - політика за замовчуваннямstdua - політика STDUAqcua - політика QCUAczoua - політика сумісності з ЦЗО |
|
AttachedDataAsResource |
bool
|
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування | |
GenerateValidationReport |
bool
|
Прапорець, що вказує на необхідність формування звіту перевірки підпису |
PreOpenEnvelope
Привідкрити конверт в форматі AvtorEnvelope
PreOpenEnvelopeRequest
Struct
Name | Type | Description | |
---|---|---|---|
Data |
[]byte
|
PreOpenEnvelopeResponse
Struct
Name | Type | Description | |
---|---|---|---|
EnvelopeType |
int
|
Тип конверту: 1 - підписаний, 2 - зашифрований, 3 - і те і інше | |
RecieverKeyStore |
KeyStoreSlotDescriptor
|
Дескриптор НКІ отримувача конверту |
Keystores
ChangePin
Зміна пін-коду на ключовому носії
PATCH
/keystores
Request
application/json
ChangePinRequest
Struct
Структура запиту зміни пін-коду
Name
Type
Description
OldPin
string
Старий пін-код
NewPin
string
Повий пін-код
KeyStore
KeyStoreSelector
Селектор НКІ
Response
application/json
CheckPin
Перевірка пін-коду на НКІ
POST
/keystores/checkpin
Request
application/json
CheckPinRequest
Struct
Cтруктура запиту перевірки пін-коду
Name
Type
Description
Pin
string
KeyStore
KeyStoreSelector
Response
application/json
GetKeyStores
Отримати список носіїв ключової інформації
GET
/keystores
GetKeyStoresRequest
Struct
Структура запиту на отримання списку НКІ
Name
Type
Description
ReadCertificates
bool
Прапорець, що вказує чи необхідне читання сертифікатів
EnfoldFileKeyStores
bool
Прапорець, що вказує чи необхідно прочитати директорії збереження файлових носіїв(налаштування FileKeyStores в конфігурації) замість безпосередньо програмних НКІ
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
SubjectCN
string
SubjectSerialNumber
string
SelfSigned
bool
SubjectKeyIdentifier
string
SubjectFingerprint
string
KeyUsage
string
CertificateSerialNumber
string
SubjectUid
string
Email
string
IssuerCN
string
IssuerSN
string
Response
application/json
[]KeyStoreSlotDescriptor
Array of KeyStoreSlotDescriptor
ImportKeyStore
Імпортувати файл НКІ до сховища UmCAService
POST
/keystores/import
Request
application/json
ImportKeyStoreRequest
Struct
Name
Type
Description
Data
[]byte
Файл НКІ, що має бути імпортований
KeyStore
SlotInfo
Дескриптор ключового сховища. На даний момент часу підтримуються тільки файлові сховища, тому KeyStore.Description має містити шлях до директорії зберігання ключів, а KeyStore.Hw=true. Також опційно можна вказати ім'я файлу в KeyStore.Label
Response
application/json
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
LoadAssociatedCertificates
Завантажити асоційовані сертифікати (створити додаткові key11.dat-файли за потреби)
POST
/keystores/loadcerts
Request
application/json
LoadAssociatedCertificatesRequest
Struct
a structure of request for loading needed certificates
Name
Type
Description
Pin
string
KeyStore
SlotInfoRequest
Response
application/json
[]CertificateDescriptorWide
Array of CertificateDescriptorWide
SelectKeyStore
Знаходження НКІ за селектором
POST
/keystores/select
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
KeyStoreSelector
Struct
Cелектор носія ключової інформації: для вибору НКІ необхідно задати сертифікат або cms-конверт (зашифрований чи підписаний) або деякі з полів дескриптору НКІ
Name
Type
Description
Certificate
[]byte
Сертифікат для пошуку НКІ, якому він належить
Cms
[]byte
Зашифрований або підписаний конверт в форматі CMS для пошуку НКІ, що містить сертифікат отримувача або підписувача відповідно
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
Response
application/json
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
Log
GetLog
Отримання файлу з логом (якщо є)
GET
/log
Response
application/json
Sign
CreateMultipleSignatures
Підписати пакет документів
POST
/sign/multiple
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
MultipleSignaturesRequest
Struct
структура запиту для пакетного підпису
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
MultipleData
[][]byte
масив документів для підпису
MultipleCms
[][]byte
список існуючих конвертів підпису для додавання нових підписів
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/json
[][]byte
CreateSignature
Підписання документу (новий або існуючий)
POST
/sign
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
SignatureRequest
Struct
Структура запиту на отримання ЕЦП
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
Cms
[]byte
Існуючий конверт, який необхідно підписати (або залишити порожнім, якщо необхідно створити новий)
Data
[]byte
Дані для підпису
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
AsBlob
bool
Прапорець, що вказує формат повернення відповіді(octet-stream
якщо значення true
). Також може бути заданий http-заголовком Accept: application/octet-stream
AsResource
bool
Прапорець, що вказує на необхідність створення файлу з підписом в кеші, відповідь має містити посилання на створений ресурс
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/octet-stream
application/json
GetSignatureFile
Завантажити файл з підписом або прикріплені до конверту дані
GET
/sign/:id
Response
application/octet-stream
application/pdf
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/x-pkcs7-signature
Verify
Verify
Перевірка підписаного документу або сертифікат
POST
/verify
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
ValidationRequest
Struct
Структура запиту перевірки cms-конверту або сертифікату
Name
Type
Description
Certificate
[]byte
Сертифікат для перевірки (вказувати, тільки якщо необхідна перевірка лиш сертифікату, а не конверту)
Data
[]byte
Дані, що підписувались (тільки якщо вони відсутні в конверті)
Cms
[]byte
CMS-конверт для перевірки(можливо розширений до CADES-C(X) Long)
IntendedEku
string
Очікуване розширене використання ключа. "any" - будь яке розширене використання.
MustBeTimestamped
bool
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки
ValidateAsCADES
bool
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів
ValidateContentTimeStamp
bool
Прапорець, що вказує на необхідність перевірки мітки часу на дані
PreferOCSP
bool
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці
Policy
string
Політика перевірки сертифікатів
Можливі значення в запиті:
default
- політика за замовчуванням
stdua
- політика STDUA
qcua
- політика QCUA
czoua
- політика сумісності з ЦЗО
AttachedDataAsResource
bool
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування
GenerateValidationReport
bool
Прапорець, що вказує на необхідність формування звіту перевірки підпису
Response
application/json
ValidationResponse
Struct
Name
Type
Description
Status
string
Загальний статус перевірки:
Ok якщо конверт або сертифікат пройшли валідацію повністю
Nok якщо конверт пройшов валідацію частково, тобто є проблеми з валідацією окремих сертифікатів підписувачів або міток часу
текcт помилки якщо конверт не пройшов базовий етап валідації(зіпсований формат, відсутність даних, тощо), якщо перевірявся тільки сертифікат - помилка при валідації сертифікату
Signers
[]SignerInfo
Масив з інформацією про підписників (тільки при перевірці CMS)
AttachedData
AttachedData
Прикріплені до конверту дані(байтовий масив або url)
ValidationReportURL
string
Посилання на звіт перевірки підпису
ChangePin
Зміна пін-коду на ключовому носії
ChangePinRequest
Struct
Name | Type | Description | |
---|---|---|---|
OldPin |
string
|
Старий пін-код | |
NewPin |
string
|
Повий пін-код | |
KeyStore |
KeyStoreSelector
|
Селектор НКІ |
CheckPin
Перевірка пін-коду на НКІ
CheckPinRequest
Struct
Name | Type | Description | |
---|---|---|---|
Pin |
string
|
||
KeyStore |
KeyStoreSelector
|
GetKeyStores
Отримати список носіїв ключової інформації
GetKeyStoresRequest
Struct
Name | Type | Description | |
---|---|---|---|
ReadCertificates |
bool
|
Прапорець, що вказує чи необхідне читання сертифікатів | |
EnfoldFileKeyStores |
bool
|
Прапорець, що вказує чи необхідно прочитати директорії збереження файлових носіїв(налаштування FileKeyStores в конфігурації) замість безпосередньо програмних НКІ | |
Hw |
bool
|
Прапорець, що вказує на тип НКІ(програмний/апаратний) | |
Description |
string
|
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних) | |
Label |
string
|
Мітка НКІ | |
Serial |
string
|
Серійний номер НКІ (тільки для апаратних) | |
SubjectCN |
string
|
||
SubjectSerialNumber |
string
|
||
SelfSigned |
bool
|
||
SubjectKeyIdentifier |
string
|
||
SubjectFingerprint |
string
|
||
KeyUsage |
string
|
||
CertificateSerialNumber |
string
|
||
SubjectUid |
string
|
||
Email |
string
|
||
IssuerCN |
string
|
||
IssuerSN |
string
|
[]KeyStoreSlotDescriptor
Array of KeyStoreSlotDescriptor
ImportKeyStore
Імпортувати файл НКІ до сховища UmCAService
ImportKeyStoreRequest
Struct
Name | Type | Description | |
---|---|---|---|
Data |
[]byte
|
Файл НКІ, що має бути імпортований | |
KeyStore |
SlotInfo
|
Дескриптор ключового сховища. На даний момент часу підтримуються тільки файлові сховища, тому KeyStore.Description має містити шлях до директорії зберігання ключів, а KeyStore.Hw=true. Також опційно можна вказати ім'я файлу в KeyStore.Label |
KeyStoreSlotDescriptor
Struct
Name | Type | Description | |
---|---|---|---|
Certs |
[]CertificateDescriptorWide
|
||
Hw |
bool
|
Прапорець, що вказує на тип НКІ(програмний/апаратний) | |
Description |
string
|
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate | |
Label |
string
|
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate) | |
Serial |
string
|
Серійний номер НКІ (тільки для апаратних) |
LoadAssociatedCertificates
Завантажити асоційовані сертифікати (створити додаткові key11.dat-файли за потреби)
LoadAssociatedCertificatesRequest
Struct
Name | Type | Description | |
---|---|---|---|
Pin |
string
|
||
KeyStore |
SlotInfoRequest
|
[]CertificateDescriptorWide
Array of CertificateDescriptorWide
SelectKeyStore
Знаходження НКІ за селектором
KeyStoreSelector
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
[]byte
|
Сертифікат для пошуку НКІ, якому він належить | |
Cms |
[]byte
|
Зашифрований або підписаний конверт в форматі CMS для пошуку НКІ, що містить сертифікат отримувача або підписувача відповідно | |
Hw |
bool
|
Прапорець, що вказує на тип НКІ(програмний/апаратний) | |
Description |
string
|
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних) | |
Label |
string
|
Мітка НКІ | |
Serial |
string
|
Серійний номер НКІ (тільки для апаратних) |
KeyStoreSlotDescriptor
Struct
Name | Type | Description | |
---|---|---|---|
Certs |
[]CertificateDescriptorWide
|
||
Hw |
bool
|
Прапорець, що вказує на тип НКІ(програмний/апаратний) | |
Description |
string
|
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate | |
Label |
string
|
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate) | |
Serial |
string
|
Серійний номер НКІ (тільки для апаратних) |
GetLog
Отримання файлу з логом (якщо є)
Sign
CreateMultipleSignatures
Підписати пакет документів
POST
/sign/multiple
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
MultipleSignaturesRequest
Struct
структура запиту для пакетного підпису
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
MultipleData
[][]byte
масив документів для підпису
MultipleCms
[][]byte
список існуючих конвертів підпису для додавання нових підписів
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/json
[][]byte
CreateSignature
Підписання документу (новий або існуючий)
POST
/sign
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
SignatureRequest
Struct
Структура запиту на отримання ЕЦП
Name
Type
Description
Certificate
[]byte
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks
Cms
[]byte
Існуючий конверт, який необхідно підписати (або залишити порожнім, якщо необхідно створити новий)
Data
[]byte
Дані для підпису
Pin
string
Пін-код до НКІ з сертифікатом ЕЦП
AsBlob
bool
Прапорець, що вказує формат повернення відповіді(octet-stream
якщо значення true
). Також може бути заданий http-заголовком Accept: application/octet-stream
AsResource
bool
Прапорець, що вказує на необхідність створення файлу з підписом в кеші, відповідь має містити посилання на створений ресурс
SigType
SignatureDescriptor
Дескриптор підпису
DigestAlgOid
string
Ідентифікатор алгоритму підпису
Response
application/octet-stream
application/json
GetSignatureFile
Завантажити файл з підписом або прикріплені до конверту дані
GET
/sign/:id
Response
application/octet-stream
application/pdf
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/x-pkcs7-signature
Verify
Verify
Перевірка підписаного документу або сертифікат
POST
/verify
Request
application/json
multipart/form-data
application/x-www-form-urlencoded
ValidationRequest
Struct
Структура запиту перевірки cms-конверту або сертифікату
Name
Type
Description
Certificate
[]byte
Сертифікат для перевірки (вказувати, тільки якщо необхідна перевірка лиш сертифікату, а не конверту)
Data
[]byte
Дані, що підписувались (тільки якщо вони відсутні в конверті)
Cms
[]byte
CMS-конверт для перевірки(можливо розширений до CADES-C(X) Long)
IntendedEku
string
Очікуване розширене використання ключа. "any" - будь яке розширене використання.
MustBeTimestamped
bool
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки
ValidateAsCADES
bool
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів
ValidateContentTimeStamp
bool
Прапорець, що вказує на необхідність перевірки мітки часу на дані
PreferOCSP
bool
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці
Policy
string
Політика перевірки сертифікатів
Можливі значення в запиті:
default
- політика за замовчуванням
stdua
- політика STDUA
qcua
- політика QCUA
czoua
- політика сумісності з ЦЗО
AttachedDataAsResource
bool
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування
GenerateValidationReport
bool
Прапорець, що вказує на необхідність формування звіту перевірки підпису
Response
application/json
ValidationResponse
Struct
Name
Type
Description
Status
string
Загальний статус перевірки:
Ok якщо конверт або сертифікат пройшли валідацію повністю
Nok якщо конверт пройшов валідацію частково, тобто є проблеми з валідацією окремих сертифікатів підписувачів або міток часу
текcт помилки якщо конверт не пройшов базовий етап валідації(зіпсований формат, відсутність даних, тощо), якщо перевірявся тільки сертифікат - помилка при валідації сертифікату
Signers
[]SignerInfo
Масив з інформацією про підписників (тільки при перевірці CMS)
AttachedData
AttachedData
Прикріплені до конверту дані(байтовий масив або url)
ValidationReportURL
string
Посилання на звіт перевірки підпису
CreateMultipleSignatures
Підписати пакет документів
MultipleSignaturesRequest
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
[]byte
|
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks | |
MultipleData |
[][]byte
|
масив документів для підпису | |
MultipleCms |
[][]byte
|
список існуючих конвертів підпису для додавання нових підписів | |
Pin |
string
|
Пін-код до НКІ з сертифікатом ЕЦП | |
SigType |
SignatureDescriptor
|
Дескриптор підпису | |
DigestAlgOid |
string
|
Ідентифікатор алгоритму підпису |
[][]byte
CreateSignature
Підписання документу (новий або існуючий)
SignatureRequest
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
[]byte
|
Сертифікат, що відповідає ключу для ЕЦП або файл з ключем в форматі pfx, dat, zs2, jks | |
Cms |
[]byte
|
Існуючий конверт, який необхідно підписати (або залишити порожнім, якщо необхідно створити новий) | |
Data |
[]byte
|
Дані для підпису | |
Pin |
string
|
Пін-код до НКІ з сертифікатом ЕЦП | |
AsBlob |
bool
|
Прапорець, що вказує формат повернення відповіді(octet-stream якщо значення true ). Також може бути заданий http-заголовком Accept: application/octet-stream |
|
AsResource |
bool
|
Прапорець, що вказує на необхідність створення файлу з підписом в кеші, відповідь має містити посилання на створений ресурс | |
SigType |
SignatureDescriptor
|
Дескриптор підпису | |
DigestAlgOid |
string
|
Ідентифікатор алгоритму підпису |
GetSignatureFile
Завантажити файл з підписом або прикріплені до конверту дані
Verify
Перевірка підписаного документу або сертифікат
ValidationRequest
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
[]byte
|
Сертифікат для перевірки (вказувати, тільки якщо необхідна перевірка лиш сертифікату, а не конверту) | |
Data |
[]byte
|
Дані, що підписувались (тільки якщо вони відсутні в конверті) | |
Cms |
[]byte
|
CMS-конверт для перевірки(можливо розширений до CADES-C(X) Long) | |
IntendedEku |
string
|
Очікуване розширене використання ключа. "any" - будь яке розширене використання. | |
MustBeTimestamped |
bool
|
Прапорець, що засвідчує обов'язковість наявності мітки часу в конверті та її перевірки | |
ValidateAsCADES |
bool
|
Прапорець, що вказує на необхідність перевірити конверт за процедурою перевірки CADES-C(X) Long конвертів | |
ValidateContentTimeStamp |
bool
|
Прапорець, що вказує на необхідність перевірки мітки часу на дані | |
PreferOCSP |
bool
|
Прапорець, що вказує на необхідність надавати перевагу сервісу OCSP замість CRL пре перевірці | |
Policy |
string
|
Політика перевірки сертифікатів Можливі значення в запиті: default - політика за замовчуваннямstdua - політика STDUAqcua - політика QCUAczoua - політика сумісності з ЦЗО |
|
AttachedDataAsResource |
bool
|
Прапорець, що вказує на необхідність видачі прикріплених даних у вигляді url-посилання на скачування | |
GenerateValidationReport |
bool
|
Прапорець, що вказує на необхідність формування звіту перевірки підпису |
ValidationResponse
Struct
Name | Type | Description | |
---|---|---|---|
Status |
string
|
Загальний статус перевірки: Ok якщо конверт або сертифікат пройшли валідацію повністю Nok якщо конверт пройшов валідацію частково, тобто є проблеми з валідацією окремих сертифікатів підписувачів або міток часу текcт помилки якщо конверт не пройшов базовий етап валідації(зіпсований формат, відсутність даних, тощо), якщо перевірявся тільки сертифікат - помилка при валідації сертифікату |
|
Signers |
[]SignerInfo
|
Масив з інформацією про підписників (тільки при перевірці CMS) | |
AttachedData |
AttachedData
|
Прикріплені до конверту дані(байтовий масив або url) | |
ValidationReportURL |
string
|
Посилання на звіт перевірки підпису |
Data Structures
KeyRequest
Struct
Запит на ключ та сертифікат
Name
Type
Description
Subject
map[string]string
Cловник, що відповідає структурі SubjectDN
DirectoryAttributes
map[string]string
Cловник, що відповідає розширенню 'атрибути директорії'
Email
string
KeyUsage
KU
Використання ключа
CriticalEkus
[]string
Список критичних розширених використань ключа (застаріле, використовуйте ExtendedKeyUsage)
ValidityDays
int
Кількість днів, протягом яких сертифікат вважається дійсним
ExtendedKeyUsage
ExtendedKeyUsage
SSCDLabels
SSCDLabels
Мітки генерації ключа на захищений носій ключової інформації
KeyParams
KeyParams
Параметри для генерації ключа
ExtendedKeyUsage
Struct
Name
Type
Description
Critical
bool
KeyPurposeIDs
[]string
note: 'Oids' replaced by 'KeyPurposeIDs' in 3.8.1
SSCDLabels
Struct
Мітки генерації ключа на захищений носій ключової інформації
Name
Type
Description
ExtendedKeyUsageIITStyle
bool
Extended Key Usage 1.3.6.1.4.1.19398.1.1.8.23 (Avtor Secure Token)
QcStatementSSCDUkraine
bool
qcStatement id-etsi-qcs-QcSSCD
DirectoryAttributeDeviceSerialNumber
bool
Directory Attribute 1.2.804.2.1.1.1.11.1.4.7.1
KeyParams
Struct
Cтруктура параметрів ключа
Name
Type
Description
AlgOid
string
Алгоритм відкритого ключа (його об'єктний ідентифікатор або скорочення), підтримувані наразі алгоритми:
'rsa'
- 1.2.840.113549.1.1.1 (PKCS#1 RSA)
'dstu4145'
- 1.2.804.2.1.1.1.1.3.1.1 (ДСТУ 4145/2002)
'ecdsa'
- 1.2.840.10045.2.1 (X9.62 ECDSA)
KeyLen
int
Довжина ключа, обирається автоматично, якщо значення порожнє
Params
[]byte
Опціональні параметри, зазвичай значення порожнє
SlotInfo
Struct
Загальна інформація про носій ключової інформації
Name
Type
Description
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
QcStatement
Struct
Name
Type
Description
StatementID
string
StatementInfo
[]byte
Timestamp
Typedef
Real Type
Description
Time
Timestamp - час UTC
KU
Typedef
Real Type
Description
uint8
KU - використання ключа. В запиті може бути закодоване як символами: s, e, c
, так і 1-байтним числом
's'
- цифровий підпис [0xCO]
'e'
- шифрування/ключовий обмін [0x30/0x08]
'c'
- підпис сертифікатів (ЦСК) [0x06]
KsType
Typedef
Real Type
Description
uint8
KsType - - тип ключового сховища
0
- всі сховища
1
- програмні сховища
2
- апаратні сховища
CertificateDescriptorWide
Struct
Розширений дескриптор сертифікату
Name
Type
Description
Base64
string
Subject
map[string]string
Словник полів subjectRDN
Issuer
map[string]string
Словник полів issuerRDN
DirectoryAttributes
map[string]string
Словник розширення "атрибути директорії"
NotBefore
Timestamp
Початок дії сертифікату
NotAfter
Timestamp
Закінчення дії сертифікату
Email
string
Email згідно RFC 822
CertificateSerialNumber
string
Серійний номер сертифікату
KeyUsage
KU
Використання ключа
PublicKey
string
Відкритий ключ
PublicKeyAlg
string
Алгоритм відкритого ключа
KeyLength
int
Довжина ключа
CriticalEkus
[]string
Критичні розширені використання ключа
CertificatePolicies
[]string
Розширення "політики сертифікату"
SubjectKeyIdentifier
string
Розширення "ідентифікатор ключа"
AuthorityKeyIdentifier
string
Розширення "ідентифікатор ключа видавця"
SubjectFingerprint
string
Геш-сума структури subjectRDN
SelfSigned
bool
Визначення, чи самопідписаний сертифікат
AlternativeName
map[string][]string
Словник розширення "альтернативне ім'я суб'єкта", можливі ключі словника: "IPs", "DNSNames", "URIs", "EmailAddresses" або довільні об'єктні ідентифікатори
ExtendedKeyUsage
ExtendedKeyUsage
extended key usage extension
QcStatements
QcStatements
qcStatements extension
ProxySettings
Struct
Name
Type
Description
Host
string
Port
int
User
string
Password
string
UseSystemProxy
bool
SignatureDescriptor
Typedef
Real Type
Description
int
SignatureDescriptor - дескриптор параметрів ЕЦП
Крім числа дескриптор підпису зручно можна задати рядком у форматі: $type[-attached][-ts][-signtime][-ocsp][-$policy]
$type - [raw/cms/cades-c/cades-x/crypto-kdc]
- тип ЕЦП: raw - чистий підпис, pdf - внутрішній цифровий підпис pdf-файлу, docx - підпис документу openxml office(.docx), cms - конверт в форматі CmsSigned згідно PKCS#7, cades - конверт в форматі CADES C(X) Long, crypto-kdc - ЕЦП в форматі CryptoKDC
attached
- визначає чи прикріпляти дані до конверту
ts
- вказує на необхідність накладання мітки часу
ts-content
- вказує на необхідність накладання мітки часу на дані(зазвичай не потрібно, якщо ставиться звичайна мітка часу)
signtime
- вказує на необхідність включення в конверт часу підпису
ocsp
- вказує на необхідність використовувати відповіді OCSP при формуванні CAdES Long C/X - конвертів
$policy - [default/stdua/qcua/czoua]
політика валідації сертифікатів(вказувати при формуванні CAdES Long C/X - конвертів)
(* [...]
- опційний параметр, $a
- позначення рядкової змінної)
Приклади:
- формування конверту з прикріпленими даними в форматі CAdES Long X з політикою валідації STDUA і включенням статусів OCSP з включеним часом підпису: cades-x-attached-ts-signtime-ocsp-stdua
;
- звичайний CAdES BES-конверт з не прикріпленими даними: cms
.
KeyStoreSlotDescriptor
Struct
Дескриптор НКІ
Name
Type
Description
Certs
[]CertificateDescriptorWide
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate
Label
string
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate)
Serial
string
Серійний номер НКІ (тільки для апаратних)
KeyStoreSelector
Struct
Cелектор носія ключової інформації: для вибору НКІ необхідно задати сертифікат або cms-конверт (зашифрований чи підписаний) або деякі з полів дескриптору НКІ
Name
Type
Description
Certificate
[]byte
Сертифікат для пошуку НКІ, якому він належить
Cms
[]byte
Зашифрований або підписаний конверт в форматі CMS для пошуку НКІ, що містить сертифікат отримувача або підписувача відповідно
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
SlotInfoRequest
Struct
Фільтр для пошуку НКІ
Name
Type
Description
Hw
bool
Прапорець, що вказує на тип НКІ(програмний/апаратний)
Description
string
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних)
Label
string
Мітка НКІ
Serial
string
Серійний номер НКІ (тільки для апаратних)
SignerInfo
Struct
Інформація про вілідацію підписника
Name
Type
Description
Certificate
CertificateDescriptorWide
Дескриптор сертифікату підписувача
SigningTime
Timestamp
Мітка часу на підпис
ContentTimeStamp
Timestamp
Мітка часу на дані
ValidationStatus
string
Статус валідації підписувача:
Ok якщо все гаразд.
текст помилки якщо щось пішло не так (не валідна мітка часу, сертифікат або падіння метеориту на сервер OCSP, тощо). Детальніше про статуси валідації можна дізнатись із словникаValidationStatusesMap
KeyRequest
Struct
Name | Type | Description | |
---|---|---|---|
Subject |
map[string]string
|
Cловник, що відповідає структурі SubjectDN | |
DirectoryAttributes |
map[string]string
|
Cловник, що відповідає розширенню 'атрибути директорії' | |
Email |
string
|
||
KeyUsage |
KU
|
Використання ключа | |
CriticalEkus |
[]string
|
Список критичних розширених використань ключа (застаріле, використовуйте ExtendedKeyUsage) | |
ValidityDays |
int
|
Кількість днів, протягом яких сертифікат вважається дійсним | |
ExtendedKeyUsage |
ExtendedKeyUsage
|
||
SSCDLabels |
SSCDLabels
|
Мітки генерації ключа на захищений носій ключової інформації | |
KeyParams |
KeyParams
|
Параметри для генерації ключа |
ExtendedKeyUsage
Struct
Name | Type | Description | |
---|---|---|---|
Critical |
bool
|
||
KeyPurposeIDs |
[]string
|
note: 'Oids' replaced by 'KeyPurposeIDs' in 3.8.1 |
SSCDLabels
Struct
Name | Type | Description | |
---|---|---|---|
ExtendedKeyUsageIITStyle |
bool
|
Extended Key Usage 1.3.6.1.4.1.19398.1.1.8.23 (Avtor Secure Token) | |
QcStatementSSCDUkraine |
bool
|
qcStatement id-etsi-qcs-QcSSCD | |
DirectoryAttributeDeviceSerialNumber |
bool
|
Directory Attribute 1.2.804.2.1.1.1.11.1.4.7.1 |
KeyParams
Struct
Name | Type | Description | |
---|---|---|---|
AlgOid |
string
|
Алгоритм відкритого ключа (його об'єктний ідентифікатор або скорочення), підтримувані наразі алгоритми:'rsa' - 1.2.840.113549.1.1.1 (PKCS#1 RSA)'dstu4145' - 1.2.804.2.1.1.1.1.3.1.1 (ДСТУ 4145/2002)'ecdsa' - 1.2.840.10045.2.1 (X9.62 ECDSA) |
|
KeyLen |
int
|
Довжина ключа, обирається автоматично, якщо значення порожнє | |
Params |
[]byte
|
Опціональні параметри, зазвичай значення порожнє |
SlotInfo
Struct
Name | Type | Description | |
---|---|---|---|
Hw |
bool
|
Прапорець, що вказує на тип НКІ(програмний/апаратний) | |
Description |
string
|
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate | |
Label |
string
|
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate) | |
Serial |
string
|
Серійний номер НКІ (тільки для апаратних) |
QcStatement
Struct
Name | Type | Description | |
---|---|---|---|
StatementID |
string
|
||
StatementInfo |
[]byte
|
Timestamp
Typedef
Real Type | Description |
---|---|
Time |
Timestamp - час UTC |
KU
Typedef
Real Type | Description |
---|---|
uint8 |
KU - використання ключа. В запиті може бути закодоване як символами: s, e, c , так і 1-байтним числом's' - цифровий підпис [0xCO]'e' - шифрування/ключовий обмін [0x30/0x08]'c' - підпис сертифікатів (ЦСК) [0x06] |
KsType
Typedef
Real Type | Description |
---|---|
uint8 |
KsType - - тип ключового сховища0 - всі сховища1 - програмні сховища2 - апаратні сховища |
CertificateDescriptorWide
Struct
Name | Type | Description | |
---|---|---|---|
Base64 |
string
|
||
Subject |
map[string]string
|
Словник полів subjectRDN | |
Issuer |
map[string]string
|
Словник полів issuerRDN | |
DirectoryAttributes |
map[string]string
|
Словник розширення "атрибути директорії" | |
NotBefore |
Timestamp
|
Початок дії сертифікату | |
NotAfter |
Timestamp
|
Закінчення дії сертифікату | |
Email |
string
|
Email згідно RFC 822 | |
CertificateSerialNumber |
string
|
Серійний номер сертифікату | |
KeyUsage |
KU
|
Використання ключа | |
PublicKey |
string
|
Відкритий ключ | |
PublicKeyAlg |
string
|
Алгоритм відкритого ключа | |
KeyLength |
int
|
Довжина ключа | |
CriticalEkus |
[]string
|
Критичні розширені використання ключа | |
CertificatePolicies |
[]string
|
Розширення "політики сертифікату" | |
SubjectKeyIdentifier |
string
|
Розширення "ідентифікатор ключа" | |
AuthorityKeyIdentifier |
string
|
Розширення "ідентифікатор ключа видавця" | |
SubjectFingerprint |
string
|
Геш-сума структури subjectRDN | |
SelfSigned |
bool
|
Визначення, чи самопідписаний сертифікат | |
AlternativeName |
map[string][]string
|
Словник розширення "альтернативне ім'я суб'єкта", можливі ключі словника: "IPs", "DNSNames", "URIs", "EmailAddresses" або довільні об'єктні ідентифікатори | |
ExtendedKeyUsage |
ExtendedKeyUsage
|
extended key usage extension | |
QcStatements |
QcStatements
|
qcStatements extension |
ProxySettings
Struct
Name | Type | Description | |
---|---|---|---|
Host |
string
|
||
Port |
int
|
||
User |
string
|
||
Password |
string
|
||
UseSystemProxy |
bool
|
SignatureDescriptor
Typedef
Real Type | Description |
---|---|
int |
SignatureDescriptor - дескриптор параметрів ЕЦП Крім числа дескриптор підпису зручно можна задати рядком у форматі: $type[-attached][-ts][-signtime][-ocsp][-$policy] $type - [raw/cms/cades-c/cades-x/crypto-kdc] - тип ЕЦП: raw - чистий підпис, pdf - внутрішній цифровий підпис pdf-файлу, docx - підпис документу openxml office(.docx), cms - конверт в форматі CmsSigned згідно PKCS#7, cades - конверт в форматі CADES C(X) Long, crypto-kdc - ЕЦП в форматі CryptoKDCattached - визначає чи прикріпляти дані до конвертуts - вказує на необхідність накладання мітки часуts-content - вказує на необхідність накладання мітки часу на дані(зазвичай не потрібно, якщо ставиться звичайна мітка часу)signtime - вказує на необхідність включення в конверт часу підписуocsp - вказує на необхідність використовувати відповіді OCSP при формуванні CAdES Long C/X - конвертів$policy - [default/stdua/qcua/czoua] політика валідації сертифікатів(вказувати при формуванні CAdES Long C/X - конвертів)(* [...] - опційний параметр, $a - позначення рядкової змінної)Приклади: - формування конверту з прикріпленими даними в форматі CAdES Long X з політикою валідації STDUA і включенням статусів OCSP з включеним часом підпису: cades-x-attached-ts-signtime-ocsp-stdua ;- звичайний CAdES BES-конверт з не прикріпленими даними: cms . |
KeyStoreSlotDescriptor
Struct
Name | Type | Description | |
---|---|---|---|
Certs |
[]CertificateDescriptorWide
|
||
Hw |
bool
|
Прапорець, що вказує на тип НКІ(програмний/апаратний) | |
Description |
string
|
Опис НКІ: ім'я носія для апаратних; шлях до файлу для програмних в структурі KeyStoreSlotDescriptor або шлях до директорії з ключами в контролері CreateCertificate | |
Label |
string
|
Мітка НКІ(ім'я файлу для програмних НКІ в CreateCertificate) | |
Serial |
string
|
Серійний номер НКІ (тільки для апаратних) |
KeyStoreSelector
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
[]byte
|
Сертифікат для пошуку НКІ, якому він належить | |
Cms |
[]byte
|
Зашифрований або підписаний конверт в форматі CMS для пошуку НКІ, що містить сертифікат отримувача або підписувача відповідно | |
Hw |
bool
|
Прапорець, що вказує на тип НКІ(програмний/апаратний) | |
Description |
string
|
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних) | |
Label |
string
|
Мітка НКІ | |
Serial |
string
|
Серійний номер НКІ (тільки для апаратних) |
SlotInfoRequest
Struct
Name | Type | Description | |
---|---|---|---|
Hw |
bool
|
Прапорець, що вказує на тип НКІ(програмний/апаратний) | |
Description |
string
|
Опис НКІ (ім'я носія для апаратних, шлях до файлу для програмних) | |
Label |
string
|
Мітка НКІ | |
Serial |
string
|
Серійний номер НКІ (тільки для апаратних) |
SignerInfo
Struct
Name | Type | Description | |
---|---|---|---|
Certificate |
CertificateDescriptorWide
|
Дескриптор сертифікату підписувача | |
SigningTime |
Timestamp
|
Мітка часу на підпис | |
ContentTimeStamp |
Timestamp
|
Мітка часу на дані | |
ValidationStatus |
string
|
Статус валідації підписувача: Ok якщо все гаразд. текст помилки якщо щось пішло не так (не валідна мітка часу, сертифікат або падіння метеориту на сервер OCSP, тощо). Детальніше про статуси валідації можна дізнатись із словникаValidationStatusesMap |
Error Handling
В ході запитів до API сервіс може реагувати рядом ситуацій. Список http-кодів відповіді та прикладів JSON-структур відповіді сервісу при помилках:
200
(Ok) - запит було успішно оброблено, відповідь сервісу сформована згідно структури відповіді.400
(Bad Request) - запит було сформовано некоректно, наприклад пошкоджено формат якогось поля, або воно є незаданим. Зазвичай свідчить про помилку програміста.Bad Request{
"Message": "Data is required", // текстове повідомлення про помилку, в даному разі воно каже про відсутність поля 'Data'
"Reason": "Request" // причина помилки, 'Request' каже про пошкоджений запит
}403
(Forbidden) - сервіс не зміг обробити запит, оскільки запит порушує політики безпеки сервісу(відсутність веб-ресурсу в білому списку, відсутність директорії для генерації ключа, що вказана в запиті в файлі конфігурації). В нормальному сценарії використання сервісу - не виникає.500
(Internal Server Error) - сталась помилка прикладного рівня користувача, до прикладу при роботі з бібіліотекоюCryptoLib
. Детальніше про коди помилок можна дізнатись із словників DsExceptionsMap, KeyStoreExceptionsMap, ValidationStatusesMapInternal Server Error{
"CryptoLibError": {
"Kind": 2, // тип виключення: 1 - DsException, 2 - KeyStoreException, 3 - ValidationError, -1 - UnknownException
"Code": 1880096772, // код помилки
"InnerCode": 0 // внутрішній код помилки, зазвичай 0
},
"Message": "KeyStoreException: KSE_INVALID_PASSWORD ", // текстове повідомлення про помилку, в прикладі каже про невірний пін-код
"Reason": "CryptoLib" // причина помилки, 'CryptoLib' каже про виключення рівня бібліотеки CryptoLib
}
Constants
map[string]int{
// ECDSA Brainpool
"1.3.36.3.3.2.8.1.1.3": 192,
"1.3.36.3.3.2.8.1.1.5": 224,
"1.3.36.3.3.2.8.1.1.7": 256,
"1.3.36.3.3.2.8.1.1.9": 320,
"1.3.36.3.3.2.8.1.1.11": 384,
"1.3.36.3.3.2.8.1.1.13": 512,
// ECDSA Ansip
"1.3.132.0.30": 160,
"1.3.132.0.33": 224,
"1.3.132.0.34": 384,
"1.3.132.0.35": 521,
// ECDSA Prime
"1.2.840.10045.3.1.1": 192,
"1.2.840.10045.3.1.4": 239,
"1.2.840.10045.3.1.7": 256,
// Dstu4145WithGost
"1.2.804.2.1.1.1.1.3.1.1.2.0": 163,
"1.2.804.2.1.1.1.1.3.1.1.2.1": 167,
"1.2.804.2.1.1.1.1.3.1.1.2.2": 173,
"1.2.804.2.1.1.1.1.3.1.1.2.3": 179,
"1.2.804.2.1.1.1.1.3.1.1.2.4": 191,
"1.2.804.2.1.1.1.1.3.1.1.2.5": 233,
"1.2.804.2.1.1.1.1.3.1.1.2.6": 257,
"1.2.804.2.1.1.1.1.3.1.1.2.7": 307,
"1.2.804.2.1.1.1.1.3.1.1.2.8": 367,
"1.2.804.2.1.1.1.1.3.1.1.2.9": 431,
"1.2.804.2.1.1.1.1.3.1.2.2.0": 173,
"1.2.804.2.1.1.1.1.3.1.2.2.1": 179,
"1.2.804.2.1.1.1.1.3.1.2.2.2": 191,
"1.2.804.2.1.1.1.1.3.1.2.2.3": 233,
"1.2.804.2.1.1.1.1.3.1.2.2.4": 431,
// Dstu4145WithDstu7564
"1.2.804.2.1.1.1.1.3.6.1.1.2.0": 163,
"1.2.804.2.1.1.1.1.3.6.1.1.2.1": 167,
"1.2.804.2.1.1.1.1.3.6.1.1.2.2": 173,
"1.2.804.2.1.1.1.1.3.6.1.1.2.3": 179,
"1.2.804.2.1.1.1.1.3.6.1.1.2.4": 191,
"1.2.804.2.1.1.1.1.3.6.1.1.2.5": 233,
"1.2.804.2.1.1.1.1.3.6.1.1.2.6": 257,
"1.2.804.2.1.1.1.1.3.6.1.1.2.7": 307,
"1.2.804.2.1.1.1.1.3.6.1.1.2.8": 367,
"1.2.804.2.1.1.1.1.3.6.1.1.2.9": 431,
"1.2.804.2.1.1.1.1.3.6.1.2.2.0": 173,
"1.2.804.2.1.1.1.1.3.6.1.2.2.1": 179,
"1.2.804.2.1.1.1.1.3.6.1.2.2.2": 191,
"1.2.804.2.1.1.1.1.3.6.1.2.2.3": 233,
"1.2.804.2.1.1.1.1.3.6.1.2.2.4": 431,
}
map[string]string{
// National algorithms
"Gost34311": "1.2.804.2.1.1.1.1.2.1",
"Dstu7564(256)": "1.2.804.2.1.1.1.1.2.2.1",
"Dstu7564(384)": "1.2.804.2.1.1.1.1.2.2.2",
"Dstu7564(512)": "1.2.804.2.1.1.1.1.2.2.3",
// International algorithms
"SHA-1": "1.3.14.3.2.26",
"SHA-256": "2.16.840.1.101.3.4.2.1",
"SHA-384": "2.16.840.1.101.3.4.2.2",
"SHA-512": "2.16.840.1.101.3.4.2.3",
"SHA-224": "2.16.840.1.101.3.4.2.4",
"SHA-3(224)": "2.16.840.1.101.3.4.2.7",
"SHA-3(256)": "2.16.840.1.101.3.4.2.8",
"SHA-3(384)": "2.16.840.1.101.3.4.2.9",
"SHA-3(512)": "2.16.840.1.101.3.4.2.10",
}
map[int]string{
0x70000001: "ERR_INVALID_FUNCTION", // invalid function
0x70000002: "ERR_INVALID_OPERATION", // invalid operation
0x70000003: "ERR_INVALID_PARAM", // invalid parameter
0x70000004: "ERR_DATA_NOT_FOUND", // data not found
0x70000005: "ERR_DATA_CORRUPTED", // data is corrupted
0x70000006: "ERR_ALG_NOT_FOUND", // the algorithm is not supported
0x70000100: "ERR_TRANSPORT_STATUS", // code base for network error, error coding: ERR_TRANSPORT_STATUS + HTTP_STATUS
0x70000800: "ERR_TSP_STATUS", // code base for TSP service error, error coding: ERR_TSP_STATUS + TSP_STATUS
-3: "ERR_IN_OUT", // input/output error
-9: "ERR_CORRUPTED", // data is corrupted
}
map[string]string{
// National algorithms
"Gost28147cfb": "1.2.804.2.1.1.1.1.1.1.3",
"Dstu7624cfb(256)": "1.2.804.2.1.1.1.1.1.3.3.2",
"Dstu7624cfb(512)": "1.2.804.2.1.1.1.1.1.3.3.3",
"Dstu7624cfb(128)": "1.2.804.2.1.1.1.1.1.3.3.1",
"Dstu7624cbc(128)": "1.2.804.2.1.1.1.1.1.3.5.1",
"Dstu7624cbc(256)": "1.2.804.2.1.1.1.1.1.3.5.2",
"Dstu7624cbc(512)": "1.2.804.2.1.1.1.1.1.3.5.3",
"Dstu7624ofb(128)": "1.2.804.2.1.1.1.1.1.3.6.1",
"Dstu7624ofb(256)": "1.2.804.2.1.1.1.1.1.3.6.2",
"Dstu7624ofb(512)": "1.2.804.2.1.1.1.1.1.3.6.3",
// International algorithms
"aes128-CBC": "2.16.840.1.101.3.4.1.2",
"aes128-CFB": "2.16.840.1.101.3.4.1.4",
"aes192-CBC": "2.16.840.1.101.3.4.1.22",
"aes192-CFB": "2.16.840.1.101.3.4.1.24",
"aes256-CBC": "2.16.840.1.101.3.4.1.42",
"aes256-CFB": "2.16.840.1.101.3.4.1.44",
"desCBC": "1.3.14.3.2.7",
"DES-EDE3-CBC": "1.2.840.113549.3.7",
}
map[int]string{
0x70100001: "KSE_NOT_IMPLEMENTED", // the function is not implemented
0x70100002: "KSE_DATA_NOT_FOUND", // keystore not found
0x70100003: "KSE_STORE_GENERAL", // general keystores error, more detailed Cryptoki library level error returns in InnerCode
0x70100004: "KSE_INVALID_PASSWORD", // wrong PIN
0x70100005: "KSE_LOGIN_REQUIRED", // login required
0x70100006: "KSE_STORE_LOCKED", // keystore is blocked
0x70100007: "KSE_STORE_NOMEMORY", // not enough memory on keystore
}
map[string]string{
"edrpou": "1.2.804.2.1.1.1.11.1.4.2.1",
"drfo": "1.2.804.2.1.1.1.11.1.4.1.1",
"hwDeviceSN": "1.3.6.1.4.1.27990.2.3.3",
"grDeviceSN": "1.3.6.1.4.1.27990.2.3.5",
"CARequestId": "1.3.6.1.4.1.27990.2.6.4",
}
map[string]string{
"CN": "2.5.4.3",
"SN": "2.5.4.4",
"C": "2.5.4.6",
"L": "2.5.4.7",
"ST": "2.5.4.8",
"O": "2.5.4.10",
"OU": "2.5.4.11",
"T": "2.5.4.12",
"G": "2.5.4.42",
"I": "2.5.4.43",
"DC": "0.9.2342.19200300.100.1.25",
"E": "1.2.840.113549.1.9.1",
"STREET": "2.5.4.9",
"SERIALNUMBER": "2.5.4.5",
"uid": "2.5.4.45",
"description": "2.5.4.13",
}
map[int]string{
1: "VFS_INPROGRESS", // check in process
2: "VFS_CERT_NOT_FOUND", // certificate not found
3: "VFS_CERT_USAGE", // misuse of certificate
4: "VFS_ALG_NOT_FOUND", // unknown algorithm
5: "VFS_INVALID", // signature is invalid
6: "VFS_BAD_FORMAT", // damaged envelope format
0: "CVS_VALID", // certificate is valid
-1: "CVS_REVOKED", // certificate is revoked
-2: "CVS_NOT_EFFECTIVE", // certificate is expired
-3: "CVS_CRL_NOT_EFFECTIVE", // certificate revocation list is expired
-4: "CVS_BROKEN", // the certificate is damaged
-5: "CVS_CRL_BROKEN", // certificate revocation list is damaged
-6: "CVS_VIOLATE_POLICY", // the certificate violates the application policy
-7: "CVS_CRL_VIOLATE_POLICY", // certificate revocation list violates the application policy
-8: "CVS_UNKNOWN_CA", // unknown CA
-9: "CVS_UNKNOWN_CRL", // unknown certificate revocation list
-10: "CVS_UNREFERENCED_CA", // a missing link to the certificate from chain during checking the envelope in CADES(C)X Long format
-12: "CVS_VIOLATE_USAGE", // certificate violates the application
-13: "CVS_STORAGE_ERROR", // storage error
-14: "CVS_OCSP_TRANSPORT_ERROR", // network error during working with OCSP
-15: "CVS_OCSP_CERT_ERROR", // OCSP certificate has not been validated
-16: "CVS_OCSP_BROKEN", // OCSP response is corrupted
-17: "CVS_OCSP_DIFFERENT_TIME", // OCSP response is outdated
-18: "CVS_ALG_NOT_SUPPORTED", // the algorithm is not supported
-19: "CVS_OCSP_CERT_CA_ERROR", // certificate validation error that is parent to the OCSP certificate
}