Статус: Участник
Группы: Участники
Зарегистрирован: 23.06.2010(UTC) Сообщений: 24 Откуда: nowhere
|
Здравствуйте! Помогите, пожалуйста, разобраться с CertVerifyCertificateChainPolicy Исходные данные: даны два компа, на обоих стоит 3.6.6497(5359) KC1 Built: Aug 13 2010 00:51:39, AMD64 только на одном - всё английское (Win7/Pro) и CryptoPro CSP, а на другом - русское. И там и там стоит один и тот же сертификат с ключём, у которого истёк PRIVATEKEY_USAGE_PERIOD Однако, на английской машине вот такой код Цитата: CERT_CHAIN_POLICY_STATUS chps; memset(&chps, 0, sizeof(chps)); chps.cbSize = sizeof(chps); status = CertVerifyCertificateChainPolicy(CPCERT_CHAIN_POLICY_PRIVATEKEY_USAGE_PERIOD, chCtx, NULL, &chps); if (status == TRUE) { if (chps.dwError == S_OK) { Trace(8, "Certificate and it's private key usage period checked Ok!"); retCode = 1; } else { Trace(0, "Private key usage period check error (%08x): %s", chps.dwError, SystemErrorString(chps.dwError, tmpStr, sizeof(tmpStr))); sprintf(m_errStr, "Certificate [%s] private key usage period check error (0x%08X)", CertSubjectToString(cert->pCertInfo).c_str(), chps.dwError); } } else { Trace(8, "Can not check private key usage period!"); retCode = 1; // it is not fatal } }
попадает в "правильное" место - т.е. ругается "Private key usage period check error (800b0101): A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file." А на русской - вываливается в ветку "Can not check private key usage period!" (т.e. CertVerifyCertificateChainPolicy возвращает FALSE) Отчего такое вообще может быть, и как с этим бороться? P.S. Попробовал 32-битную версию - ситуация точно такая же Отредактировано пользователем 24 января 2013 г. 17:27:07(UTC)
| Причина: [code=cpp] отрезает кусок кода
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,457  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 39 раз Поблагодарили: 750 раз в 645 постах
|
На обеих машинах присутствует HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllVerifyCertificateChainPolicy\{C03D5610-26C8-4B6F-9549-245B5B3AB743}? Указанная библиотека подгружается в оба процесса? |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 23.06.2010(UTC) Сообщений: 24 Откуда: nowhere
|
На той, машине, где проверка не работает, нет ни ключа в регистри, ни самой pkivalidator.dll, хотя внутри дистра, с которого они ставились, pkivalidator.dll есть Отчего зависит, будет ли ставиться этот компонент, и как правильно проверить его наличие? По ключу в регистри? Или есть более цивильный способ?
А на линуксе этот компонент тоже требует каких-то особых телодвижений?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,457  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 39 раз Поблагодарили: 750 раз в 645 постах
|
На Windows его наличие зависит от установленной фичи revocation provider. |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
На Linux в CSP 3.6 R3 pkivalidator.so есть всегда. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 23.06.2010(UTC) Сообщений: 24 Откуда: nowhere
|
А как кошерно проверить, установлена ли фича "revocation provider"? Если CertVerifyCertificateChainPolicy(CPCERT_CHAIN_POLICY_PRIVATEKEY_USAGE_PERIOD,...) вернула FALSE - это значит, что фичи нет, или возможны другие причины такого результата (связанные с собственно результатами проверки)?
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close