J'écris une application de test pour Microsoft CryptoAPI. Je souhaite exporter la clé secrète d'une partie à l'aide de la clé publique de la seconde partie, puis importer cette clé secrète en tant que clé secrète de la seconde partie (ceci établit une clé secrète partagée pour la communication). Voici mon code:Erreur BAD_UID lors de l'exportation de la clé dans 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;
}
Et cela donne l'erreur:
80090001: Bad UID.
La paire de clés est généré pour les encryptT et decryptT (émetteur, récepteur) en appelant:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
Une idée de ce qui pourrait causer l'erreur?
Merci,
Pourriez-vous poster plus de code en créant encryptT-> hSymKey et en important decryptT-> hPubKey? Importez-vous hPubKey à partir d'un certificat? Votre erreur est quelque part dans ces deux parties. – Oleg
salut oleg, merci pour la réponse! oui, j'importais directement la clé publique de la partie expéditrice (à la fois "expéditeur" et "destinataire" sont dans la même application), sans d'abord exporter cette clé publique dans un PUBLICKEYBLOB puis l'importer en utilisant le CSP du destinataire. – mindthief