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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline olega  
#1 Оставлено : 11 декабря 2013 г. 13:47:30(UTC)
olega

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

Группы: Участники
Зарегистрирован: 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;
	}
}
Offline cross  
#2 Оставлено : 11 декабря 2013 г. 15:25:14(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Спасибо за информацию. В реализации данной функции флаги игнорируются. Вызов ее практически идентичен вызову CertFindCRLInStore(CRL_FIND_ISSUED_BY). Документацию исправим.

Отредактировано пользователем 11 декабря 2013 г. 15:40:11(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline olega  
#3 Оставлено : 11 декабря 2013 г. 16:03:55(UTC)
olega

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

Группы: Участники
Зарегистрирован: 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;
}

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