Ошибка bad_uid во время экспорта ключа в криптоапи
Вопрос
Я пишу тестовое приложение для Microsoft CryptoAapi. Я хочу экспортировать секретный ключ одной партии, используя открытый ключ второй стороны, а затем импортировать этот секретный ключ в качестве второго секретного ключа Стороны (это устанавливает общий секретный ключ для связи). Вот мой код:
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, так и дешинт (отправитель, приемник), позвонив:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
Любая идея, что может вызвать ошибку?
Спасибо,
Решение
Не берите в голову, я понял это. По сути, вы не можете просто использовать другой открытый ключ непосредственно, даже если он инициализируется так же - мне нужно было сначала экспортировать этот открытый ключ, а затем импортировать его с помощью ручки к криптографическому поставщику другой стороны.