Вопрос

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

Любая идея, что может вызвать ошибку?

Спасибо,

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top