Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.12.2021(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 5 раз
|
Здравствуйте! Есть задача получить все данные сертификата. Предв арительно он создан и помещён в контейнер. Ясно, что можно получить дескриптор контекста Код:
BOOL acqRes = CryptAcquireContext(
&hProv,
"\\\\.\\HDIMAGE\\andrey",
NULL,
PROV_GOST_2012_256,
CRYPT_SILENT);
BOOL setRes = CryptSetProvParam(
hProv,
PP_KEYEXCHANGE_PIN,
(BYTE*)"1",
0);
А вот что дальше не совсем понятно - как по дескриптору выташить сертификат ?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Здравствуйте.
CryptGetUserKey(hProv, AT_KEYEXCHANGE, phUserKey) если ошибка - вызывать CryptGetUserKey(hCSP, AT_SIGNATURE, phUserKey)
CryptGetKeyParam(phUserKey, KP_CERTIFICATE, nil, pdwDataLen, 0) выделить память под pbCertificate размером pdwDataLen CryptGetKeyParam(phUserKey, KP_CERTIFICATE, pbCertificate, pdwDataLen, 0)
получить сертификат: pCertContext = CertCreateCertificateContext(X509_ASN_ENCODING, pbCertificate, pdwDataLen)
диалог свойств: CryptUIDlgViewContext(CERT_STORE_CERTIFICATE_CONTEXT, pCertContext, 0, pwszTitle, 0, nil)
освободить память для pbCertificate CertFreeCertificateContext CryptReleaseContext
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.12.2021(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 5 раз
|
Лучше, но с проблемами Вот такой код приводит к ошибке: Error number : 0x8010002c (Пустой контейнер?) Код: BOOL acqRes = CryptAcquireContext(
&hProv,
"\\\\.\\HDIMAGE\\andrey",
NULL,
PROV_GOST_2012_256,
CRYPT_SILENT);
BOOL setRes = CryptSetProvParam(
hProv,
PP_KEYEXCHANGE_PIN,
(BYTE*)"1",
0);
HCRYPTKEY phUserKey = 0;
BOOL getKeyRes = CryptGetUserKey(hProv, AT_SIGNATURE, &phUserKey);
DWORD pdwDataLen;
BOOL getKeyParamRes = CryptGetKeyParam(phUserKey, KP_CERTIFICATE, NULL, &pdwDataLen, 0);
DWORD err = GetLastError();
printf("Error number : 0x%x\n", err);
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
в getKeyParamRes false?
Точно есть сертификат в контейнере? Смотреть утилитами\через панель управления\Инструменты КриптоПРО |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.12.2021(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 5 раз
|
Автор: Андрей * в getKeyParamRes false?
Точно есть сертификат в контейнере? Смотреть утилитами\через панель управления\Инструменты КриптоПРО Да, и ошибка та самая Серт есть. Вот его данные Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 Subject : E=andrey@bank.ru, CN=andrey Serial : 0x120064243633064401FF966C63000200642436 SHA1 Thumbprint : b7a63baf9a31a470795d5d02174173e3911ef243 SubjectKeyID : 980e6b247c9b863af77a4edc9598033bf325d118 AuthorityKeyID : 13ee0e9af1e08b4aae1916efcbc4c52da919371d Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits) Public key : 04 40 11 cc 27 81 0c 10 3a 23 01 d3 17 68 a0 15 b8 70 64 38 6a 8d 18 1e fb c5 60 dc b7 b0 32 98 12 96 60 ef ad 70 ae 2d 91 6a a1 40 e0 b9 29 d0 ce b1 69 2f b2 45 9e f3 b6 7b 39 4d fd 99 9d 6d f4 bc Not valid before : 04/06/2024 04:37:46 UTC Not valid after : 04/08/2024 04:47:46 UTC PrivateKey Link : Yes Container : HDIMAGE\\andrey.000\B421 Provider Name : Crypto-Pro GOST R 34.10-2012 KC1 CSP Provider Info : Provider Type: 80, Key Spec: 1, Flags: 0x0 CA cert URL : http://testca.cryptopro....Test%20Center%202(2).crt OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf CDP : http://testca.cryptopro....Test%20Center%202(2).crl Key Usage : Digital Signature Non-Repudiation Key Encipherment Data Encipherment Certificate chain : A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. (0x800b0109) #0: Issuer : CRYPTO-PRO Test Center 2 Subject : CRYPTO-PRO Test Center 2 Not valid before : 14/05/2024 16:54:33 UTC Not valid after : 14/05/2025 17:04:33 UTC SHA1 Thumbprint : 17d4abc6ea4ba263d7d75ae2757c5a10b9f9b0fa Status : Error 0x00000020 = IS_UNTRUSTED_ROOT #1: Subject : andrey Not valid before : 04/06/2024 04:37:46 UTC Not valid after : 04/08/2024 04:47:46 UTC SHA1 Thumbprint : b7a63baf9a31a470795d5d02174173e3911ef243 Status : Success
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: astarukhin Автор: Андрей * в getKeyParamRes false?
Точно есть сертификат в контейнере? Смотреть утилитами\через панель управления\Инструменты КриптоПРО Да, и ошибка та самая Серт есть. Вот его данные Эта информация от утилиты, которая выдаёт данные из хранилища. Что в контейнере? HDIMAGE\\andrey.000\ /var/opt/cprocsp/keys/andrey/andrey/header.key - какой имеет размер? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
либо посмотреть в GUI: через cptools (Инструменты КриптоПРО) контейнер без сертификата: Snimok ehkrana ot 2024-06-10 18-04-07.png (51kb) загружен 4 раз(а).когда сертификат в контейнере и в тестировании видно это: Snimok ehkrana ot 2024-06-10 18-06-47.png (111kb) загружен 2 раз(а). |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.12.2021(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 5 раз
|
Автор: Андрей * Автор: astarukhin Автор: Андрей * в getKeyParamRes false?
Точно есть сертификат в контейнере? Смотреть утилитами\через панель управления\Инструменты КриптоПРО Да, и ошибка та самая Серт есть. Вот его данные Эта информация от утилиты, которая выдаёт данные из хранилища. Что в контейнере? HDIMAGE\\andrey.000\ /var/opt/cprocsp/keys/andrey/andrey/header.key - какой имеет размер? Занимает 199 байт Только адрес /var/opt/cprocsp/keys/andrey/andrey.000/header.key Вот данные контейнера Private key container name andrey unique name HDIMAGE\\andrey.000\B421 FQCN \\.\HDIMAGE\andrey location user integrity check successful loading of keys successful container version 2 Exchange key public key length 512 key export forbidden private key valid to 04/09/2025 03:21:44 UTC private key usage is permitted before the end of the key validity algorithm ГОСТ Р 34.10-2012 DH 256 бит ГОСТ Р 34.10 256 бит, параметры обмена по умолчанию ГОСТ Р 34.11-2012 256 бит public key export successful public key calculation successful public key import successful signature successful verification successful key exchange is allowed Signature key public key length 512 key export forbidden private key valid to 04/09/2025 03:21:14 UTC private key usage is permitted before the end of the key validity algorithm ГОСТ Р 34.10-2012 256 бит ГОСТ Р 34.10 256 бит, параметры по умолчанию ГОСТ Р 34.11-2012 256 бит public key export successful public key calculation successful public key import successful signature successful verification successful Symmetric key does not exist Container extensions 1.2.643.2.2.37.3.9 critical no valid to 04/09/2025 03:21:14 UTC 1.2.643.2.2.37.3.10 critical no valid to 04/09/2025 03:21:44 UTC Provider information version 5.0.13000 KC1 Linux AMD64 type and name 80, Crypto-Pro GOST R 34.10-2012 KC1 CSP mode library private key time validity control 1 (enabled)
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
199 байт - контейнер без сертификата. Записать его через cptools или certmgr.
Тогда код выше заработает.
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
p.s. CryptUIDlgViewContext - для Windows |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close