BAD_UID Fehler beim Exportieren Schlüssel in CryptoAPI
Frage
Ich bin eine Testanwendung für Microsoft Crypto-API zu schreiben. Ich mag den öffentlichen Schlüssel der zweiten Partei den geheimen Schlüssel einer Partei exportieren verwenden, und dann importieren, die geheimen Schlüssel als die geheimen Schlüssel der zweiten Partei (Dies stellt einen gemeinsamen geheimen Schlüssel für die Kommunikation). Hier ist mein Code:
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;
}
Und das gibt den Fehler:
80090001: Bad UID.
Das öffentliche Schlüsselpaar wird erzeugt sowohl für encryptT und decryptT (Sender, Empfänger) durch den Aufruf:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
Jede Idee, was den Fehler verursachen könnte?
Danke,
Lösung
Macht nichts, dachte ich es aus. Grundsätzlich kann man nicht nur einen anderen öffentlichen Schlüssel verwenden, um direkt, auch wenn sie die gleiche Art und Weise initialisiert ist. - Ich zum ersten Export erforderlich, dass die öffentlichen Schlüssel, und importieren Sie dann den Griff an die Verschlüsselungs-Provider der anderen Partei mit