The BLOBHEADER structure is located at the front of every key blob. This is not limited to the key blobs generated by the PROV_RSA_BASE and PROV_RSA_SIG provider types. Any additional key blob types that are 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 _PUBLICKEYSTRUC {
BYTE bType;
BYTE bVersion;
WORD Reserved;
ALG_ID aiKeyAlg;
} ,PUBLICKEYSTRUC;
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 public key blob, private key blob, and simple blob types. Other key blob types will be defined as needed. Public key blobs are used to transport RSA public keys, private key blobs are used to transport RSA public/private key pairs, and simple blobs 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 public key blob. |