Metadata-Version: 2.1
Name: pykalkan
Version: 1.0.0
Summary: Адаптер(Python) для работы с ЭЦП РК
Author-email: Shalkarov Temirlan <shalqarov01@gmail.com>
Project-URL: Homepage, https://github.com/shalqarov/pykalkan
Project-URL: Bug Tracker, https://github.com/shalqarov/pykalkan/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE

# pykalkan

## Установка:

```shell
pip install pykalkan
```

## Начало работы

Для работы с ЭЦП (Электронной Цифровой Подписью) используется библиотека Kalkan Crypt. Вам необходимо выполнить
следующие шаги:

1. Установите нужную версию библиотеки Kalkan Crypt из SDK (SDK/C/Linux/C/libs). Например:

   ```bash
   sudo cp -f libkalkancryptwr-64.so.2.0.2 /usr/lib/libkalkancryptwr-64.so
   ```

2. Установите CA (Certificate Authority) сертификаты из папки SDK/C/Linux/ca-certs. В этой папке находятся два типа
   сертификатов: production и test. Для установки сертификатов используйте предоставленные скрипты.

   > Обратите внимание, что при установке сертификатов потребуются права суперпользователя (sudo).

## Пример работы с библиотекой Kalkan Crypt

Вот пример использования библиотеки Kalkan Crypt для проверки ЭЦП на валидность:

> Внимание! Динамическая библиотека не предназначена для одновременного обращения к ней
---

### Подключение библиотеки и загрузка хранилища ключей

```python
from pykalkan import Adapter

lib = "libkalkancryptwr-64.so"

kc = Adapter(lib)
kc.init()
kc.load_key_store(cert_path, cert_password)
kc.set_tsa_url()
```

---

### Подпись данных в виде base64 строки

```python
...
data = "SGVsbG8sIFdvcmxkIQ=="

signed_data = adapter.sign_data(data)
...
```

---

### Проверка подписи на валидность и отозванность *(OCSP или CRL)*

```python
...
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
