03.04.2006 17:11:32Есть ли возможность копировать ключевой контейнер из программы ? Ответов: 1
Andy_user
Имеется система Банк-Клиент на базе 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 :
"Попытка экспорта ключа, когда право экспорта криптопровайдером не предоставлено; попытка экспорта на ключе, для которого разрешение экспортировать не установлено."
Вопросы:
- Как установить "разрешение экспортировать" ?
- Может я вообще не понимаю ?
Если можно, направьте на путь истинный.
 
Ответы:
04.04.2006 11:08:22Игорь
Я делал сначала DeriveKey с нулевыми параметрами, и затем экспортировал на нем секретный ключ подписи:
...
делаем hDeriveKey
...
DWORD dwSetParam = CALG_PRO_EXPORT;
CryptSetKeyParam( hDeriveKey, KP_ALGID, (PBYTE) &dwSetParam, 0 );
CryptExportKey( hSignKey, hDeriveKey, PRIVATEKEYBLOB, 0, pbSecKeyBlob, &dwSecKeyBlobSize );