malikzh / NCANode

⭐ Приложение-сервер для работы с Электронно Цифровой Подписью (ЭЦП) РК
http://ncanode.kz
MIT License
252 stars 86 forks source link

подписание эцп через python на сайте #190

Closed YerekeMan closed 1 month ago

YerekeMan commented 5 months ago

Добрый день! Нам нужно подписать много документов ключом ЭЦП (очень много). Можно ли их подписать быстрее, например, Python-запросом?

guaricema commented 5 months ago

Добрый день. Количество вызовов метода для подписи будет равно количеству документов. Как вариант — использовать несколько экземпляров NCANode и разделить задачи между ними, т.е. подписывать документы параллельно.

YerekeMan commented 5 months ago

Добрый день. Спасибо за ваш ответ. Мы можем подписать и последовательно. Я хотел бы знать, есть ли способ подписать запрос с помощью python (API, POST). Если да, есть ли какой-нибудь пример или что-то подобное?

guaricema commented 5 months ago

Добрый день. Спасибо за ваш ответ. Мы можем подписать и последовательно. Я хотел бы знать, есть ли способ подписать запрос с помощью python (API, POST). Если да, есть ли какой-нибудь пример или что-то подобное?

NCANode реализован в виде веб-сервиса, вы можете использовать любой удобный вам инструмент или язык программирования для работы с ним, в том числе и Python.

Условный пример на Python:

import requests

def sign(signData, key, password):
    response = False

    data = {
        'data': signData,
        'signers': [{
            'key': key,
            'password': password,
            'keyAlias': None
        }],
        'withTsp': True,
        'tsaPolicy': 'TSA_GOST_POLICY',
        'detached': False
    }

    r = requests.post('http://your_ncanode_endpoint/cms/sign', json=data)

    print('sign', r.status_code)

    response = {
        'status': r.status_code,
        'message': r.text,
        'cms': r.content
    }

    return response

# Пример использования
result = sign("data_to_sign", "key", "password")
print(result)

Только замените 'http://your_ncanode_endpoint/cms/sign' на реальный адрес вашего сервера NCANode.

vprokof commented 1 month ago

Если нагрузка очень большая (сотни тысяч подписаний в день), советуем разместить NCANode на Apache Tomcat.