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,

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top