Адаптер(Python) для работы с ЭЦП РК
Project description
pykalkan
Установка:
pip install pykalkan
Начало работы
Для работы с ЭЦП (Электронной Цифровой Подписью) используется библиотека Kalkan Crypt. Вам необходимо выполнить следующие шаги:
-
Установите нужную версию библиотеки Kalkan Crypt из SDK (SDK/C/Linux/C/libs). Например:
sudo cp -f libkalkancryptwr-64.so.2.0.2 /usr/lib/libkalkancryptwr-64.so
-
Установите CA (Certificate Authority) сертификаты из папки SDK/C/Linux/ca-certs. В этой папке находятся два типа сертификатов: production и test. Для установки сертификатов используйте предоставленные скрипты.
Обратите внимание, что при установке сертификатов потребуются права суперпользователя (sudo).
Пример работы с библиотекой Kalkan Crypt
Вот пример использования библиотеки Kalkan Crypt для проверки ЭЦП на валидность:
Внимание! Динамическая библиотека не предназначена для одновременного обращения к ней
Подключение библиотеки и загрузка хранилища ключей
from pykalkan import Adapter
lib = "libkalkancryptwr-64.so"
# Инициализация происходит в контекстном менеждере
# При выходе из контекста происходит finalize()
with Adapter(lib) as adapter:
adapter.load_key_store(CERT_PATH, CERT_PASSWORD)
adapter.set_tsa_url()
Подпись данных в виде base64 строки
...
data = "SGVsbG8sIFdvcmxkIQ=="
signed_data = adapter.sign_data(data)
...
Проверка подписи на валидность и отозванность (OCSP или CRL)
...
res = adapter.verify_data(signed_data, data_to_verify)
cert = res.get("Cert").decode()
validate_result = adapter.x509_validate_certificate_ocsp(cert) # OCSP
# или
validate_result = adapter.x509_validate_certificate_crl(cert, path_to_crl_file) # CRL
...
На данный момент (на 21.08.23) реализованы следующие функции из библиотеки:
- KC_Init
- KC_LoadKeyStore
- KC_Finalize
- KC_SignData
- KC_VerifyData
- X509ExportCertificateFromStore
- X509LoadCertificateFromStore
- X509CertificateGetInfo
- X509ValidateCertificate (CRL + OCSP)
- TSASetUrl
- GetTimeFromSign
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.