Chiavi private CryptoAPI 2.0
Le credenziali Schannel sono 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 funzione CryptAcquireContext . Per altre informazioni, 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 piuttosto diverso a seconda che le credenziali siano per un client o un server.
Chiavi private client
Le chiavi private client vengono gestite dal provider di servizi di crittografia (CSP) in uso. Le chiavi private client vengono in genere archiviate da provider di servizi di rete di tipo PROV_RSA_FULL o PROV_RSA_SIGNATURE .
Se l'applicazione client effettua manualmente la chiamata CryptAcquireContext , prima di chiamare AcquireCredentialsHandle, il client deve associare l'handle del CSP 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.
Chiavi private del server
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 di CSP dipende dall'algoritmo di scambio delle chiavi selezionato. Le chiavi private del server devono essere di tipo AT_KEYEXCHANGE.