Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача ключей по сети или через файл в CryptoAPI

12K
21 декабря 2006 года
warlocklex
15 / / 14.01.2006
Не как не могу разобраться как передать ключ….пару ключей по сети.

На стороне сервера создает пару ключей:

// Получение хэндл криптопровайдера
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).

Или я не туда пошел.Подскажите!!!!ПЖАЛУЙСТА!! а то «у меня уже фляга брызжет».

Или ссылку где популярно обЪеснино или хотя бы намёк.
12K
22 декабря 2006 года
needjava
30 / / 06.10.2006
Попробуйте написать так(мне помогло):

 
Код:
BOOL res = CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, 0);
   if (!res) {
      res = CryptAcquireContext (&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET);
   }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог