Partager via


Fonction SslGenerateMasterKey

La fonction SslGenerateMasterKey calcule le protocole SSL (Secure Sockets Layer Protocol) master clé secrète.

Syntaxe

SECURITY_STATUS WINAPI SslGenerateMasterKey(
  _In_  NCRYPT_PROV_HANDLE hSslProvider,
  _In_  NCRYPT_KEY_HANDLE  hPrivateKey,
  _In_  NCRYPT_KEY_HANDLE  hPublicKey,
  _Out_ NCRYPT_KEY_HANDLE  *phMasterKey,
  _In_  DWORD              dwProtocol,
  _In_  DWORD              dwCipherSuite,
  _In_  PNCryptBufferDesc  pParameterList,
  _Out_ PBYTE              pbOutput,
  _In_  DWORD              cbOutput,
  _Out_ DWORD              *pcbResult,
  _In_  DWORD              dwFlags
);

Paramètres

hSslProvider [in]

Handle du fournisseur de protocole SSL instance.

hPrivateKey [in]

Handle de la clé privée utilisée dans l’échange.

hPublicKey [in]

Handle de la clé publique utilisée dans l’échange.

phMasterKey [out]

Pointeur vers le handle vers la clé master générée.

dwProtocol [in]

Une des valeurs de l’identificateur de protocole de fournisseur SSL CNG .

dwCipherSuite [in]

Une des valeurs de l’identificateur de suite de chiffrement du fournisseur SSL CNG .

pParameterList [in]

Pointeur vers un tableau de mémoires tampons NCryptBuffer qui contiennent des informations utilisées dans le cadre de l’opération d’échange de clés. L’ensemble précis de mémoires tampons dépend de la suite de protocole et de chiffrement utilisée. Au minimum, la liste contient des mémoires tampons qui contiennent les valeurs aléatoires fournies par le client et le serveur.

pbOutput [out]

Adresse d’une mémoire tampon qui reçoit le secret prémaster chiffré avec la clé publique du serveur. Le paramètre cbOutput contient la taille de cette mémoire tampon. Si ce paramètre a la valeur NULL, cette fonction retourne la taille requise, en octets, dans le DWORD pointé par le paramètre pcbResult .

Notes

Cette mémoire tampon est utilisée lors de l’exécution d’un échange de clés RSA.

cbOutput [in]

Taille, en octets, de la mémoire tampon pbOutput .

pcbResult [out]

Pointeur vers une valeur DWORD dans laquelle placer le nombre d’octets écrits dans la mémoire tampon pbOutput .

dwFlags [in]

Spécifie si cette fonction est utilisée pour l’échange de clés côté client ou côté serveur.

Valeur Signification
NCRYPT_SSL_CLIENT_FLAG
0x00000001
Spécifie un échange de clés côté client.
NCRYPT_SSL_SERVER_FLAG
0x00000002
Spécifie un échange de clés côté serveur.

Valeur retournée

Si la fonction réussit, elle retourne zéro.

Si la fonction échoue, elle retourne une valeur d’erreur différente de zéro.

Les codes de retour possibles incluent, sans s’y limiter, les éléments suivants.

Code/valeur de retour Description
NTE_NO_MEMORY
0x8009000EL
La mémoire disponible est insuffisante pour allouer les mémoires tampons nécessaires.
NTE_INVALID_HANDLE
0x80090026L
L’un des handles fournis n’est pas valide.
NTE_INVALID_PARAMETER
0x80090027L
Le paramètre phMasterKey ou hPublicKey n’est pas valide.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2008 [applications de bureau uniquement]
En-tête
Sslprovider.h
DLL
Ncrypt.dll