24.12.2001 13:03:35Windows 98 - Error in AcquireCredentialsHandle Ответов: 3
Weasel
Имеется чистая Windows 98 SE c установленным Internet Explorer 5.0

Ставлю на нее CryptoPro: cpcsp - перезагрузка - cptls - перезагрузка.

Получаю сертификат с www.cryptopro.ru\CertSrv

Запускаю пример веб-клиента csptest (tlsc). И получаю ошибку: Error 0x80090305 in AcquireCredentialsHandle

На win2000 тот же клиент с теми же параметрами работает прекрасно.

Где искать проблему ?
 
Ответы:
24.12.2001 19:16:24kure
Действительно, примеры использования TLS не включали особенностей реализации в Win 9.x.

Постараемся завтра выложить новые примеры.
25.12.2001 7:42:13Weasel

Если примеры еще не готовы, не могли бы Вы пока хотя-бы подсказать, чем отличается реализация TLS в Win9x и где можно про это почитать подробнее.

Мы разрабатываем систему, которой как раз необходим TLS в 9x.
25.12.2001 16:18:13Serge3
Здравствуйте,

>Если примеры еще не готовы, не могли бы Вы пока хотя-бы подсказать, чем отличается реализация TLS в Win9x и где можно про это почитать подробнее

Отличия минимальны и ограничиваются загрузкой нужного DLL. Но, к сожалению, этот вопрос плохо освещён в MSDN. В нашем тестовом примере следует модифицировать функцию tls.c:44!LoadSecurityLibrary следующим образом:

/*****************************************************************************/
BOOL
LoadSecurityLibrary(void)
{
PSecurityFunctionTable pSecurityFunc;
INIT_SECURITY_INTERFACE pInitSecurityInterface;
OSVERSIONINFO VerInfo;
UCHAR lpszDLL[MAX_PATH];

//
// Find out which security DLL to use, depending on
// whether we are on Win2K, NT or Win9x
//

VerInfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (!GetVersionEx (&VerInfo))
{
return FALSE;
}

if (VerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT
&& VerInfo.dwMajorVersion == 4)
{
strcpy ((char *)lpszDLL, NT4_DLL_NAME );
}
else if (VerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
strcpy ((char *)lpszDLL, DLL_NAME );
}
else if (VerInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
strcpy ((char *)lpszDLL, "schannel.dll" );
}
else
{
return FALSE;
}