2.2.2.1 DRM Version 1 License Request

The DRM Version 1 License Request packet is used by the client to request a license for content. This packet is transmitted to the server via a URI parameter "challenge" as a Digital Rights Management (DRM) base64-encoded value. The URI parameter DRMVer is also sent to the server with this license request and MUST appear after the "challenge" URI parameter. For a version 1 client, the value of DRMVer MUST be 1.3. For a client that supports version 7 and higher, this value MUST be 1.4. This value is ignored by the server.


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

Version

EncRandNum (80 bytes)

...

...

pkcert (84 bytes)

...

...

KeyID (25 bytes)

...

...

...

Rights

...

AppSec

...

Version (4 bytes): The request version. MUST be {0x00, 0x01, 0x00, 0x01}.

EncRandNum (80 bytes): A one-time used, previously 20-byte random number that is encrypted using ECC1 with the public server cryptographic key (KS). Before encryption, this buffer contains the following byte values:

  • bytes 0 – 6: Used as the initialization vector (IV) to create an RC4 key (KR)

  • bytes 7 – 19: Not used

pkcert (84 bytes): An RC4-encrypted PKCERT that contains a signed copy of KMpub.

KeyID (25 bytes): An RC4-encrypted content key identifier. The content key ID is generated by the server and stored in the header of a protected content stream. Only the first 25 bytes of this field are used. The KeyID can come from any source available to the client, but is typically extracted from a content header.

Rights (4 bytes): An RC4-encrypted request for playback rights, which can be any combination of the values in the following table. The values used in the challenge are typically provided by the DRM-enabled application, but could be any combination implemented by the client.

Byte Array

Meaning

RIGHT_PLAY_ON_PC

0x01000000

The right to play back content. This is also known as RIGHT_PLAY_ON_PC.

RIGHT_COPY_TO_NONSDMI_DEVICE

0x02000000

The right to copy licensed content to a device that is not compliant with the Secure Digital Music Initiative (SDMI). This is also known as RIGHT_COPY_TO_NONSDMI_DEVICE.

RIGHT_BURN_TO_CD

0x08000000

The right to copy licensed content to a CD. This is also known as RIGHT_BURN_TO_CD.

RIGHT_COPY_TO_SDMI_DEVICE

0x10000000

The right to copy licensed content to an SDMI device. This is also known as RIGHT_COPY_TO_SDMI_DEVICE.

AppSec (4 bytes): An RC4-encrypted security level of the application that makes the request. The security level MUST be equal to the security level in the client application certificate (CA).

Cryptographic sequence:

  1. pkcert.pk = KMpub

  2. pkcert.sign = [pkcert.pk]KC

  3. {EncRandNum}KS

  4. KR {pkcert}

  5. KR {KeyID}

  6. KR {Rights}

  7. KR {AppSec}