BCRYPT_DH_PARAMETER_HEADER structure (bcrypt.h)

La structure BCRYPT_DH_PARAMETER_HEADER est utilisée pour contenir des informations d’en-tête de paramètre pour une clé Diffie-Hellman. Cette structure est utilisée avec la propriété BCRYPT_DH_PARAMETERS dans la fonction BCryptSetProperty .

Syntaxe

typedef struct _BCRYPT_DH_PARAMETER_HEADER {
  ULONG cbLength;
  ULONG dwMagic;
  ULONG cbKeyLength;
} BCRYPT_DH_PARAMETER_HEADER;

Membres

cbLength

Taille totale, en octets, de cette structure et de la mémoire tampon qui suit immédiatement cette structure en mémoire.

dwMagic

Valeur magique de la clé.

Ce membre doit être la valeur suivante.

BCRYPT_DH_PARAMETERS_MAGIC (0x4d504844)

cbKeyLength

Taille, en octets, de la clé à laquelle cette structure s’applique.

Remarques

Cette structure est utilisée comme en-tête pour une mémoire tampon plus grande. Le bloc de mémoire unique se compose de cette structure suivie d’une mémoire tampon de taille cbKeyLength qui contient le nombre premier Diffie-Hellman et d’une autre mémoire tampon de taille cbKeyLength qui contient le numéro de générateur Diffie-Hellman. Ces deux nombres sont au format big-endian.

L’exemple suivant montre comment calculer les tailles nécessaires pour cette mémoire tampon et comment renseigner les membres de cette structure.

// In this example, the rgbModulus variable is a byte array that contains the modulus in big-endian byte order. 
// The rgbGenerator variable is a byte array that contains the generator in big-endian byte order.

ULONG cbDHParams = sizeof(BCRYPT_DH_PARAMETER_HEADER) +     (cbKeySize * 2);
PBYTE pbDHParams = (PBYTE)malloc(cbDHParams);
if(!pbDHParams)
{
    status = STATUS_NO_MEMORY;
    goto Cleanup;
}

BCRYPT_DH_PARAMETER_HEADER *pDHParamHeader;
pDHParamHeader = (BCRYPT_DH_PARAMETER_HEADER*)pbDHParams;
pDHParamHeader->cbLength = cbDHParams;
pDHParamHeader->cbKeyLength = cbKeySize;
pDHParamHeader->dwMagic = BCRYPT_DH_PARAMETERS_MAGIC;

// Add the modulus to the parameters.
// The rgbModulus argument is a byte array that contains the modulus.
PBYTE pbTemp = (PBYTE)pbDHParams + sizeof(BCRYPT_DH_PARAMETER_HEADER);
CopyMemory(pbTemp, rgbModulus, pDHParamHeader->cbKeyLength);

// Add the generator to the parameters.
// The rgbGenerator argument is a byte array that contains the generator.
pbTemp += pDHParamHeader->cbKeyLength;
CopyMemory(pbTemp, rgbGenerator, pDHParamHeader->cbKeyLength);


Configuration requise

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 bcrypt.h

Voir aussi

BCryptSetProperty

Identificateurs de propriété primitive de chiffrement