| ||||
| ||||
Имеется система Банк-Клиент на базе Crypto Pro CSP 2.0 (Build 2089). Я являюсь администратором ключевой системы. Возникло желание иметь программку, которая реализовывала бы среди прочих функцию создания копии ключевой пары в другом контейнере на дискете. Не получается произвести экспорт приватного ключа на самом этом ключе в ключевой BLOB. Фрагмент программы: Rez = CryptAcquireContext( &hCryptProvCA, "CA_IBSP", // Имя контейнера "Crypto-Pro GOST R 34.10-94 Cryptographic Service Provider", 71, dwFlags); Rez = CryptGetUserKey(hCryptProvCA, AT_KEYEXCHANGE, &hUserKey); Rez = CryptExportKey(hUserKey, hUserKey, PRIVATEKEYBLOB, 0, NULL, &dwDataLen1); -------------- Получаю NTE_KEY_BAD_STATE : "Попытка экспорта ключа, когда право экспорта криптопровайдером не предоставлено; попытка экспорта на ключе, для которого разрешение экспортировать не установлено." Вопросы: - Как установить "разрешение экспортировать" ? - Может я вообще не понимаю ? Если можно, направьте на путь истинный. | ||||
Ответы: | ||||
| ||||
Я делал сначала DeriveKey с нулевыми параметрами, и затем экспортировал на нем секретный ключ подписи: ... делаем hDeriveKey ... DWORD dwSetParam = CALG_PRO_EXPORT; CryptSetKeyParam( hDeriveKey, KP_ALGID, (PBYTE) &dwSetParam, 0 ); CryptExportKey( hSignKey, hDeriveKey, PRIVATEKEYBLOB, 0, pbSecKeyBlob, &dwSecKeyBlobSize ); | ||||