BAD_UID de error al exportar clave en CryptoAPI
Pregunta
Estoy escribiendo una aplicación de prueba para Microsoft CryptoAPI. Quiero exportar la clave secreta de una de las partes utilizando la clave pública de la segunda parte y, a continuación, importe que la clave secreta como la clave secreta de la segunda parte (Esto establece una clave secreta compartida para la comunicación). Aquí está mi código:
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;
}
Y esto da el error:
80090001: Bad UID.
se genera el par de claves pública tanto para encryptT y decryptT (emisor, receptor), llamando al:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
¿Alguna idea de qué podría estar causando el error?
Gracias,
Solución
No importa, lo he descubierto. Básicamente, no se puede simplemente utilizar otra clave pública directamente incluso si se ha inicializado la misma manera -. Necesitaba que la primera exportación de clave pública, y luego importarlos usando el mango al proveedor de cifrado de la otra parte