我正在为 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))
知道什么可能导致错误吗?
谢谢,