Статус: Новичок
Группы: Участники
Зарегистрирован: 26.10.2008(UTC) Сообщений: 2 Откуда: Санкт-Петербург
|
Здравствуйте, мне нужно получить дескриптор ключевой пары чтоб потом ее экспортировать.У меня следующая проблема - при вызове данной функции CryptGetUserKey() она возвращает ошибку что один из параметров не правильный. Криптопровайдер загружен, к контейнеру есть доступ. Вот мой код: HINSTANCE hLib,hLib2; // дескриптор библиотеки HCRYPTPROV hProv = 0; //перменная содержащая адрес криптопровайдера char* pszContainer = "FAT12\\1019BDFA\\7c324763.000\\762B"; //путь до контейнера unsigned long int Error; // ошибка функции CPAcquireContex BYTE *pbKeyBlob = 0; HCRYPTKEY phKey = 0; HCRYPTKEY hExpKey = 0; DWORD dwBlobLen;
VTableProvStruc vTable;
vTable.Version = 3; vTable.FuncVerifyImage = NULL; vTable.FuncReturnhWnd = NULL; vTable.dwProvType = 1; vTable.pszProvName = "Crypto-Pro Cryptographic Service Provider"; hLib = LoadLibrary("cpcspi.dll"); pbKeyBlob = new BYTE[300]; dwBlobLen = 300; if (hLib != NULL) { if(CPAcquireContext = (CPAcquireContext_t) GetProcAddress(hLib, "CPAcquireContext")) printf("Function CPAcquireContext successfuly uploaded.\n");
if(CPReleaseContext = (CPReleaseContext_t) GetProcAddress(hLib, "CPReleaseContext")) printf("Function CPReleaseContext successfuly uploaded.\n");
if( CPAcquireContext(&hProv, pszContainer, NULL, &vTable) == TRUE) printf("Cryptographic provider was acquired.\n"); else printf("ERROR!Cryptographic provider was not acquired.\n"); // AT_KEYEXCHANGE // AT_SIGNATURE if( CryptGetUserKey(hProv,AT_SIGNATURE,&phKey) == TRUE) printf("Key was taken."); else printf("Error while taking key hadle(CryptGetUserKey()).\n"); //if(!CryptExportKey(phKey, NULL, (DWORD)PRIVATEKEYBLOB, 0,(BYTE*)pbKeyBlob,&dwBlobLen)) // printf("Error %d during CryptExportKey!\n", GetLastError()); //if(!CryptExportKey(hKey, NULL, PUBLICKEYBLOB, 0, NULL, &dwBLen)) Error = GetLastError(); //printf("Error = %d\n",Error);
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,392 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 715 раз в 620 постах
|
А чем уровень Cryptxxx не устраивает? Хэндлы уровня CP несовместимы с Crypt по определению. В контейнере обычно ключ AT_KEYEXCHANGE - нужно проверять оба, хотя задача непонятна. Отредактировано пользователем 6 декабря 2008 г. 4:09:16(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close