2.2.2.3.1 Marshaling CATRANSPROP in a CERTTRANSBLOB

A CERTTRANSBLOB (section 2.2.2.2) structure MUST be used to return an array of CATRANSPROP (section 2.2.2.3) structures, where the count of array elements is returned in a separate output parameter of the remote procedure call. It MUST also contain a null-terminated Unicode string for each CATRANSPROP (section 2.2.2.3) structure that represents the display name of the CA property.

The following tables show the sequence of fields in the byte array referenced by the pb field of the CERTTRANSBLOB (section 2.2.2.2) structure when used to transfer an array of CATRANSPROP (section 2.2.2.3) structures and their corresponding data.


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

CATRANSPROP Structures (variable)

...

...

Byte Array (variable)

...

...

CATRANSPROP Structures (variable): An array of CATRANSPROP (section 2.2.2.3) structures each of which is marshaled in the following manner.


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

lPropID

propType

Reserved

propFlags

obwszDisplayName

lPropID (4 bytes): These 4 bytes indicate the value of the lPropID field of the first CATRANSPROP (section 2.2.2.3) structure that is transferred in the CERTTRANSBLOB (section 2.2.2.2) structure. Little-endian encoding format MUST be used.

propType (1 byte): This byte indicates the value of propType field of the first CATRANSPROP (section 2.2.2.3) structure that is transferred in the CERTTRANSBLOB (section 2.2.2.2) structure.

Reserved (1 byte): MUST be set to 0 and ignored upon receipt.

propFlags (2 bytes): These 2 bytes indicate the value of the propFlags field of the first CATRANSPROP (section 2.2.2.3) structure that is transferred in the CERTTRANSBLOB (section 2.2.2.2) structure. Little-endian encoding format MUST be used.

obwszDisplayName (4 bytes): These 4 bytes indicate the value of the obwszDisplayName field of the first CATRANSPROP (section 2.2.2.3) structure that transfers in the CERTTRANSBLOB (section 2.2.2.2) structure. Little-endian encoding format MUST be used. The value of this field indicates an offset from the beginning of the pb field to where the data value for this property can be found in the byte array. The value of this field must be DWORD-aligned.

Byte Array (variable): Contains the DisplayName data value for all the properties. The data value for one property MUST not overlap with another property's data value. Arbitrary padding can be added before or after data values. Each data value MUST be encoded as a [UNICODE] null-terminated string in little-endian format.