Question

Je suis en train d'écrire une application de test pour Microsoft CryptoAPI. Je veux exporter la clé secrète d'une partie à l'aide de la clé publique de la deuxième partie, puis importer cette clé secrète comme clé secrète de la deuxième partie (ce sets une clé secrète partagée pour la communication). Voici mon 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;
}

Et cela donne l'erreur:

80090001: Bad UID.

La paire de clés publique est générée à la fois encryptT et decryptT (émetteur, récepteur) en appelant:

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

Toute idée de ce que pourrait être la cause de l'erreur?

Merci,

Était-ce utile?

La solution

Qu'à cela ne tienne, je compris. En fait, vous ne pouvez pas utiliser une autre clé publique directement même si elle est initialisé de la même manière -. Je devais d'abord exporter cette clé publique, puis l'importer en utilisant la poignée au fournisseur cryptographique de l'autre partie

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top