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,

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top