20.05.2003 16:41:07Импорт открытого ключа получателя? Ответов: 1
Дмитрий Райхин
Пытаюсь экспортировать сессионный ключ, для чего, если я правильно понял, нужен открытый ключ получателя.
При импорте выдаётся ошибка NTE_BAD_TYPE, т.е. ошибочный тип ключевого блоба. Не подскажете, где ошибка? (пишу в Delphi)

Экспорт открытого ключа:
// Получаю хэндл ключевой пары
CPGetUserKey(hProv,AT_KEYEXCHANGE,@hExchangeKeyPair);
// Выделяю память для экспорта
CPExportKey(hProv,hExchangeKeyPair,0,PUBLICKEYBLOB,0,Nil,@dwKeyBlobDataLen);
pbPubKeyBlobData:=AllocMem(dwKeyBlobDataLen)
// Экспортирую открытый ключ
CPExportKey(hProv,hExcnangeKeyPair,0,PUBLICKEYBLOB,0,pbPubKeyBlobData,@dwKeyBlobDataLen);
// Пишу ключ в файл
iFileHandle:=FileCreate(sKeyFileName);
FileWrite(iFileHandle,pbPubKeyBlobData,dwKeyBlobDataLen);
FileClose(iFileHandle);
FreeMem(pbPubKeyBlobData);

Теперь импорт на другой стороне:
// Получаю ключевой блоб из файла
iFileHandle:=FileOpen(sKeyFileName,fmOpenRead);
iFileLength:=FileSeek(iFileHandle,0,2);
pbPubKeyBlobData:=AllocMem(iFileLength+1);
FileRead(iFileHandle,pbPubKeyBlobData,iFileLength);
FileClose(iFileHandle);
// Пытаюсь его импортировать
CPImportKey(hProv,pbPubKeyBlobData,iFileLength,0,0,@hPubKey) --> NTE_BAD_TYPE

Пробовал написать так: CPImportKey(hProv,pbPubKeyBlobData,iFileLength,hExchangeKeyPair,0,@hPubKey) --> та же ошибка.

Вообще, из документации следует, что четвёртый параметр в CPImportKey должен соответствовать третьему в CPExportKey... Или нет?
 
Ответы:
21.05.2003 8:41:07kure
Посмотрите
http://www.cryptopro.ru/CryptoPro/forum/myforum.asp?q=4

Там пример на С приведен.