BCRYPT_DSA_PARAMETER_HEADER_V2 structure (bcrypt.h)

The BCRYPT_DSA_PARAMETER_HEADER_V2 structure is used as a header for a Digital Signature Algorithm (DSA) parameters BLOB containing information for generating a DSA key. This structure is used with the BCRYPT_DSA_PARAMETERS property in the BCryptSetProperty function.

Syntax

typedef struct _BCRYPT_DSA_PARAMETER_HEADER_V2 {
  ULONG               cbLength;
  ULONG               dwMagic;
  ULONG               cbKeyLength;
  HASHALGORITHM_ENUM  hashAlgorithm;
  DSAFIPSVERSION_ENUM standardVersion;
  ULONG               cbSeedLength;
  ULONG               cbGroupSize;
  UCHAR               Count[4];
} BCRYPT_DSA_PARAMETER_HEADER_V2;

Members

cbLength

The total size, in bytes, of this structure and the buffer that immediately follows this structure in memory.

dwMagic

The magic value for the key.

This member must be the following value.

BCRYPT_DSA_PARAMETERS_MAGIC_V2 (0x324d5044)

cbKeyLength

The size, in bytes, of the key that this structure applies to.

hashAlgorithm

A HASHALGORITHM_ENUM enumeration value that specifies the hashing algorithm to use.

standardVersion

A DSAFIPSVERSION_ENUM enumeration value that specifies the Federal Information Processing Standard (FIPS) to apply.

cbSeedLength

Length of the seed used to generate the prime number q in bytes.

cbGroupSize

Size of the prime number q. Currently, when the key exceeds 1024 bits in length, q is 32 bytes long.

Count[4]

The number of iterations performed to generate the prime number q from the seed. For more information, see NIST standard FIPS186-3.

Remarks

When using this structure in a BCryptSetProperty call, to set the parameters for a DSA key created in a BCryptGenerateKeyPair call, (cbKeyLength*8) must equal the previously set dwLength.

The structure applies to DSA keys that exceed 1024 bits in length but are less than or equal to 3072 bits.

This structure is used as a header for a larger buffer. The DSA parameters blob has the following format in contiguous memory. The Seed, q, Modulus, and Generator are in big-endian format.


BCRYPT_DSA_PARAMETER_HEADER_V2
Seed[cbSeedLength]      // Big-endian.
q[cbGroupSize]          // Big-endian.
Modulus[cbKeyLength]    // Big-endian.
Generator[cbKeyLength]  // Big-endian.

Requirements

Requirement Value
Minimum supported client Windows 8 [desktop apps only]
Minimum supported server Windows Server 2012 [desktop apps only]
Header bcrypt.h

See also

BCryptGenerateKeyPair

BCryptSetProperty

Cryptography Primitive Property Identifiers