2.2.2.1.1 KEY_PROV_INFO

The value for the KEY_PROV_INFO property (if this property is present) MUST be in the following format:


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Offset to Container Name

Offset to Provider Name

Provider Type

Flags

Reserved

...

Key Specification

Name Data (variable)

...

Offset to Container Name (4 bytes): This MUST be set to the offset, in bytes, of the Container Name subfield of the Name Data field from the beginning of this structure. It MUST be an unsigned 32-bit integer in little-endian format.

Offset to Provider Name (4 bytes):  This MUST be set to the offset, in bytes, of the Provider Name subfield of the Name Data field from the beginning of this structure. It MUST be an unsigned 32-bit integer in little-endian format.

Provider Type  (4 bytes):  This field indicates the class of cryptographic algorithm associated with the public key in the certificate. It MUST be set to the unsigned 32-bit number 0x00000001 (in little-endian format), to signify an RSA public key. For more information, see [RFC3280].

Flags (4 bytes): This field SHOULD be set to 0, and its value MUST be ignored by the client.

Reserved (8 bytes): This field is 2 rows total in the preceding diagram and MUST be set to 0.

Key Specification (4 bytes): This field indicates the cryptographic capabilities associated with the public key in the certificate. It MUST be set to the unsigned 32-bit number 0x00000001 (in little-endian format), to signify that the key is usable for both signature and encryption operations.

Name Data (variable): This field MUST contain the following items, in any order, at the locations indicated by the respective preceding Offset fields. These items MUST be completely contained inside this field and MUST NOT overlap each other. There MUST be no unused areas within this field that span more than eight contiguous bytes. All unused bytes within this field SHOULD be set to 0. Unused bytes MUST be ignored by the implementation.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Container Name (variable)

...

Provider Name (variable)

...

Container Name (variable): This MUST be a null-terminated Unicode string in UTF-16 encoding, representing a specific key container in the cryptographic service provider (CSP) referred to by the provider name.

Provider Name (variable): This MUST be a null-terminated Unicode string in UTF-16 encoding, representing the CSP associated with the public key contained in the certificate.