3.1.5.2.3 The Data Segment Descriptor

The data segment descriptor is an auxiliary data structure that is used to represent encryption parameters. Since it is not utilized with all content types, its usage will be noted in the appropriate sections.

The following table describes the format of the data segment descriptor.


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

Flags

ExtensionType

ExtensionLength

Extension (variable)

...

Flags (1 byte): The Flags section indicates the attributes of the media data associated with the data segment descriptor. The following values are currently defined:

0x01 (Encrypted Data): Indicates that the media data is encrypted.

0x00 (Unencrypted Data): Indicates that the media data is unencrypted.

ExtensionType (1 byte): The type of extension. There are two support extension types:

Key ID: The extension type MUST be set to 0x01. The length MUST be set to 16. This means the length is 16 bytes, or 128 bits. The extension MUST contain the key ID value of the license for the encrypted data that is delivered with the data segment descriptor. This extension MUST only be used when the encrypted data flag is set.

AES128 Initialization Vector: The extension type MUST be set to 0x02. The length can be set to 8 or 16. This means the length is 8 bytes or 16 bytes (64 bits or 128 bits, respectively).

If the length is 64 bits, then the extension contains only the data segment ID value for the encrypted data that is delivered with the data segment descriptor. In this case, the block ID value is 0 and is not included in the extension.

If the length is 128 bits, then the extension contains both the data segment ID and the block ID values, in this order.

This extension MUST only be used when the encrypted data flag is set.

The receiver MUST silently disregard and skip any extensions that it does not understand.

ExtensionLength (2 bytes): The total length of the extension, in bytes. This value does not include the size of the content data associated with this extension.

Extension (variable): The extension data. The type of data is variable depending on the extension type.

This extension section contains the number of extensions included in the data segment descriptor followed by multiple extension sections with the following format for each extension: starting with an 8-bit extension type, followed by a 16-bit extension length, and finally the variable-length extension.