BCRYPT_DSA_KEY_BLOB_V2 Structure

The BCRYPT_DSA_KEY_BLOB_V2 structure is used as a header for a Digital Signature Algorithm (DSA) public key or private keyBLOB in memory.

Syntax

typedef struct _BCRYPT_DSA_KEY_BLOB_V2 {
    ULONG dwMagic;
    ULONG cbKey;
    HASHALGORITHM_ENUM hashAlgorithm;
    DSAFIPSVERSION_ENUM standardVersion;
    ULONG cbSeedLength;
    ULONG cbGroupSize;
    UCHAR Count[4];
} BCRYPT_DSA_KEY_BLOB_V2, *PBCRYPT_DSA_KEY_BLOB_V2;  

Members

dwMagic
Determines the type of key this structure represents. This can be one of the following values.

cbKey
The length, in bytes, of the key.

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.

cbGroupSize

Size of the prime number q . Currently, if the key is less than 128 bits, q is 20 bytes long. If the key exceeds 256 bits, q is 32 bytes long.

Count

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

Remarks

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. A DSA public key BLOB (BCRYPT_DSA_PUBLIC_BLOB) has the following format in contiguous memory. The Modulus, Generator, and Public numbers are in big-endian format.

Example

BCRYPT_DSA_KEY_BLOB_V2
Modulus[cbKey]     // Big-endian.
Generator[cbKey]   // Big-endian.
Public[cbKey]      // Big-endian.  

A DSA private key BLOB (BCRYPT_DSA_PRIVATE_BLOB) has the following format in contiguous memory. The Modulus, Generator, Public, and PrivateExponent numbers are in big-endian format.

Example

BCRYPT_DSA_KEY_BLOB_V2
Modulus[cbKey]         // Big-endian.
Generator[cbKey]       // Big-endian.
Public[cbKey]          // Big-endian.
PrivateExponent[20]    // Big-endian.  

Requirements

Header: Declared in bcrypt.h.

Library: Use bcrypt.lib.