2.1.7 DataSpaceDefinition

Each DataSpaceDefinition structure stores a data space definition. A document can contain more than one data space definition—for example, if one content stream (1) is both compressed and encrypted while a second stream (1) is merely encrypted.

Each DataSpaceDefinition structure MUST be stored in a stream (1) in the \0x06DataSpaces\DataSpaceInfo storage (section 2.2.2). The name of the stream (1) MUST be referenced by a DataSpaceReferenceComponent structure (section 2.1.6.2) within a DataSpaceMapEntry structure (section 2.1.6.1) stored in the \0x06DataSpaces\DataSpaceMap stream (1) (section 2.2.1).

TransformReferences MUST be stored in the reverse order in which they have been applied to the protected content. When reversing the transformation, a software component will apply the transforms in the order specified in the TransformReferences array.


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

HeaderLength

TransformReferenceCount

TransformReferences (variable)

...

HeaderLength (4 bytes): An unsigned integer that specifies the number of bytes in the DataSpaceDefinition structure before the TransformReferences field. It MUST be 0x00000008.

TransformReferenceCount (4 bytes): An unsigned integer that specifies the number of items in the TransformReferences array.

TransformReferences (variable): An array of one or more UNICODE-LP-P4 structures (section 2.1.2) that specify the transforms associated with this data space definition. Each transform MUST be equal to the name of a storage contained in the \0x06DataSpaces\TransformInfo storage (section 2.2.3 and 2.2.4).