warlocklex
Гость
|
|
« : 21-12-2006 19:48 » |
|
Не как не могу разобраться как передать ключ….пару ключей по сети.
На стороне сервера создает пару ключей:
// Получение хэндл криптопровайдера if (!CryptAcquireContext(&hProv, NULL,MS_DEF_PROV, PROV_RSA_FULL,0)) {ShowMessage(IntToStr(g)); return; } // генерация сессионного ключа if (!CryptGenKey(hProv,CALG_RC4,CRYPT_EXPORTABLE|CRYPT_ENCRYPT, &hSessionKey)) { ShowMessage("Error_CryptGenKey"); return; } // получение ключа для экспорта ключа шифрования if (!CryptGetUserKey(hProv, AT_KEYEXCHANGE, &hPublicKey)){ ShowMessage("error_CryptGetUserKey"); return; } countbk = 0;
if (!CryptExportKey(hSessionKey, hPublicKey,SIMPLEBLOB, 0, NULL, &countbk)){ ShowMessage("error_CryptExportKey1"); return; } /*BYTE* */data = static_cast<BYTE*>(malloc(countbk));
ZeroMemory(data, count);
// экспорт ключа шифрования if (!CryptExportKey(hSessionKey, hPublicKey,SIMPLEBLOB, 0, data, &countbk)){ ShowMessage("error_CryptExportKey"); return;}
на стороне клиента что то связанное с:
if(!CryptImportKey(hProv, data, countbk, hPublicKey, 0, &hNewKey)){ ShowMessage(GetLastError()); ShowMessage("clientError_Key's import"); return;}
в одной программе всё работает - это понятно. Но по сети не получается: я передавал и data(BYTE *pbData) и countbk(DWORD dwDataLen) и hPublicKey(HCRYPTKEY hImpKey) .На разных машинах создаются разные провайдеры hProv(HCRYPTPROV hProv).
Или я не туда пошел.Подскажите!!!!ПЖАЛУЙСТА!! а то «у меня уже фляга брызжет».
Или ссылку где популярно обЪеснино или хотя бы намёк.
|