Share via


Chaves privadas do CryptoAPI 2.0

As credenciais do Schannel são representadas internamente como estruturas de CERT_CONTEXT . O Schannel localiza a chave privada associada a um contexto de certificado específico usando a propriedade CERT_KEY_PROV_INFO_PROP_ID do certificado. Usando essa propriedade, o Schannel acessa a chave privada chamando a função CryptAcquireContext . Para obter detalhes adicionais, consulte Pares de chaves públicas/privadas.

Cada credencial Schannel contém uma referência a uma ou mais chaves privadas, cada uma associada a um certificado específico. As chaves privadas são tratadas de maneira bem diferente, dependendo se a credencial é para um cliente ou um servidor.

Chaves privadas do cliente

As chaves privadas do cliente são gerenciadas pelo CSP ( provedor de serviços criptográficos ) em uso. As chaves privadas do cliente normalmente são armazenadas por CSPs do tipo PROV_RSA_FULL ou PROV_RSA_SIGNATURE.

Se o aplicativo cliente fizer a chamada CryptAcquireContext manualmente antes de chamar AcquireCredentialsHandle, o cliente deverá associar o identificador do CSP ao contexto do certificado usando a propriedade CERT_KEY_PROV_HANDLE_PROP_ID. Se schannel encontrar esse conjunto de propriedades, ele não usará a propriedade CERT_KEY_PROV_INFO_PROP_ID.

Chaves privadas do servidor

As chaves privadas do servidor são armazenadas por um dos seguintes CSPs:

  • PROV_RSA_SCHANNEL
  • PROV_DH_SCHANNEL
  • PROV_FORTEZZA CSP

A escolha do CSP depende do algoritmo de troca de chaves selecionado. As chaves privadas do servidor devem ser do tipo AT_KEYEXCHANGE.