Chiavi private CryptoAPI 2.0
Le credenziali Schannel vengono rappresentate internamente come strutture CERT_CONTEXT. Schannel individua la chiave privata associata a un contesto di certificato specifico usando la proprietà CERT_KEY_PROV_INFO_PROP_ID del certificato. Usando questa proprietà, Schannel accede alla chiave privata chiamando la funzioneCryptAcquireContext. Per altri dettagli, vedere coppie di chiavi pubbliche/private.
Ogni credenziale Schannel contiene un riferimento a una o più chiavi private, ognuna associata a un determinato certificato. Le chiavi private vengono gestite in modo diverso a seconda che la credenziale sia per un client o un server.
I chiavi private vengono gestiti dal provider di servizi di crittografiain uso. Le chiavi private del client vengono in genere archiviate da provider di servizi di configurazione di tipo PROV_RSA_FULL o PROV_RSA_SIGNATURE.
Se l'applicazione client effettua manualmente la chiamata di CryptAcquireContext, prima di chiamare AcquireCredentialsHandle, il client deve associare l'handle del provider di servizi di configurazione al contesto del certificato usando la proprietà CERT_KEY_PROV_HANDLE_PROP_ID. Se Schannel trova questo set di proprietà, non usa la proprietà CERT_KEY_PROV_INFO_PROP_ID.
Le chiavi private del server vengono archiviate da uno dei provider di servizi di configurazione seguenti:
- PROV_RSA_SCHANNEL
- PROV_DH_SCHANNEL
- PROV_FORTEZZA CSP
La scelta del provider di servizi di configurazione dipende dall'algoritmo di scambio di chiavi selezionato . Le chiavi private del server devono essere di tipo AT_KEYEXCHANGE.