СКЗИ КриптоПро CSP позволяет делать экспорт сессионного ключа (CPExportKey(Provider, SessionKey, OpenKey, SIMPLEBLOB, 0, @Buffer, @BufferLen)) ТОЛЬКО на ключе парной связи Диффи-Хеллмана. Для экспорта сессионного ключа следует выполнить следующие шаги:
- Импорт блоба открытого ключа получателя на своей ключевой паре;
- Экспорт сессионного ключа на ключе парной связи.
CPGetUserKey(hProv, AT_KEYEXCHANGE, &hUserKey);
CPGenKey(hProv, CALG_G28147, CRYPT_EXPORTABLE, &hSessionKey);
CPImportKey(hProv, pbRecipentPublicKey, cbRecipentPublicKey, hUserKey, 0, &hExchKey); - здесь у нас будет выработан ключ парной связи Диффи-Хеллмана
CPExportKey(hProv, hSessionKey, hExchKey, SIMPLEBLOB, 0, pbSessionKeyForRecipient, &cbSessionKeyForRecipient);
Т.е. для импорта сессионного ключа следует выполнить следующие шаги: - Импорт блоба открытого ключа отправителя на своей ключевой паре;
- Импорт сессионного ключа на ключе парной связи.
CPGetUserKey(hProv, AT_KEYEXCHANGE, &hUserKey);
CPImportKey(hProv, pbSenderPublicKey, cbSenderPublicKey, hUserKey, 0, &hExchKey);
CPImportKey(hProv, pbSessionKeyFromSender, &cbSessionKeyFromSender, hExchKey, 0, &hSessionKey);