2.2.5.3 MSG_BLK

The MSG_BLK message is the response message containing a download block. This message is sent by the server-role peer in response to a MSG_GETBLKS message from a requesting client-role peer.


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

SizeOfSegmentId

SegmentId (variable)

...

ZeroPad (variable)

...

BlockIndex

NextBlockIndex

SizeOfBlock

Block (variable)

...

ZeroPad_2 (variable)

...

SizeOfVrfBlock

VrfBlock (variable)

...

ZeroPad_3 (variable)

...

SizeOfIVBlock

IVBlock (variable)

...

SizeOfSegmentId (4 bytes): The size, in bytes, of the subsequent SegmentId field.

SegmentId (variable): The Public Segment Identifier for the target segment of content (also known as HoHoDk). See [MS-PCCRC] for details.

ZeroPad (variable): A sequence of N bytes added (only as needed) to restore 4-byte alignment, where 0 <= N <= 3. Each byte's value MUST be set to zero.

BlockIndex (4 bytes): The index in the target segment of the block sent in the current message.

NextBlockIndex (4 bytes): The index of the first block after the block sent in the current message, currently available for download from this server-role peer. If no such next block is available, this index MUST be zero.

SizeOfBlock (4 bytes): The size, in bytes, of the subsequent Block field. The server MUST set the SizeOfBlock field to zero if it does not have the requested block.

Block (variable): The actual block of data, encrypted according to the cryptographic algorithm specified in the header of the message itself, not including the initialization vector.

ZeroPad_2 (variable): A sequence of N bytes added (only as needed) to restore 4-byte alignment, where 0 <= N <= 3. Each byte's value MUST be set to zero.

SizeOfVrfBlock (4 bytes): The size, in bytes, of the subsequent VrfBlock field, which SHOULD be zero.

VrfBlock (variable): Currently not used and SHOULD be empty.

ZeroPad_3 (variable): A sequence of N bytes added (only as needed) to restore 4-byte alignment, where 0 <= N <= 3. Each byte's value MUST be set to zero.

SizeOfIVBlock (4 bytes): The size, in bytes, of the subsequent IVBlock field.

IVBlock (variable): The initialization vector used by the server-role peer when encrypting the block of data (Block field) sent with this message.