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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений Пряхин  
#1 Оставлено : 4 августа 2009 г. 19:31:24(UTC)
Евгений Пряхин

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

Группы: Участники
Зарегистрирован: 06.05.2009(UTC)
Сообщений: 28
Откуда: Москва

Здравствуйте.
Столкнулся со следующей проблемой.
При вызове AcquireCredentialsHandle получаю ошибку SEC_E_INTERNAL_ERROR. В качестве криптопровайдера использую CryptoPro 3.0.
Контейнер с ключами и сертификат находятся на eToken.
ОС: WinXP SP3, среда разработки MS VS 2008 SE.

Код создания мандатов:

Код:

int CreateCredentials(HCRYPTPROV cspHandle, PCredHandle phCreds, SECURITY_STATUS &status) {
    TimeStamp       tsExpiry;
    const DWORD     cSupportedAlgs = 0;
    ALG_ID          rgbSupportedAlgs[16];
    PCCERT_CONTEXT  pCertContext = NULL;
    int err;

    err = getCertificateContext(cspHandle, pCertContext);
    if (pCertContext == NULL)
        goto cleanup;
    ZeroMemory(&SchannelCred, sizeof(SchannelCred))
    SchannelCred.dwVersion  = SCHANNEL_CRED_VERSION;
    if(pCertContext) {
        SchannelCred.cCreds     = 1;
        SchannelCred.paCred     = &pCertContext;
    }
    SchannelCred.grbitEnabledProtocols = 0
    if(cSupportedAlgs) {
        SchannelCred.cSupportedAlgs    = cSupportedAlgs;
        SchannelCred.palgSupportedAlgs = rgbSupportedAlgs;
    }
    SchannelCred.dwFlags |= SCH_CRED_NO_DEFAULT_CREDS;
    SchannelCred.dwFlags |= SCH_CRED_MANUAL_CRED_VALIDATION;
    status = g_pSSPI->AcquireCredentialsHandleA(
                        NULL,                   // Name of principal    
                        UNISP_NAME_A,           // Name of package
                        SECPKG_CRED_OUTBOUND,   // Flags indicating use
                        NULL,                   // Pointer to logon ID
                        &SchannelCred,          // Package specific data
                        NULL,                   // Pointer to GetKey() func
                        NULL,                   // Value to pass to GetKey()
                        phCreds,                // (out) Cred Handle
                        &tsExpiry);             // (out) Lifetime (optional)
    if(status != SEC_E_OK) {
        /*
        if (status == SEC_E_INSUFFICIENT_MEMORY)
            std::cout << "!" << std::endl;
        else if (status == SEC_E_INTERNAL_ERROR)
            std::cout << "!!" << std::endl;
        else if (status == SEC_E_NO_CREDENTIALS)
            std::cout << "!!!" << std::endl;
        else if (status == SEC_E_NOT_OWNER)
            std::cout << "!!!!" << std::endl;
        else if (status == SEC_E_SECPKG_NOT_FOUND)
            std::cout << "!!!!!" << std::endl;
        else if (status == SEC_E_UNKNOWN_CREDENTIALS)
            std::cout << "!!!!!!" << std::endl;
        */
        std::cout << "!!!" << GetLastError() << std::endl;
        err = ERROR_CREATING_CREDENTIALS;
        goto cleanup;
    }
    err = FUNCTION_SUCCESS;
cleanup:
    // Освобождение контекста сертификата. В Schannel уже создана его копия.
    if(pCertContext != NULL) {
        CertFreeCertificateContext(pCertContext);
    }
    return err;
}
 



Если для анализа проблемы нужен еще какой-либо код, готов с радостью предоставить.

Может кто сталкивался?
Заранее спасибо.
Offline Максим Коллегин  
#2 Оставлено : 4 августа 2009 г. 20:01:20(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
КС1 или КС2?
Secur32.lib удобнее использовать.
Знания в базе знаний, поддержка в техподдержке
Offline Евгений Пряхин  
#3 Оставлено : 4 августа 2009 г. 20:04:51(UTC)
Евгений Пряхин

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

Группы: Участники
Зарегистрирован: 06.05.2009(UTC)
Сообщений: 28
Откуда: Москва

Цитата:
КС1 или КС2?

КС2
Цитата:
Secur32.lib удобнее использовать.

Каким образом можно использовать? Почему удобнее?
Offline Евгений Пряхин  
#4 Оставлено : 5 августа 2009 г. 15:11:49(UTC)
Евгений Пряхин

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

Группы: Участники
Зарегистрирован: 06.05.2009(UTC)
Сообщений: 28
Откуда: Москва

Есть мысли у кого в чем может быть дело?
Offline Максим Коллегин  
#5 Оставлено : 5 августа 2009 г. 16:17:56(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Secur32.lib эспортирует функции интрефейса SSPI.
В EventLog ошибок не появляется? Советую установить Crypto-Pro Winlogon в качестве патча к SSL, а еще лучше - CSP 3.6.
Знания в базе знаний, поддержка в техподдержке
Offline Евгений Пряхин  
#6 Оставлено : 5 августа 2009 г. 16:44:10(UTC)
Евгений Пряхин

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

Группы: Участники
Зарегистрирован: 06.05.2009(UTC)
Сообщений: 28
Откуда: Москва

В EventLog ошибок нету, впрочем как и каких либо других сообщений связанных с проблемой.
Пробовал использовать вышеуказанную библиотеку в виде подключения ее в качестве DLL - Secur32.dll.
Рельтат - та же ошибка.
Offline Евгений Пряхин  
#7 Оставлено : 5 августа 2009 г. 16:56:05(UTC)
Евгений Пряхин

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

Группы: Участники
Зарегистрирован: 06.05.2009(UTC)
Сообщений: 28
Откуда: Москва

При последних двух запусках в ивент лог записалась ошибка:
КриптоПро TLS. Ошибка 0x6ba при обращении к CSP: Сервер RPC недоступен.
Offline Максим Коллегин  
#8 Оставлено : 5 августа 2009 г. 17:22:52(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Упала служба cprmcsp. Попробуйте использовать KC1, или рекомендации из предыдущего поста.
Знания в базе знаний, поддержка в техподдержке
Offline Евгений Пряхин  
#9 Оставлено : 5 августа 2009 г. 17:29:20(UTC)
Евгений Пряхин

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

Группы: Участники
Зарегистрирован: 06.05.2009(UTC)
Сообщений: 28
Откуда: Москва

Спасибо за совет. Попробую для начала на КС1. Отпишу через пару часов орезультатах.
Offline Евгений Пряхин  
#10 Оставлено : 5 августа 2009 г. 18:05:03(UTC)
Евгений Пряхин

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

Группы: Участники
Зарегистрирован: 06.05.2009(UTC)
Сообщений: 28
Откуда: Москва

На КриптоПро 3ю.0 КС1 ошибка воспроизводится.
В ивент логе следующее:
КриптоПро TLS. Ошибка 0x80092004 при обращении к CSP: Объект или свойство не найдено.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.