bad_uid错误在加密中导出密钥时
题
我正在编写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.
通过致电:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
知道什么可能导致错误?
谢谢,
解决方案
没关系,我发现了。基本上,即使以相同的方式初始化了它,您也不能直接使用另一个公共密钥 - 我需要首先导出该公共密钥,然后将其使用句柄将其导入另一方的加密提供商。
不隶属于 StackOverflow