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,

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top