Renégociation d’une connexion Schannel
Pour modifier les attributs d’une connexion, tels que la suite de chiffrement ou l’authentification du client, vous pouvez demander un « rétablissement » ou une renégociation de la connexion.
Si les attributs que vous souhaitez modifier sont contrôlés par des informations d’identification, vous devez obtenir de nouvelles informations d’identification avant de renégocier la connexion. Pour plus d’informations, consultez obtention d’informations d’identification Schannel.
Pour demander une restauration par progression à partir d’une application cliente, appelez la fonction InitializeSecurityContext (SChannel) . Les applications serveur appellent la fonction AcceptSecurityContext (SChannel) . Définissez les paramètres de la façon suivante :
- Spécifiez le contexte de sécurité existant dans le paramètre phContext .
- (Clients uniquement) Spécifiez le même nom de serveur (dans le paramètre pszTargetName ) comme spécifié lors de l’établissement du contexte.
- Spécifiez de nouvelles informations d’identification à l’aide du paramètre phCredential , le cas échéant.
- Si vous souhaitez modifier les attributs de contexte qui ne sont pas liés aux informations d’identification, spécifiez ces attributs à l’aide du paramètre fContextReq .
Après avoir appelé la fonction appropriée, votre application doit envoyer les résultats au client et continuer à traiter les messages entrants à l’aide de la fonction DecryptMessage (SChannel) .
La fonction DecryptMessage (SChannel) renvoie les secondes _ que je _ renégocie lorsque Schannel est prêt pour que votre application continue. Lorsque vous recevez le _ _ Code de retour sec I renégocier, votre application doit appeler AcceptSecurityContext (SChannel) (Servers) ou InitializeSecurityContext (SChannel) (clients) et transmettre le contenu de SECBUFFER_EXTRA retourné à partir de DecryptMessage dans le SECBUFFER_TOKEN. Après que cet appel a retourné une valeur, procédez comme si votre application était en train de créer une nouvelle connexion.