Claves privadas de CryptoAPI 2.0
Las credenciales de Schannel se representan internamente como estructuras CERT_CONTEXT . Schannel busca la clave privada asociada a un contexto de certificado determinado mediante la propiedad CERT_KEY_PROV_INFO_PROP_ID del certificado. Con esta propiedad, Schannel accede a la clave privada mediante una llamada a la función CryptAcquireContext . Para obtener más información, consulte Pares de claves públicas y privadas.
Cada credencial de Schannel contiene una referencia a una o varias claves privadas, cada una asociada a un certificado determinado. Las claves privadas se controlan de forma bastante diferente en función de si la credencial es para un cliente o un servidor.
Claves privadas de cliente
El proveedor de servicios criptográficos (CSP) administra las claves privadas de cliente en uso. Normalmente, las claves privadas de cliente se almacenan mediante CSP de tipo PROV_RSA_FULL o PROV_RSA_SIGNATURE.
Si la aplicación cliente realiza la llamada a CryptAcquireContext manualmente antes de llamar a AcquireCredentialsHandle, el cliente debe enlazar el identificador del CSP al contexto de certificado mediante la propiedad CERT_KEY_PROV_HANDLE_PROP_ID. Si Schannel encuentra este conjunto de propiedades, no usa la propiedad CERT_KEY_PROV_INFO_PROP_ID.
Claves privadas del servidor
Las claves privadas del servidor se almacenan mediante uno de los siguientes CSP:
- PROV_RSA_SCHANNEL
- PROV_DH_SCHANNEL
- PROV_FORTEZZA CSP
La elección de CSP depende del algoritmo de intercambio de claves seleccionado. Las claves privadas del servidor deben ser de tipo AT_KEYEXCHANGE.