質問

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.

Public Keypairは、次のようにencrypttとdecryptt(送信者、受信者)の両方で生成されています。

CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))

何がエラーを引き起こす可能性があるのでしょうか?

ありがとう、

役に立ちましたか?

解決

気にしないでください、私はそれを理解しました。基本的に、同じ方法で初期化されていても、別の公開キーだけを直接使用することはできません。最初にその公開キーをエクスポートしてから、ハンドルを使用して相手の暗号プロバイダーにインポートする必要がありました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top