2.2.2.2.5 Protector List Entry

 

Each individual Protector List Entry MUST be formatted as follows.


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

EFSX_Datum

...

ProtectorType

ProtectorFlags

Data_Fields (variable)

...

EFSX_Datum (8 bytes): MUST be formatted as specified in section 2.2.2.2.2. The datum Type MUST be EFSX_TYPE_KEY_PROTECTOR (0x0003) and SHOULD have a Role of EFSX_ROLE_IGNORE (0x0000). The datum Flags SHOULD include 0x0002 indicating a complex datum.

ProtectorType (2 bytes): The type of the protector. It MUST be a 16-bit unsigned integer in little-endian format. Possible values are specified below.

Value

Meaning

0x0001

The protector was derived from a public/private key pair using a key agreement. The Data Fields SHOULD include an EFSX_Datum of Type EFSX_TYPE_KEY_AGMT_DATA (0x0005) and Role 0x0002.

0x0002

The protector was derived from a public/private key pair capable of performing asymmetric encryption. The Data Fields SHOULD include an EFSX_Datum of Type EFSX_TYPE_BLOB (0x0001) and Role 0x0002.

0x0003

The protector was derived using a DPAPI-NG encryption provider on the endpoint. The Data Fields SHOULD include an EFSX_Datum of Type EFSX_TYPE_DPAPI_NG_DATA (0x0007) and Role 0x0002.

ProtectorFlags (2 bytes): The flags for the protector. It MUST be a 16-bit unsigned integer in little-endian format. The value MUST be 0x0000 or a union of one or more of the following values.

Value

Meaning

0x0001

The protector is a legacy protector, and stores the Encrypted FEK as specified in section 2.2.2.1.5.

0x0002

If this is a legacy protector (flag 0x0001 is also set), the Encrypted FEK is encrypted using AES 256, with a key that is obtained by signing the non-terminated Unicode string "MICROSOFTE" (20 bytes long) with the user's RSA and computing the SHA-256 hash of the result.

0x0004

If this bit is set, bit 0x0001 MUST also be set to indicate a legacy protector. This bit indicates that the legacy protector stores the File Master Key (FMK) encrypted in the Encrypted FEK structure instead of the File Encryption Key (FEK).

Data_Fields (variable): This field contains any number of nested EFSX_Datum structures. The nested datum structures MUST NOT overlap and MUST be entirely contained within the protector list entry. This field SHOULD contain a datum with a Role of 0x0002 (protector data) and a datum with a Type of EFSX_TYPE_PROTECTOR_INFO (0x0004).