Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Иван Бахтин  
#1 Оставлено : 14 февраля 2024 г. 18:01:12(UTC)
Иван Бахтин

Статус: Участник

Группы: Участники
Зарегистрирован: 24.02.2021(UTC)
Сообщений: 19
Российская Федерация
Откуда: Сыктывкар

Сказал(а) «Спасибо»: 5 раз
Здравствуйте!
Скомпилировал расширение для Python pycades

Написал такой пример:
Код:
import pycades


store = pycades.Store()
store.Open(pycades.CADESCOM_CONTAINER_STORE, pycades.CAPICOM_MY_STORE, pycades.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)
certs = store.Certificates
assert(certs.Count != 0), "Certificates with private key not found"

signer = pycades.Signer()
signer.Certificate = certs.Item(1)
signer.CheckCertificate = True
signer.KeyPin = '12345678'

signedData = pycades.SignedData()
signedData.Content = "Test content to be signed"
signature = signedData.SignCades(signer)

print(signature)


При выполнении выше описаного кода получаю ошибку:
Цитата:
Exception: The private key cannot be accessed because the wrong PIN was presented. (0x8010006B)


Судя по всему, указанный мной пин-код не принимается.
Подскажите, пожалуйста, как правильно задать пин-код, чтобы можно сформировать подпись?
Offline epermyakov  
#2 Оставлено : 16 февраля 2024 г. 9:19:33(UTC)
epermyakov

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.02.2024(UTC)
Сообщений: 7
Российская Федерация
Откуда: Пермский край

Сказал(а) «Спасибо»: 1 раз
Добрый день!

А вы уверены, что `certs.Item(1)` вернул нужный вам сертификат да ещё и с приватным ключём?

Получаю сертификат так:
Код:

def get_cert_by_hash(store: Store, cert_hash, is_valid=True) -> Optional[Certificate]:
    """
    Returns the certificate by the SHA-1 hash.

    :param store: the Store object
    :param cert_hash: the SHA-1 hash of the certificate
    :param is_valid: the certificate should be valid
    """
    certs = store.Certificates.Find(pycades.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, cert_hash, is_valid)
    return certs.Item(1) if certs.Count >= 1 else None





RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.