Статус: Участник
Группы: Участники
Зарегистрирован: 24.01.2008(UTC) Сообщений: 16  Откуда: Москва
|
Хм. А скажите, что тогда у меня экспортируется? Код:
// берем данные провайдера из сертификата
CryptAcquireCertificatePrivateKey(pCert, CRYPT_ACQUIRE_USE_PROV_INFO_FLAG, nil, hProv, KeySpec, CallerFreeProv);
// беру ключи
CryptGetUserKey(hProv, AT_SIGNATURE, hUserKey)
// создаю хеш для создания сессионного ключика из пароля
CryptCreateHash(hProv, CALG_GR3411, 0, 0, hHash)
// пароль в хеш
CryptHashData(hHash, PByte(Password), StrLen(Password), 0)
// на хеше делаю ключ
CryptDeriveKey(hProv, CALG_G28147, hHash, CRYPT_EXPORTABLE, hSessionKey)
// это нашел на форуме Криптопро
algid_export := CALG_PRO_EXPORT;
CryptSetKeyParam(hSessionKey, KP_ALGID, @algid_export, 0);
// узнаю размерчик для экспорта
CryptExportKey(hUserKey, hSessionKey, PRIVATEKEYBLOB, 0, nil, KeyBufLen)
// выделяю память
// экспортирую ключи
CryptExportKey(hUserKey, hSessionKey, PRIVATEKEYBLOB, 0, @Buf, KeyBufLen)
|