The BLOBHEADER Structure

The BLOBHEADER structure is located at the front of every key blob. This isn't limited to the key blobs generated by the PROV_RSA_BASE and PROV_RSA_SIG provider types; any additional key blob types that get defined should also specify that each key blob start with this structure.

This structure contains fields that indicate the key blob type and the algorithm that the key uses.

typedef struct _BLOBHEADER {

BYTE bType;

BYTE bVersion;

WORD Reserved;

ALG_ID aiKeyAlg;

} BLOBHEADER;

The following table describes each of the fields in the BLOBHEADER structure.

Field Description
bType Key blob type. The only blob types currently defined are the PUBLICKEYBLOB, PRIVATEKEYBLOB, and SIMPLEBLOB blob types. Other key blob types will be defined as needed.

PUBLICKEYBLOBs are used to transport RSA public keys, PRIVATEKEYBLOBs are used to transport RSA public/private key pairs, and SIMPLEBLOBs are used to transport session keys.

bVersion Version number of the key blob format. This currently must always have a value of "0x02".
Reserved These 2 bytes are reserved for future use, and should be zero.
aiKeyAlg Algorithm identifier for the key contained by the key blob. Some examples are CALG_RSA_SIGN, CALG_RSA_KEYX, CALG_RC2, and CALG_RC4.

Not all algorithm identifiers are valid with all blob types. For example, you would never export an RC4 key into a PUBLICKEYBLOB.