Ошибка BAD_UID при экспорте ключа в CryptoAPI - PullRequest
0 голосов
/ 23 апреля 2010

Я пишу тестовое приложение для 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))

Есть идеи, что может быть причиной ошибки?

Спасибо

1 Ответ

0 голосов
/ 23 апреля 2010

Неважно, я понял это.По сути, вы не можете просто использовать другой открытый ключ напрямую, даже если он инициализирован таким же образом - мне нужно было сначала экспортировать этот открытый ключ, а затем импортировать его с помощью дескриптора в криптографический поставщик другой стороны.

...