Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2013(UTC) Сообщений: 15
Сказал(а) «Спасибо»: 1 раз
|
CryptoPro 3.6. r3 linux CAPILITE CertGetCRLFromStore – отрабатывает, но *pdwFlags не выставляет как надо. Пример Код:
//выставляем значения флагов
DWORD verifyFlags = CERT_STORE_SIGNATURE_FLAG|CERT_STORE_TIME_VALIDITY_FLAG;
//вызываем функцию
crl = CertGetCRLFromStore(hStore,certContext,crl,&verifyFlags);
if (crl)
{
//значение verifyFlags не изменилось
//делаем проверку CERT_STORE_TIME_VALIDITY_FLAG вручную
if (0 == CertVerifyCRLTimeValidity(NULL, crl->pCrlInfo)){
//проверка прошла
std::cout << “VerifyCRLTimeValidity" << std::endl;
}
}
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Спасибо за информацию. В реализации данной функции флаги игнорируются. Вызов ее практически идентичен вызову CertFindCRLInStore(CRL_FIND_ISSUED_BY). Документацию исправим. Отредактировано пользователем 11 декабря 2013 г. 15:40:11(UTC)
| Причина: Не указана |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.12.2013(UTC) Сообщений: 15
Сказал(а) «Спасибо»: 1 раз
|
Есть код функции CertGetCRLFromStore (взято из интернета) Там после CertFindCRLInStoreпроверяется отдельно CERT_STORE_TIME_VALIDITY_FLAG и CERT_STORE_SIGNATURE_FLAG: В capilite есть проверки или нет? Или только CertFindCRLInStore? Судя по тому, что в библиотеке нет CryptVerifyCertificateSignatureEx, хотя она и описана в заголовочных файлах - не проверяется. Код:PCCRL_CONTEXT WINAPI CertGetCRLFromStore ( HCERTSTORE hCertStore,
PCCERT_CONTEXT pIssuerContext,
PCCRL_CONTEXT pPrevCrlContext,
DWORD * pdwFlags
)
{
static const DWORD supportedFlags = CERT_STORE_SIGNATURE_FLAG |
CERT_STORE_TIME_VALIDITY_FLAG | CERT_STORE_BASE_CRL_FLAG |
CERT_STORE_DELTA_CRL_FLAG;
PCCRL_CONTEXT ret;
TRACE("(%p, %p, %p, %08x)\n", hCertStore, pIssuerContext, pPrevCrlContext,
*pdwFlags);
if (*pdwFlags & ~supportedFlags)
{
SetLastError(E_INVALIDARG);
return NULL;
}
if (pIssuerContext)
ret = CertFindCRLInStore(hCertStore, pIssuerContext->dwCertEncodingType,
0, CRL_FIND_ISSUED_BY, pIssuerContext, pPrevCrlContext);
else
ret = CertFindCRLInStore(hCertStore, 0, 0, CRL_FIND_ANY, NULL,
pPrevCrlContext);
if (ret)
{
if (*pdwFlags & CERT_STORE_TIME_VALIDITY_FLAG)
{
if (0 == CertVerifyCRLTimeValidity(NULL, ret->pCrlInfo))
*pdwFlags &= ~CERT_STORE_TIME_VALIDITY_FLAG;
}
if (*pdwFlags & CERT_STORE_SIGNATURE_FLAG)
{
if (CryptVerifyCertificateSignatureEx(0, ret->dwCertEncodingType,
CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL, (void *)ret,
CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT, (void *)pIssuerContext, 0,
NULL))
*pdwFlags &= ~CERT_STORE_SIGNATURE_FLAG;
}
}
return ret;
}
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close