Errore di BAD_UID durante l'esportazione chiave in CryptoAPI
Domanda
Sto scrivendo un'applicazione di test per Microsoft CryptoAPI. Voglio esportare la chiave segreta di una parte utilizzando la chiave pubblica del secondo partito, e quindi importare tale chiave segreta come chiave segreta della seconda parte (Questo imposta una chiave segreta condivisa per la comunicazione). Ecco il mio codice:
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;
}
E questo dà l'errore:
80090001: Bad UID.
La coppia di chiavi pubblica viene generato sia per encryptT e ??decryptT (mittente e destinatario) chiamando:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
Qualche idea di cosa potrebbe causare l'errore?
Grazie,
Soluzione
Non importa, ho capito. In sostanza, non si può semplicemente utilizzare un'altra chiave pubblica direttamente anche se è inizializzato allo stesso modo -. Avevo bisogno di prima esportazione che la chiave pubblica, e quindi importarlo utilizzando la maniglia per il provider di crittografia dell'altra parte