Я пишу тестовое приложение для Microsoft CryptoAPI. Я хочу экспортировать секретный ключ одной стороны, используя открытый ключ второй стороны, а затем импортировать этот секретный ключ в качестве секретного ключа второй стороны (это устанавливает общий секретный ключ для связи). Вот мой код:
if(!CryptExportKey(encryptT->hSymKey, decryptT->hPubKey, SIMPLEBLOB, 0, keyExBuf, &bufLen)) {
FormattedDebugPrint(NULL, GetLastError(), "could not export secret key", TRUE);
return -1;
}
if(!CryptImportKey(decryptT->hCryptProv, keyExBuf, bufLen, decryptT->hPubKey, 0, &(decryptT->hSymKey))) {
FormattedDebugPrint(NULL, GetLastError(), "could not import secret key", TRUE);
return -1;
}
И это дает ошибку:
80090001: Bad UID.
Открытая пара ключей генерируется как для encryptT, так и для decryptT (отправитель, получатель) путем вызова:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
Есть идеи, что может быть причиной ошибки?
Спасибо