Форум КриптоПро
»
Средства криптографической защиты информации
»
Linux, Solaris etc.
»
CryptImportKey: NTE_KEYSET_NOT_DEF при попытке получить ключ согласования
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.03.2018(UTC) Сообщений: 5
|
Следую примеру из /opt/cprocsp/src/doxygen/CSP/ExportingCertificate/ExportingCertificate.c, но пишу не на Си, а на C# .NET Core, обращаясь к libcapi2.so с помощью InteropServices. Код, вызывающий функции библиотеки: https://pastebin.com/N8HjZQy3Код класса Libcapi: https://pastebin.com/Z3AqZCEnВсе идет хорошо до вызова CryptImportKey, который возвращает ошибку NTE_KEYSET_NOT_DEF "The keyset is not defined." Код:
CryptImportKey = False
hAgreeKey = 0
GetLastError: 2148073497 (0x80090019)
В качестве сертификата получателя используется тестовый корневой сертификат КриптоПро. В качестве сертификата отправителя - выданный тестовым УЦ сертификат. Если это важно - второй сертификат был получен на Windows и импортирован на машину с Linux в контейнере. Данные о сертификатах: Код:
=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=test@example.com, CN=Игнат Игнатьевич
Serial : 0x120026A25B02FCF150BD105E7600000026A25B
SHA1 Hash : 0x7c8380055be20382f30163681b6c2d8474f270de
SubjKeyID : b2a6c439bd8838dcf80f360688752ab10c44ee1b
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 13/03/2018 11:10:36 UTC
Not valid after : 13/06/2018 11:20:36 UTC
PrivateKey Link : Yes
Container : HDIMAGE\\e0696711.000\A055
Provider Name : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info : ProvType: 80, KeySpec: 1, Flags: 0x0
CA cert URL : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl
Extended Key Usage : 1.3.6.1.5.5.7.3.2
2-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Serial : 0x2B6E3351FD6EB2AD48200203CB5BA141
SHA1 Hash : 0x046255290b0eb1cdd1797d9ab8c81f699e3687f3
SubjKeyID : 15317cb08d1ade66d7159c4952971724b9017a83
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 05/08/2014 13:44:24 UTC
Not valid after : 05/08/2019 13:54:03 UTC
PrivateKey Link : No
=============================================================================
Я не понимаю, почему CryptImportKey возвращает мне эту ошибку. Шифрование-расшифровка с помощью утилиты cryptcp проходит без проблем.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.03.2018(UTC) Сообщений: 5
|
Переписал на Си, проблема та же: https://pastebin.com/vLv0dvxzПолный вывод программы: Код:
CryptAcquireCertificatePrivateKey = 1
hSenderProv = 34230691
senderPrivKeySpec = 1
CryptGetUserKey = 1
hSenderPrivKey = 34259747
CryptImportPublicKeyInfoEx = 1
hReceiverPubKey = 34287875
CryptExportKey = 1
recPubLen = 100
GetLastError = 0
CryptImportKey = 0
hAgreeKey = 0
GetLastError = 80090019
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.03.2018(UTC) Сообщений: 5
|
Контейнер проверил, ошибок нет: Код:
$ csptest -keyset -check -cont 'HDIMAGE\\e0696711.000\A055'
CSP (Type:80) v4.0.9014 KC1 Release Ver:4.0.9842 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 6845443
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
Container name: "e0696711d-4344-7ea2-108d-b3d34ec1bf9"
Check header passed.
Signature key is not available.
Exchange key is available. HCRYPTKEY: 0x6bb2f3
uec key is not available.
Check container passed.
CPCSP: Signing with the use of GOST R 34.10-2001 keys is not allowed from January 1st, 2019. You should move to the use of GOST R 34.10-2012 keys instead.
Continue using the GOST R 34.10-2001 key?
(o) OK, (c) Cancel
o
Check sign passed.
Check verify signature on private key passed.
Check verify signature on public key passed.
Check import passed.
Certificate in container matches AT_KEYEXCHANGE key.
Keys in container:
exchange key
Extensions:
OID: 1.2.643.2.2.37.3.10
Total: SYS: 0,000 sec USR: 0,040 sec UTC: 2,500 sec
[ErrorCode: 0x00000000]
Пишет Signature key is not available, но проблема же не в этом? Потому что при получении сертификата я выбрал "для подписи и обмена".
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.03.2018(UTC) Сообщений: 5
|
Разобрался. Нельзя сгенерировать ключ согласования с корневым сертификатом УЦ.
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Linux, Solaris etc.
»
CryptImportKey: NTE_KEYSET_NOT_DEF при попытке получить ключ согласования
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close