PlayReady ヘッダーの仕様

1.はじめに

この仕様は、PlayReady Server SDK、PlayReady Device Porting Kit、Windows、Xbox、Windows Phone、Silverlight で作成されたすべてのエンド 製品に適用されます。

1.1. 変更履歴

Version Change
2021 年 9 月 8 日 オプションの LICENSEREQUESTED 属性を PROTECTINFO ノードに追加します。
2017 年 11 月 1 日 [構文要件] セクションを追加します。 属性の順序が正しくない複数の例を修正しました (属性はアルファベット順にする必要があります)
2017 年 7 月 12 日 PlayReady バージョン 4 以降でサポートされている PlayReady ヘッダー 4.3.0.0 セクションを追加します。
すべての XML ノードを終了タグで明示的に閉じる必要がある構文要件を追加する
2015 年 4 月 10 日 PlayReady バージョン 3 以降でサポートされている PlayReady ヘッダー 4.2.0.0 セクションの追加
2011 年 9 月 PlayReady バージョン 2 以降でサポートされている PlayReady ヘッダー 4.1.0.0 セクションの追加
2008 年 8 月 PlayReady バージョン 1 でサポートされている PlayReady ヘッダー 4.0.0.0 を文書化した初期バージョン

2. PlayReady オブジェクト (PRO)

PlayReady オブジェクト (PRO) には、次のフィールドが含まれています。

フィールド名 フィールドの種類 サイズ (ビット) 説明
長さ DWORD 32 PlayReady オブジェクトの長さ (バイト単位)。 この値は 15 キロバイト (KB) を超えないようにしてください。
PlayReady オブジェクトレコード数 WORD 16 PlayReady オブジェクト内の PlayReady オブジェクト レコードの数を指定します。
PlayReady オブジェクト レコード BYTE 配列 場合により異なる ライセンスとライセンス取得に関連する情報を含む可変数のレコードが含まれます。

2.1 PlayReady オブジェクト レコード

PlayReady オブジェクトは、PlayReady オブジェクト レコードと呼ばれる追加のサブオブジェクトで構成されます。 PlayReady オブジェクト レコードには、次のフィールドがあります。

フィールド名 フィールドの種類 サイズ (ビット) 説明
レコードの種類 WORD 16 レコード値に格納されるデータの種類を指定します。
レコードの長さ WORD 16 レコード値のサイズをバイト単位で指定します。
レコード値 BYTE 配列 場合により異なる オブジェクトの内容は、レコードの種類の値によって異なります。

[レコードの種類] フィールドには、次のいずれかの値があります。

値の型 説明
0x0001 レコードに PlayReady ヘッダー (PRH) が含まれていることを示します。
0x0002 予約済み。
0x0003 埋め込みライセンス Microsoft Store (ELS) を示します。

2.2. PlayReady オブジェクトの例

次の図は、PlayReady ヘッダーを含む PlayReady オブジェクトを含むセグメント化された MP4 ファイルを示しています。

PlayReady Object in MP4

次の図は、この MP4 ファイルの 16 進数ビューを示しています。

PlayReady Object Hex Dump

3. PlayReady ヘッダー (PRH)

PlayReady ヘッダー (PRH) は、格納されているコンテンツのライセンスを検索または取得するためにクライアントによって使用されます。 UTF-16 を使用してエンコードされます。

3.1 バージョンサポートマトリックス

  PlayReady ヘッダー v4.3.0.0 PlayReady ヘッダー v4.2.0.0 PlayReady ヘッダー v4.1.0.0 PlayReady ヘッダー v4.0.0.0
PlayReady 4.0 SDK ベースのクライアント
(注 1 を参照)
PlayReady 3.0 SDK ベースのクライアント
(注 2 を参照)
 
PlayReady 2.x SDK ベースのクライアント
(注 3 を参照)
   
PlayReady 1.x SDK ベースのクライアント
(注 4 を参照)
     

メモ:

  1. Xbox Oneバージョン 1709 以降は PlayReady 4.X クライアントです。
  2. Windows 10 (すべてのバージョン) および Xbox One バージョン 1703 以下は PlayReady 3.X クライアントです。 2017 年より後にリリースされた最新の非Windows デバイス (スマート テレビなど) は、PlayReady 3.X クライアントです。
  3. Silverlight と Windows 8、8.1 は PlayReady 2.X クライアントです。 2011 年から 2017 年の間にリリースされたほとんどの非Windows デバイス (スマート テレビなど) は、PlayReady 2.X クライアントです。
  4. 2008 年から 2011 年の間にリリースされたほとんどの非Windows デバイス (スマート テレビなど) は、PlayReady 1.X クライアントです。

3.2. 構文要件

3.2.1. 標準化

XML は正規化する必要があります。

3.2.2. すべてのノードと属性の名前では大文字と小文字が区別されます

サポートされています

<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>

サポートされていません

<KID value="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<kid VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </kid>

3.2.3. 終了タグは明示的である必要があります

すべての XML ノードは、CUSTOMATTRIBUTES ノード内のノードを含む終了タグによって明示的に閉じる必要があります。

サポートされています

<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo"> </MyNode> </CUSTOMATTRIBUTES>

サポートされていません

<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> <CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo"> </CUSTOMATTRIBUTES>

3.2.4. 名前空間属性

すべての名前空間属性は、名前空間以外の属性の前に表示する必要があります。

サポートされています

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">

サポートされていません

<WRMHEADER version="4.3.0.0" xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader>

3.2.5. アルファベット順

すべての属性は、CUSTOMATTRIBUTES ノード内のノード内の属性を含むアルファベット順である必要があります。

サポートされています

<KID ALGID="AESCBC" VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<CUSTOMATTRIBUTES> <MyNode BarAttribute="Bar" FooAttribute="Foo"> </MyNode> </CUSTOMATTRIBUTES>

サポートされていません

<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg==" ALGID="AESCBC"> </KID>
<CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo" BarAttribute="Bar"> </MyNode> </CUSTOMATTRIBUTES>

3.3. v4.3.0.0

PlayReady ヘッダー v4.3.0.0 は、ヘッダーで AESCBC キーをサポートするために、2017 年 9 月に PlayReady バージョン 4.0 で導入されました。 このサポートにより、特に共通暗号化モード 'cbcs' の CBC モードでのコンテンツの暗号化が可能になります。 また、PlayReady クライアントと他の DRM システム、および既存のコンテンツの相互運用性も向上します。

3.3.1. 他のバージョンとの違い

バージョン 4.0 以降、PlayReady SDK とクライアントは PlayReady ヘッダー バージョン 4.0、4.1、4.2、4.3 を処理できます。 バージョン 4.0 より前の PlayReady SDK では、v4.3 ヘッダーが指定されている場合、"サポートされていないバージョン" エラーが返されます。

PlayReady ヘッダー形式 v.4.3.0.0 には、v4.2.0.0 と比較して次の変更があります。

  • WRMHEADER 要素のバージョン属性は、文字列 "4.3.0.0" に設定されます。
  • KID 要素内にある ALGID 属性が、ライセンス取得要求に存在しない可能性があります。 Microsoft では、 ALGID 属性に、コンテンツに含まれるヘッダーに有効な値を指定することをお勧めします。
  • ALGID 属性が任意の KID 要素に存在し、KIDS 要素に複数の KID 要素がある場合、すべての KID 要素に ALGID 属性を含める必要があり、属性値は同じである必要があります。
  • KID 要素内にある ALGID 属性には、"AESCTR" に加えて、値 "AESCBC" を持つようになりました。次の場合です。
    • ALGID 属性が "AESCBC" に設定されている場合は、CHECKSUM 属性を含めてはなりません。

3.3.2. 例

AESCBC キーを持つ PlayReady ヘッダー 4.3.0.0 の例を次に示します。

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
  <DATA>
    <PROTECTINFO>
      <KIDS>
        <KID ALGID="AESCBC" VALUE="PV1LM/VEVk+kEOB8qqcWDg=="></KID>
        <KID ALGID="AESCBC" VALUE="tuhDoKUN7EyxDPtMRNmhyA=="></KID>
      </KIDS>
    </PROTECTINFO>
    <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
    <DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
  </DATA>
</WRMHEADER>

ALGID が見つからない PlayReady ヘッダー 4.3.0.0 の例を次に示します。

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
  <DATA>
    <PROTECTINFO>
      <KIDS>
        <KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="></KID>
      </KIDS>
    </PROTECTINFO>
    <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
    <DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
    <DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
  </DATA>
</WRMHEADER>

3.3.3. Format

PlayReady ヘッダー v4.3.0.0 には、次の構文があります。

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
  <DATA>
      <PROTECTINFO LICENSEREQUESTED="true">
        <KIDS>
          <KID ALGID="value" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
          <KID ALGID="value" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
          <KID ALGID="value" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
        </KIDS>
      </PROTECTINFO>
      <LA_URL> URL for license acquisition </LA_URL>
      <LUI_URL>
        URL for Non-silent license acquisition web page
      </LUI_URL>
    <DS_ID> base64-encoded guid </DS_ID>
    <CUSTOMATTRIBUTES xmlns="">
      <mm:Publisher xmlns:mm="urn:schema-musicmogul-com">
           <mm:Author>
                Elvis Presley
           </mm:Author>
           <mm:CreationDate>
                2007/08/21:12:00:00
           </mm:CreationDate>
        </mm:Publisher>
    </CUSTOMATTRIBUTES>
    <DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
  </DATA>
</WRMHEADER>

タグについては、以下で説明します。

タグ名 必須 説明
WRMHEADER はい ヘッダー オブジェクトの最も外側の要素。 1 つの DATA 要素を含めることができ、1 つのバージョン属性を含む必要があります。 ヘッダーのバージョンは "4.3.0.0" です。 Microsoft が新しい必須タグまたは属性を定義するたびに、新しいバージョン番号がそれらのタグまたは属性に関連付けられます。 バージョンがクライアント コードが記述されたバージョンより大きい場合、クライアント コードは失敗する必要があります。これは、ヘッダーにクライアントが認識していない必須タグが含まれていることを意味するためです。 バージョンがクライアント コードが記述されたバージョン以下の場合は、クライアント コードが理解できないタグや属性を安全にスキップできます。
DATA いいえ サード パーティのタグを含むヘッダー データのコンテナー要素。 WRMHEADER 要素には、複数の DATA 要素を含めできません。
PROTECTINFO いいえ 0 または 1 つの KIDS 要素を指定します。 DATA 要素には、複数の PROTECTINFO 要素を含めできません。 必要に応じて、LICENSEREQUESTED 属性を含みます。
LICENSEREQUESTED いいえ ライセンス取得が少なくとも 1 つのライセンスを要求しているかどうかを指定します。 存在する場合は 、"true" または "false" に設定する必要があり、存在しない場合は "true" に設定されていると見なされます。 この属性は、4.5 より前の PlayReady バージョンでは無視されます。 PlayReady Server SDK アプリケーションでは、この属性を無視できます。これは情報提供のみを行います。
子供 いいえ 関連付けられているコンテンツの復号化オブジェクトの作成に使用できる 1 つ以上の KID 要素を指定します。 PROTECTINFO ノードの下に、1 つまたは 0 個の KIDS 要素が存在する場合があります。
子供 いいえ 特定のライセンスのすべてのキー データが含まれます。 KIDS ノードが存在する場合は、KIDS ノードの下に 1 つ以上の KID 要素が存在する必要があります。 KID 要素には、次の属性が含まれています。

ALGID: 省略可能。 暗号化アルゴリズムを指定します。 "AESCTR"、"AESCBC"、または "COCKTAIL" のいずれかに設定できます。

CHECKSUM: 省略可能。 AESCTR キーの場合のみ。 KID VALUE 属性とコンテンツ キーを使用して計算されたチェックサムが含まれています。 詳細については、このドキュメントの 「キー チェックサム アルゴリズム 」セクションを参照してください。

このノードが WRMHeader XML に存在する場合、そのデータ値は空である必要があります。

: 必須。 base64 でエンコードされたキー ID GUID 値が含まれています。 この GUID (DWORD、WORD、WORD、8 バイト配列) の値は、小さなエンディアン バイト順である必要があることに注意してください。
LA_URL いいえ ライセンス取得 Web サービスの URL が含まれています。 絶対 URL のみが許可されます。 DATA 要素には、複数のLA_URL要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
LUI_URL いいえ 非サイレント ライセンス取得 Web ページの URL が含まれています。 絶対 URL のみが許可されます。 DATA 要素には、複数のLUI_URL要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
DS_ID いいえ ドメイン サービスのサービス ID。 DATA 要素には、最大 1 つのDS_ID要素のみが含まれます。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
CUSTOMATTRIBUTES いいえ コンテンツ作成者は、この要素内にカスタム XML を追加できます。 Microsoft コードは、この要素内に含まれるデータに対して動作しません。 DATA 要素には、複数の CUSTOMATTRIBUTES 要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
DECRYPTORSETUP いいえ このタグには、値 "ONDEMAND" のみが含まれます。 このタグが DATA ノードに存在し、その値が "ONDEMAND" に設定されている場合、メディア グラフを設定する前に、コンテンツの完全なライセンス チェーンが取得可能であるか、クライアント コンピューターに既に存在することが想定されていないことをアプリケーションに示します。 このタグが設定されていない場合は、メディア グラフを設定する前に、アプリケーションがライセンスを取得するか、クライアント コンピューターに既に存在するように強制できることを示します。 DATA 要素には、複数の DECRYPTORSETUP 要素を含めできません。

3.4. v4.2.0.0

PlayReady ヘッダー v4.2.0.0 は、2015 年 4 月に PlayReady バージョン 3.0 で導入され、1 つのヘッダーで複数の KID を許可しました。 つまり、オーディオ トラックをビデオ トラックとは異なるキーで暗号化する必要がある場合など、複数のキーを使用して 1 つの資産を暗号化できます。

3.4.1. 他のバージョンとの違い

PlayReady 3.0 SDK 以降のクライアントは、v4.0、v4.1、および v4.2 PlayReady ヘッダー バージョンを処理できます。 以前の PlayReady SDK では、v4.2 ヘッダーが指定されている場合、"サポートされていないバージョン" エラーが返されます。 v4.2 ヘッダーを使用する場合、クライアントは、アプリ固有のカスタム メカニズムを使用して、使用しているサーバーのバージョンを把握する必要があります。 PlayReady SDK では、このバージョン情報を取得するためのネイティブな方法はありません。

PlayReady ヘッダー形式 v.4.2.0.0 には、v4.1.0.0 と比較して次の変更があります。

  • WRMHEADER 要素のバージョン属性は、文字列 "4.2.0.0" に設定されます。
  • PROTECTINFO 要素内にある KID 要素の名前は KIDS に変更され、引き続き省略可能です。
  • KIDS 要素内には複数の KID 要素があります。

3.4.2. 例

2 つの AESCTR キーを持つ PlayReady ヘッダー 4.2.0.0:

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.2.0.0">
  <DATA>
    <PROTECTINFO>
      <KIDS>
        <KID ALGID="AESCTR" CHECKSUM="xNvWVxoWk04=" VALUE="0IbHou/5s0yzM80yOkKEpQ=="></KID>
        <KID ALGID="AESCTR" CHECKSUM="GnKaQIRacPU=" VALUE="/qgG2xbs4k2SKCxx6bhWqw=="></KID>
      </KIDS>
    </PROTECTINFO>
    <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
    <DS_ID>AH+03juKbUGbHl1V/QIwRA==</DS_ID>
  </DATA>
</WRMHEADER>

3.4.3. Format

PlayReady ヘッダー v4.2.0.0 には、次の構文があります。

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.2.0.0">
  <DATA>
      <PROTECTINFO>
        <KIDS>
          <KID ALGID="AESCTR" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
          <KID ALGID="AESCTR" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
          <KID ALGID="AESCTR" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
        </KIDS>
      </PROTECTINFO>
      <LA_URL> URL for license acquisition </LA_URL>
      <LUI_URL>
        URL for Non-silent license acquisition web page
      </LUI_URL>
    <DS_ID> base64-encoded guid </DS_ID>
    <CUSTOMATTRIBUTES xmlns="">
      <mm:Publisher xmlns:mm="urn:schema-musicmogul-com">
           <mm:Author>
                Elvis Presley
           </mm:Author>
           <mm:CreationDate>
                2007/08/21:12:00:00
           </mm:CreationDate>
        </mm:Publisher>
    </CUSTOMATTRIBUTES>
    <DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
  </DATA>
</WRMHEADER>

タグについては、以下で説明します。

タグ名 必須 説明
WRMHEADER はい ヘッダー オブジェクトの最も外側の要素。 1 つの DATA 要素を含めることができ、1 つのバージョン属性を含む必要があります。 ヘッダーのバージョンは "4.2.0.0" です。 Microsoft が新しい必須タグまたは属性を定義するたびに、新しいバージョン番号がそれらのタグまたは属性に関連付けられます。 バージョンがクライアント コードが記述されたバージョンより大きい場合、クライアント コードは失敗する必要があります。これは、ヘッダーにクライアントが認識していない必須タグが含まれていることを意味するためです。 バージョンがクライアント コードが記述されたバージョン以下の場合は、クライアント コードが理解できないタグや属性を安全にスキップできます。
DATA いいえ サード パーティのタグを含むヘッダー データのコンテナー要素。 WRMHEADER 要素には、最大 1 つの DATA 要素のみが含まれます。
PROTECTINFO いいえ 0 または 1 つの KIDS 要素を指定します。 DATA 要素には、複数の PROTECTINFO 要素を含めできません。
子供 いいえ 関連付けられているコンテンツの復号化オブジェクトの作成に使用できる 1 つ以上の KID 要素を指定します。 PROTECTINFO ノードの下に、1 つまたは 0 個の KIDS 要素が存在する場合があります。
子供 いいえ 特定のライセンスのすべてのキー データが含まれます。 KIDS ノードが存在する場合は、KIDS ノードの下に 1 つ以上の KID 要素が存在する必要があります。 KID 要素には、次の属性が含まれています。

ALGID: 必須。 暗号化アルゴリズムを指定します。 AESCTR またはカクテル

チェックサム: 省略可能に設定する必要があります。 KID VALUE キーとコンテンツ キーを使用して計算されたチェックサムが含まれます。 詳細については、このドキュメントの 「キー チェックサム アルゴリズム 」セクションを参照してください。

このノードが WRMHeader XML に存在する場合、そのデータ値は空である必要があります。

: 必須。 base64 でエンコードされたキー ID GUID 値が含まれています。 この GUID (DWORD、WORD、WORD、8 バイト配列) の値は、小さなエンディアン バイト順である必要があることに注意してください。
LA_URL いいえ ライセンス取得 Web サービスの URL が含まれています。 絶対 URL のみが許可されます。 DATA 要素には、複数のLA_URL要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
LUI_URL いいえ 非サイレント ライセンス取得 Web ページの URL が含まれています。 絶対 URL のみが許可されます。 DATA 要素には、複数のLUI_URL要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
DS_ID いいえ ドメイン サービスのサービス ID。 DATA 要素には、複数のDS_ID要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
CUSTOMATTRIBUTES いいえ コンテンツ作成者は、この要素内に任意の XML を追加できます。 Microsoft コードは、この要素内に含まれるデータに対して動作しません。 DATA 要素には、複数の CUSTOMATTRIBUTES 要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
DECRYPTORSETUP いいえ このタグには、値 "ONDEMAND" のみが含まれます。 このタグが DATA ノードに存在し、その値が "ONDEMAND" に設定されている場合、メディア グラフを設定する前に、コンテンツの完全なライセンス チェーンが取得可能であるか、クライアント コンピューターに既に存在することが想定されていないことをアプリケーションに示します。 このタグが設定されていない場合は、メディア グラフを設定する前に、アプリケーションがライセンスを取得するか、クライアント コンピューターに既に存在するように強制できることを示します。 DATA 要素には、複数の DECRYPTORSETUP 要素を含めできません。

3.5. v4.1.0.0

PlayReady ヘッダー v4.1.0.0 は、スケーラブルなリーフ ライセンスがストリームに埋め込まれたライブ リニア ストリームをサポートするために、2011 年 9 月に PlayReady バージョン 2.0 で導入されました。 この種類のストリームでは、復号化器で使用されるコンテンツ暗号化キーを知らなくても、クライアントはスケーラブルなルート ライセンスをバインドする必要があります。

3.5.1. 他のバージョンとの違い

PlayReady 2.0 SDK 以降のクライアントは、v4.0 バージョンと v4.1 PlayReady ヘッダー バージョンの両方を処理できます。 以前の PlayReady SDK では、v4.1 ヘッダーを指定すると"サポートされていないバージョン" エラーが返されます。

PlayReady ヘッダー形式 v.4.1.0.0 には、v4.0.0.0 と比較して次の変更があります。

  • WRMHEADER 要素のバージョン属性は、文字列 "4.1.0.0" に設定されます。
  • DATA 要素には、省略可能な DECRYPTORSETUP 要素が含まれています。
  • KID 要素は PROTECTINFO 要素内にあり、必須ではなく省略可能です。
  • KID 要素には、属性 ALGID (必須)、CHECKSUM (省略可能)、VALUE (必須) が含まれています。
  • KEYLEN 要素が削除されました。 KEYLEN 属性は、以前は、さまざまな長さのキーを持つカクテル ライセンスを明確にするために使用されていました。 v4.1 ヘッダーは、8 バイトのカクテル キー以外をサポートする機能を中断します。 8 バイトではないカクテル キーを使用する場合は、v4.0 ヘッダーを使用する必要があります。
  • ALGID 要素と CHECKSUM 要素は、データが KID 要素の属性内に含まれているため、削除されています。

3.5.2. Format

PlayReady ヘッダー v4.1.0.0 には、次の構文があります。

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.1.0.0">
  <DATA>
      <PROTECTINFO>
        <KID ALGID="AESCTR" CHECKSUM="base64-encoded value" VALUE="base64-encoded guid"></KID>
      </PROTECTINFO>
      <LA_URL> URL for license acquisition </LA_URL>
      <LUI_URL>
        URL for Non-silent license acquisition web page
      </LUI_URL>
    <DS_ID> base64-encoded guid </DS_ID>
    <CUSTOMATTRIBUTES xmlns="">
      <mm:Publisher xmlns:mm="urn:schema-musicmogul-com">
           <mm:Author>
                Elvis Presley
           </mm:Author>
           <mm:CreationDate>
                2007/08/21:12:00:00
           </mm:CreationDate>
        </mm:Publisher>
    </CUSTOMATTRIBUTES>
    <DECRYPTORSETUP>ONDEMAND</DECRYPTORSETUP>
  </DATA>
</WRMHEADER>

タグについては、以下で説明します。

タグ名 必須 説明
WRMHEADER はい ヘッダー オブジェクトの最も外側の要素。 1 つの DATA 要素を含めることができ、1 つのバージョン属性を含む必要があります。 ヘッダーのバージョンは "4.1.0.0" です。 Microsoft が新しい必須タグまたは属性を定義するたびに、新しいバージョン番号がそれらのタグまたは属性に関連付けられます。 バージョンがクライアント コードが記述されたバージョンより大きい場合、クライアント コードは失敗する必要があります。これは、ヘッダーにクライアントが認識していない必須タグが含まれていることを意味するためです。 バージョンがクライアント コードが記述されたバージョン以下の場合は、クライアント コードが理解できないタグや属性を安全にスキップできます。
DATA いいえ サード パーティのタグを含むヘッダー データのコンテナー要素。 WRMHEADER 要素には、複数の DATA 要素を含めできません。
PROTECTINFO いいえ 関連付けられているコンテンツの復号化オブジェクトの作成に使用できる 0 個または 1 個の KID 要素を指定します。 DATA 要素には、複数の PROTECTINFO 要素を含めできません。
子供 いいえ 特定のライセンスのすべてのキー データが含まれます。 PROTECTINFO ノードの下に、1 つまたは 0 個の KID 要素が存在する可能性があります。 KID 要素には、次の属性が含まれています。

: 必須。 base64 でエンコードされたキー ID GUID 値が含まれています。 この GUID (DWORD、WORD、WORD、8 バイト配列) の値は、小さなエンディアン バイト順である必要があることに注意してください。

ALGID: 必須。 暗号化アルゴリズムを指定します。 "AESCTR" または "COCKTAIL"

CHECKSUM: 省略可能に設定する必要があります。 KID VALUE キーとコンテンツ キーを使用して計算されたチェックサムが含まれます。 詳細については、このドキュメントの 「キー チェックサム アルゴリズム 」セクションを参照してください。

このノードが WRMHeader XML に存在する場合、そのデータ値は空である必要があります。
LA_URL いいえ ライセンス取得 Web サービスの URL が含まれています。 絶対 URL のみが許可されます。 DATA 要素には、複数のLA_URL要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
LUI_URL いいえ 非サイレント ライセンス取得 Web ページの URL が含まれています。 絶対 URL のみが許可されます。 DATA 要素には、複数のLUI_URL要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
DS_ID いいえ ドメイン サービスのサービス ID。 DATA 要素には、複数のDS_ID要素を含めできません。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
CUSTOMATTRIBUTES いいえ コンテンツ作成者は、この要素内に任意の XML を追加できます。 Microsoft コードは、この要素内に含まれるデータに対して動作しません。 DATA 要素には、最大 1 つの CUSTOMATTRIBUTES 要素のみが含まれます。

このノードが WRMHeader XML に存在する場合、そのデータ値を空にすることはできません。
DECRYPTORSETUP いいえ このタグには、値 "ONDEMAND" のみが含まれます。 このタグが DATA ノードに存在し、その値が "ONDEMAND" に設定されている場合、メディア グラフを設定する前に、コンテンツの完全なライセンス チェーンが取得可能であるか、クライアント コンピューターに既に存在することが想定されていないことをアプリケーションに示します。 このタグが設定されていない場合は、メディア グラフを設定する前に、アプリケーションがライセンスを取得するか、クライアント コンピューターに既に存在するように強制できることを示します。 DATA 要素には、最大 1 つの DECRYPTORSETUP 要素のみが含まれます。

v4.1 に関する注意事項:

  • PlayReady ヘッダー内のすべての XML タグと属性は、Microsoft によって定義されます。 唯一の例外は、 CUSTOMATTRIBUTES 要素の内容です。 PlayReady PC アプリケーション開発者は、 CUSTOMATTRIBUTES 要素の外部にカスタム タグを追加しないでください。
  • PlayReady ヘッダーは 、W3C 標準 XML v1.1 仕様に従う必要があります。
  • PlayReady ヘッダーには、整形式 XML で必要な最上位レベル ?XML のタグが含まれていません。
  • このフィールドのサイズは 1 KB を超えないようにすることをお勧めします。

3.6. v4.0.0.0

PlayReady Header v4.0.0.0 は、2008 年に PlayReady バージョン 1.0 で導入され、AES 暗号化されたコンテンツを 1 つの AESCTR キーまたは WMDRM 暗号化コンテンツをサポートするカクテル キーをサポートできます。

3.6.1. 例

PlayReady ヘッダー 4.0.0.0
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0">
  <DATA>
    <PROTECTINFO>
      <ALGID>AESCTR</ALGID>
      <KEYLEN>16</KEYLEN>
    </PROTECTINFO>
    <KID>q5HgCTj40kGeNVhTH9Gexw==</KID>
    <CHECKSUM>w+OZVr8vzrQ=</CHECKSUM>
    <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
    <CUSTOMATTRIBUTES>
      <IIS_DRM_VERSION>8.0.1705.19</IIS_DRM_VERSION>
    </CUSTOMATTRIBUTES>
  </DATA>
</WRMHEADER>
PlayReady ヘッダー 4.0.0.0 を含む Base64 でエンコードされた PlayReady オブジェクト

XAMAAAEAAQBSAzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AcQA1AEgAZwBDAFQAagA0ADAAawBHAGUATgBWAGgAVABIADkARwBlAHgAdwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgB3ACsATwBaAFYAcgA4AHYAegByAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAHIAbwBmAGYAaQBjAGkAYQBsAHMAaQB0AGUALgBrAGUAeQBkAGUAbABpAHYAZQByAHkALgBtAGUAZABpAGEAcwBlAHIAdgBpAGMAZQBzAC4AdwBpAG4AZABvAHcAcwAuAG4AZQB0AC8AUABsAGEAeQBSAGUAYQBkAHkALwA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AEkASQBTAF8ARABSAE0AXwBWAEUAUgBTAEkATwBOAD4AOAAuADAALgAxADcAMAA1AC4AMQA5ADwALwBJAEkAUwBfAEQAUgBNAF8AVgBFAFIAUwBJAE8ATgA+ADwALbBDAFUAUwBUAE8ATQBBAFQAVABSAEkAQgBVAFQARQBTAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEAFIAPgA=

3.6.2. Format

PlayReady ヘッダー v4.0.0.0 には、次の構文があります。

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0">
<DATA>
      <PROTECTINFO>
        <ALGID>AESCTR</ALGID>
        <KEYLEN>16</KEYLEN>
      </PROTECTINFO>
      <LA_URL> URL for license acquisition </LA_URL>
      <LUI_URL>
        URL for Non-silent license acquisition web page
      </LUI_URL>
    <DS_ID>base64-encoded guid</DS_ID>
    <KID>base64-encoded kid</KID>
    <CUSTOMATTRIBUTES xmlns="">
      <mm:Publisher xmlns:mm="urn:schema-musicmogul-com">
           <mm:Author>
                Elvis Presley
           </mm:Author>
           <mm:CreationDate>
                2007/08/21:12:00:00
           </mm:CreationDate>
        </mm:Publisher>
    </CUSTOMATTRIBUTES>
    <CHECKSUM>
      checksum of the content key for verification
    </CHECKSUM>
  </DATA>
</WRMHEADER>

次の表では、さまざまなタグについて説明します。

タグ名 必須 説明
WRMHEADER はい ヘッダー オブジェクトの最も外側の要素。 これには、1 つの DATA 要素と 1 つのバージョン属性を含めることができます。 ヘッダーのバージョンは "4.0.0.0" です。

packager のセマンティクス:
Microsoft が新しい必須タグまたは属性を定義するたびに、新しいバージョン番号がそれらのタグまたは属性に関連付けられます。 PlayReady ヘッダーのバージョンは、ヘッダーに存在する必須のタグと属性のバージョンの最上位に設定する必要があります。

クライアントのセマンティクス:
バージョンがクライアント コードが記述されたバージョンより大きい場合、クライアント コードは失敗する必要があります。これは、クライアントが認識していない必須タグがヘッダーに含まれていることを意味するためです。 バージョンがクライアント コードが記述されたバージョン以下の場合、クライアント コードは、認識できないタグまたは属性を安全にスキップできます。
DATA はい サード パーティのタグを含むヘッダー データのコンテナー要素。
PROTECTINFO はい KEYLEN 子要素と ALGID 子要素を使用した暗号化の種類を指定します。
KEYLEN はい コンテンツ キーのサイズを指定します。 ALGID が "AESCTR" に設定されている場合は 16 に、ALGID が "COCKTAIL" に設定されている場合は 7 に設定する必要があります。
ALGID はい 暗号化アルゴリズムを指定します。 次の値に設定する必要があります:

AESCTR: カウンター モードの AES アルゴリズムに対応します。

カクテル:カクテルアルゴリズムに対応します。
子供 はい base64 でエンコードされたキー ID GUID 値が含まれます。 この GUID (DWORD、WORD、WORD、8 バイト配列) の値は、リトル エンディアン バイト順である必要があることに注意してください。
CHECKSUM いいえ KID VALUE キーとコンテンツ キーを使用して計算されたチェックサムが含まれます。 詳細については、「 キー チェックサム アルゴリズム 」セクションを参照してください。

以前のバージョンの PlayReady では、このフィールドは必要に応じて処理されているため、以前のバージョンの PlayReady で使用されるヘッダーに含める必要があります。
LA_URL いいえ ライセンス取得 Web サービスの URL が含まれます。 絶対 URL のみが許可されます。
LUI_URL いいえ サイレントでないライセンス取得 Web ページの URL が含まれます。 絶対 URL のみが許可されます。
DS_ID いいえ ドメイン サービスのサービス ID。
CUSTOMATTRIBUTES いいえ コンテンツ作成者は、この要素内に任意の XML を追加できます。 Microsoft コードは、この要素内に含まれるデータには作用しません。

v4.0 の注意事項:

  • PlayReady ヘッダー内のすべての XML タグと属性は、Microsoft によって定義されます。 唯一の例外は、 CUSTOMATTRIBUTES 要素の内容です。 PlayReady PC アプリケーション開発者は CUSTOMATTRIBUTES 要素の外部にカスタム タグを追加しないでください。そうすると、Microsoft が定義する将来のタグと競合する可能性があるためです。
  • コンテナー要素内の子要素の順序は関係ありません。
  • PlayReady ヘッダーには、整形式 XML で必要な最上位レベル ?XML のタグが含まれていないことに注意してください。
  • このフィールドのサイズは 1 KB を超えないようにすることをお勧めします。
  • CHECKSUM は、バージョン 1.2 までの PlayReady Server SDK で必要です。 バージョン 1.5 以降、PlayReady Server SDK は CHECKSUM を省略可能として扱います。 PlayReady Porting Kit 1.2 は、すぐに使用するには CHECKSUM が必要です。 PlayReady Porting Kit 2.0 は CHECKSUM を省略可能として扱います。

4. 埋め込みライセンス Microsoft Store (ELS)

次の条件で、空の埋め込みライセンス Microsoft Storeを PlayReady オブジェクトに追加することをお勧めします。

  • PlayReady オブジェクトは、コンテンツ ファイルに挿入されます。
  • コンテンツは、ライセンスが埋め込まれた PlayReady ドメインのコンテキストで使用できます。

これにより、PlayReady クライアントは、既存の埋め込みライセンス Microsoft Storeを設定するだけで、ドメインバインド ライセンスをさらに PlayReady オブジェクトに埋め込むことができます。また、ファイル全体を初期のサイズよりも大きいサイズの新しい PlayReady オブジェクトで再ヘッダーする必要が省けます。

注意

空の埋め込みライセンス Microsoft Storeを PlayReady オブジェクトに含めないでください。これは、Smooth Streaming クライアント マニフェストに base-64 文字列として挿入されることを目的としています。

注意

推奨されるサイズは 10 KB です。

5. キー チェックサム アルゴリズム

PlayReady ヘッダーのチェックサム アルゴリズムは、一致しないキーから保護することを目的としています。 DRM の初期の頃、曲は誤ってラベル付けされたキーで暗号化されていました。 その結果、曲の暗号化が解除されたときにホワイトノイズが再生されました。 そして、曲が十分に大声で再生された場合、再生機器は破壊されました。 チェックサムを使用すると、ファイルの暗号化に使用されたキーとしてコンテンツ キーを確認できます。 このアルゴリズムは次のように機能します。

ALGID 値が "AESCBC" に設定されている場合、キー チェックサム アルゴリズムは定義されていません。 CHECKSUM 属性は省略する必要があります。

ALGID 値が "AESCTR" に設定されている場合、16 バイトのキー ID は、ECB モードを使用して 16 バイトの AES コンテンツ キーで暗号化されます。 バッファーの最初の 8 バイトが抽出され、base64 エンコードされます。

ALGID 値が "COCKTAIL" に設定されている場合は、次の手順を実行します。

  1. 21 バイトのバッファーが作成されます。

  2. コンテンツ キーはバッファーに格納され、残りのバッファーにはゼロが格納されます。

  3. 5 つのイテレーションの場合:

    a. buffer = SHA-1 (buffer)。

  4. バッファーの最初の 7 バイトが抽出され、base64 エンコードされます。

  5. これらの手順を実行すると、base64 でエンコードされたバイトがチェックサムとして使用されます。

6. CUSTOMATTRIBUTES

サービス プロバイダーは、PlayReady ヘッダーの CUSTOMATTRIBUTES 要素内に独自の XML を追加できます。 CUSTOMATTRIBUTES 要素内で使用されるタグは、Microsoft によって定義された将来のタグと競合しないことが保証されます。

Microsoft コードは、この要素内の XML には作用しません。 通常、この要素の値を解釈するのは、サービス プロバイダーのバックエンドまたはクライアント側のコードだけです。 たとえば、ホワイト ラベル サービスがフロントエンド サービス AAA、BBB、CCC を表しているとします。 このようなサービスはコンテンツ ライブラリを 1 回だけ暗号化できますが (これはコストの高い操作であるため)、コンテンツをエンド ユーザーに提供するときに、 CUSTOMATTRIBUTES を、エンドユーザーがサブスクライブする特定のフロントエンド サービスの名前に設定できます。 エンド ユーザーがそのコンテンツのライセンスを要求すると、これにより、ホワイト ラベル サービスは、別のライセンスを発行できるように、エンド ユーザーがサブスクライブするフロントエンド サービスを決定できます。

このフィールドのサイズは、1 キロバイト (KB) を超えないようにしてください。