Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
1. Inleiding
Deze specificatie is van toepassing op elk eindproduct dat is gemaakt met de PlayReady Server SDK, PlayReady Device Porting Kit, Windows, Xbox, Windows Phone en Silverlight.
1.1. Wijzigingsgeschiedenis
Versie | Veranderen |
---|---|
8 september 2021 | Voeg het optionele kenmerk LICENSEREQUESTED toe aan het knooppunt PROTECTINFO. |
1 november 2017 | Voeg de sectie Syntaxisvereisten toe. Veelvoudenvoorbeelden oplossen met onjuiste kenmerkvolgorde (kenmerken moeten in alfabetische volgorde staan) |
12 juli 2017 | Voeg de sectie PlayReady Header 4.3.0.0 toe, ondersteund vanaf PlayReady versie 4. Syntaxisvereiste toevoegen dat alle XML-knooppunten expliciet moeten worden gesloten door een afsluitende tag |
10 april 2015 | Sectie PlayReady Header 4.2.0.0 toevoegen, ondersteund vanaf PlayReady versie 3 |
September 2011 | Sectie PlayReady Header 4.1.0.0 toevoegen, ondersteund vanaf PlayReady versie 2 |
Augustus 2008 | Initiële versie die de PlayReady Header 4.0.0.0 documenteert die wordt ondersteund in PlayReady versie 1 |
2. PlayReady-object (PRO)
Het PlayReady-object (PRO) bevat de volgende velden.
Veldnaam | Veldtype | Grootte (bits) | Beschrijving |
---|---|---|---|
Lengte | DWORD (een 32-bit geheel getal vaak gebruikt in programmeren) | 32 | De lengte van het PlayReady-object in bytes. Deze waarde mag niet groter zijn dan 15 kB (kB). |
Aantal PlayReady-objectrecords | WOORD | 16 | Hiermee geeft u het aantal PlayReady-objectrecords in het PlayReady-object op. |
PlayReady-objectrecords | BYTE-matrix | Varieert | Bevat een variabel aantal records die informatie bevatten met betrekking tot licenties en het verkrijgen van licenties. |
2.1 PlayReady Object Records
Het PlayReady-object bestaat uit aanvullende subobjecten met de naam PlayReady-objectrecords. PlayReady-objectrecords bevatten de volgende velden.
Veldnaam | Veldtype | Grootte (bits) | Beschrijving |
---|---|---|---|
Recordtype | WOORD | 16 | Hiermee geeft u het type gegevens op dat is opgeslagen in de recordwaarde. |
Recordlengte | WOORD | 16 | Hiermee geeft u de grootte op in bytes van de recordwaarde. |
Recordwaarde | BYTE-matrix | Varieert | De inhoud van het object is afhankelijk van de waarde van recordtype. |
Het veld Recordtype heeft een van de volgende waarden.
Waardetype | Beschrijving |
---|---|
0x0001 | Geeft aan dat de record een PlayReady-header (PRH) bevat. |
0x0002 | Gereserveerd. |
0x0003 | Geeft een ingesloten licentiewinkel (ELS) aan. |
2.2. Voorbeelden van PlayReady-objecten
In de volgende afbeelding ziet u een gesegmenteerd MP4-bestand met een PlayReady-object dat een PlayReady-header bevat:
In de volgende afbeelding ziet u de HEX-weergave van dit MP4-bestand:
3. PlayReady-header (PRH)
De PlayReady Header (PRH) wordt door een client gebruikt om een licentie te zoeken of te verkrijgen voor het deel van de inhoud waarin deze is opgeslagen. Het wordt gecodeerd met UTF-16.
3.1 Versieondersteuningsmatrix
PlayReady Header v4.3.0.0 | PlayReady Header v4.2.0.0 | PlayReady Header v4.1.0.0 | PlayReady Header v4.0.0.0 | |
---|---|---|---|---|
Op PlayReady 4.0 SDK gebaseerde clients (zie opmerking 1) |
✓ | ✓ | ✓ | ✓ |
Op PlayReady 3.0 SDK gebaseerde clients (zie opmerking 2) |
✓ | ✓ | ✓ | |
Op PlayReady 2.x SDK gebaseerde clients (zie opmerking 3) |
✓ | ✓ | ||
Op PlayReady 1.x SDK gebaseerde clients (zie opmerking 4) |
✓ |
Opmerkingen:
- Xbox One versie 1709 of hoger zijn PlayReady 4.X-clients.
- Windows 10 (alle versies) en Xbox One versie 1703 of lager zijn PlayReady 3.X-clients. Nieuwste niet-Windows-apparaten (bijvoorbeeld Smart-tv's) die na 2017 zijn uitgebracht, ondersteunen PlayReady 3.X-clients.
- Silverlight en Windows 8, 8.1 zijn PlayReady 2.X-clients. De meeste niet-Windows-apparaten (bijvoorbeeld Smart TV's) die tussen 2011 en 2017 zijn uitgebracht, zijn PlayReady 2.X-clients.
- De meeste niet-Windows-apparaten (bijvoorbeeld smart-tv's) die tussen 2008 en 2011 zijn uitgebracht, zijn geclassificeerd als PlayReady 1.X-clients.
3.2. Syntaxisvereisten
3.2.1. Genormaliseerd
De XML moet worden gecanoniseerd.
3.2.2. Alle namen van knooppunten en attributen zijn hoofdlettergevoelig
Ondersteund
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
Niet ondersteund
<KID value="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<kid VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </kid>
3.2.3. Afsluitende tags moeten expliciet zijn
Alle XML-knooppunten moeten expliciet worden gesloten door een afsluitende tag, inclusief de knooppunten in het CUSTOMATTRIBUTES-knooppunt.
Ondersteund
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo"> </MyNode> </CUSTOMATTRIBUTES>
Niet ondersteund
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> <CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo"> </CUSTOMATTRIBUTES>
3.2.4. Naamruimtekenmerken
Alle naamruimtekenmerken moeten worden weergegeven vóór niet-naamruimtenkenmerken.
Ondersteund
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
Niet ondersteund
<WRMHEADER version="4.3.0.0" xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader>
3.2.5. Alfabetische volgorde
Alle kenmerken moeten in alfabetische volgorde staan, inclusief kenmerken in knooppunten in het knooppunt CUSTOMATTRIBUTES.
Ondersteund
<KID ALGID="AESCBC" VALUE="PV1LM/VEVk+kEOB8qqcWDg=="> </KID>
<CUSTOMATTRIBUTES> <MyNode BarAttribute="Bar" FooAttribute="Foo"> </MyNode> </CUSTOMATTRIBUTES>
Niet ondersteund
<KID VALUE="PV1LM/VEVk+kEOB8qqcWDg==" ALGID="AESCBC"> </KID>
<CUSTOMATTRIBUTES> <MyNode FooAttribute="Foo" BarAttribute="Bar"> </MyNode> </CUSTOMATTRIBUTES>
3.3. v4.3.0.0
PlayReady Header v4.3.0.0 is geïntroduceerd met PlayReady versie 4.0 in september 2017 ter ondersteuning van AESCBC-sleutels in een header. Deze ondersteuning biedt versleuteling van inhoud in de CBC-modus, met name voor de algemene versleutelingsmodi 'cbcs'. Het verhoogt ook de interoperabiliteit van PlayReady-clients met andere DRM-systemen, evenals bestaande inhoud.
3.3.1. Verschillen met andere versies
Vanaf versie 4.0 kunnen PlayReady-SDK's en clients PlayReady-headerversies 4.0, 4.1, 4.2 en 4.3 verwerken. PlayReady-SDK's vóór versie 4.0 retourneren een fout 'niet-ondersteunde versie' wanneer deze wordt geleverd met v4.3-headers.
De PlayReady Header-indeling v.4.3.0.0 heeft de volgende wijzigingen ten opzichte van v4.2.0.0:
- Het versiekenmerk van het WRMHEADER-element is ingesteld op de tekenreeks 4.3.0.0.
- Het ALGID-kenmerk dat zich in het KID-element bevindt, ontbreekt mogelijk in een aanvraag voor het verkrijgen van licenties. Microsoft raadt aan dat het ALGID-kenmerk een geldige waarde heeft in de header die is opgenomen in de inhoud.
- Wanneer het KENMERK ALGID aanwezig is in een KID-element en er meer dan één KID-element in het ELEMENT KIDS is, moeten alle KID-elementen het ALGID-kenmerk bevatten en moeten de kenmerkwaarden hetzelfde zijn.
- Het ALGID-kenmerk in het KID-element kan nu de waarde 'AESCBC' hebben, naast 'AESCTR', mits:
- Wanneer het ALGID-kenmerk is ingesteld op 'AESCBC', mag het kenmerk CHECKSUM niet worden opgenomen.
3.3.2. Voorbeelden
Hier volgt een voorbeeld van een PlayReady-header 4.3.0.0 met AESCBC-sleutels:
<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>
Hier volgt een voorbeeld van een PlayReady-header 4.3.0.0 met een ontbrekende ALGID:
<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. Formaat
De PlayReady-header v4.3.0.0 heeft de volgende syntaxis:
<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>
De tags worden hieronder beschreven.
Naam van tag | Verplicht | Beschrijving |
---|---|---|
WRMHEADER | Ja | Buitenste element van het koptekstobject. Het kan één DATA-element bevatten en moet één versiekenmerk bevatten. De versie voor de header is '4.3.0.0'. Telkens wanneer Microsoft nieuwe verplichte tags of kenmerken definieert, wordt er een nieuw versienummer gekoppeld aan deze tags of kenmerken. Als de versie groter is dan die waarvoor de clientcode is geschreven, moet de clientcode mislukken, omdat de header verplichte tags bevat die de client niet begrijpt. Als de versie kleiner is dan of gelijk is aan de versie waarvoor de clientcode is geschreven, kan de clientcode alle tags of kenmerken die deze niet begrijpt, veilig overslaan. |
GEGEVENS | Nee. | Containerelement voor headergegevens, inclusief tags van derden. Er kan niet meer dan één DATA-element worden opgenomen in het WRMHEADER-element . |
PROTECTINFO | Nee. | Geeft nul of één KIDS-element op. Er mag niet meer dan één PROTECTINFO-element worden opgenomen in het element DATA . Optioneel kan het kenmerk LICENSEREQUESTED bevatten. |
LICENTIEAANGEVRAAGD | Nee. | Bepaalt of de aanvraag van een licentie ten minste één licentie betreft. Moet worden ingesteld op 'true' of 'false' als deze aanwezig is en wordt ervan uitgegaan dat deze is ingesteld op 'true' als deze niet aanwezig is. Dit kenmerk wordt genegeerd door PlayReady-versies vóór 4.5. De PlayReady Server SDK-toepassing is gratis om dit kenmerk te negeren; het is alleen informatief. |
KINDEREN | Nee. | Hiermee geeft u een of meer KID-elementen op die kunnen worden gebruikt voor het maken van ontsleutelingsobjecten voor de bijbehorende inhoud. Een of nul KIDS-elementen kunnen bestaan onder het knooppunt PROTECTINFO . |
KIND | Nee. | Bevat alle belangrijke gegevens voor een bepaalde licentie. Als het knooppunt KIDS aanwezig is, moet er een of meer KID-elementen bestaan onder het knooppunt KIDS . Het ELEMENT KID bevat de volgende kenmerken. ALGID: Optioneel. Hiermee geeft u het versleutelingsalgoritmen op. Kan worden ingesteld op: 'AESCTR', 'AESCBC' of 'COCKTAIL'. CONTROLESOM: Optioneel. Alleen voor AESCTR-sleutels. Bevat een controlesom die wordt berekend met het KID VALUE-attribuut en de contentsleutel. Raadpleeg de sectie Key Checksum Algorithm van dit document voor meer informatie. Als dit knooppunt bestaat in de WRMHeader XML, moet de bijbehorende gegevenswaarde leeg zijn. WAARDE: Vereist. Bevat een base64-gecodeerde sleutel-ID GUID-waarde. Houd er rekening mee dat deze GUID-waarde (DWORD, WORD, WORD, 8-BYTE-matrix) een kleine endiane bytevolgorde moet zijn. |
LA_URL | Nee. | Bevat de URL voor de webservice voor het verkrijgen van licenties. Alleen absolute URL's zijn toegestaan. Er kan niet meer dan één LA_URL element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
LUI_URL | Nee. | Bevat de URL voor een webpagina voor interactieve licentieverwering. Alleen absolute URL's zijn toegestaan. Er kan niet meer dan één LUI_URL element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
DS_ID | Nee. | Service-id voor de domeinservice. Er kan slechts één DS_ID element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
AANGEPASTEPARAMETERS | Nee. | De auteur van de inhoud kan aangepaste XML toevoegen in dit element. Microsoft-code handelt niet op gegevens in dit element. Er kan niet meer dan één CUSTOMATTRIBUTES-element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
Configuratie van de Decryptor | Nee. | Deze tag mag alleen de waarde ONDEMAND bevatten. Wanneer deze tag aanwezig is in het DATA-knooppunt en de waarde ervan is ingesteld op 'ONDEMAND', geeft deze aan dat een toepassing niet mag verwachten dat de volledige licentieketen voor de inhoud beschikbaar is voor overname, of die al aanwezig is op de clientcomputer, voordat de mediagrafiek wordt ingesteld. Als deze tag niet is ingesteld, geeft dit aan dat een toepassing de licentie kan afdwingen die moet worden verkregen, of al aanwezig is op de clientcomputer, voordat de mediagrafiek wordt ingesteld. Er kan niet meer dan één DECRYPTORSETUP-element worden opgenomen in het element DATA . |
3.4. v4.2.0.0
PlayReady Header v4.2.0.0 is geïntroduceerd met PlayReady versie 3.0 in april 2015 om meerdere KID's in één header toe te staan. Dit betekent dat meerdere sleutels kunnen worden gebruikt om één asset te versleutelen, bijvoorbeeld wanneer de audiosporen moeten worden versleuteld met een andere sleutel dan de videosporen.
3.4.1. Verschillen met andere versies
PlayReady 3.0 SDK's en latere clients kunnen de versies v4.0, v4.1 en v4.2 PlayReady Header verwerken. Eerdere PlayReady SDK's retourneren een fout 'niet-ondersteunde versie' wanneer deze worden voorzien van v4.2-headers. Wanneer u de v4.2-header gebruikt, moet de client weten welke serverversie deze gebruikt via een aangepast, app-specifiek mechanisme. PlayReady SDK's bieden geen systeemeigen manier om deze versiegegevens op te halen.
De PlayReady Header-indeling v.4.2.0.0 heeft de volgende wijzigingen ten opzichte van v4.1.0.0:
- Het versiekenmerk van het WRMHEADER-element is ingesteld op de tekenreeks 4.2.0.0.
- De naam van het ELEMENT KID in het ELEMENT PROTECTINFO is gewijzigd in KIDS en is nog steeds optioneel.
- Meerdere KID-elementen bevinden zich in het element KIDS .
3.4.2. Voorbeeld
PlayReady Header 4.2.0.0 met twee AESCTR-sleutels:
<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. Formaat
De PlayReady-header v4.2.0.0 heeft de volgende syntaxis:
<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>
De tags worden hieronder beschreven.
Naam van tag | Verplicht | Beschrijving |
---|---|---|
WRMHEADER | Ja | Buitenste element van het koptekstobject. Het kan één DATA-element bevatten en moet één versiekenmerk bevatten. De versie voor de header is '4.2.0.0'. Telkens wanneer Microsoft nieuwe verplichte tags of kenmerken definieert, wordt er een nieuw versienummer gekoppeld aan deze tags of kenmerken. Als de versie groter is dan die waarvoor de clientcode is geschreven, moet de clientcode mislukken, omdat de header verplichte tags bevat die de client niet begrijpt. Als de versie kleiner is dan of gelijk is aan de versie waarvoor de clientcode is geschreven, kan de clientcode alle tags of kenmerken die deze niet begrijpt, veilig overslaan. |
GEGEVENS | Nee. | Containerelement voor headergegevens, inclusief tags van derden. Er kan slechts één DATA-element worden opgenomen in het WRMHEADER-element . |
PROTECTINFO | Nee. | Geeft nul of één KIDS-element op. Er mag niet meer dan één PROTECTINFO-element worden opgenomen in het element DATA . |
KINDEREN | Nee. | Hiermee geeft u een of meer KID-elementen op die kunnen worden gebruikt voor het maken van ontsleutelingsobjecten voor de bijbehorende inhoud. Een of nul KIDS-elementen kunnen bestaan onder het knooppunt PROTECTINFO . |
KIND | Nee. | Bevat alle belangrijke gegevens voor een bepaalde licentie. Als het knooppunt KIDS aanwezig is, moeten er een of meer KID-elementen bestaan onder het knooppunt KIDS . Het ELEMENT KID bevat de volgende kenmerken. ALGID: vereist. Hiermee geeft u het versleutelingsalgoritmen op. Moet worden ingesteld op: AESCTR of COCKTAIL CHECKSUM: Optioneel. Bevat een controlesom die wordt berekend met behulp van de KID-WAARDE en de inhoudssleutel. Raadpleeg de sectie Key Checksum Algorithm van dit document voor meer informatie. Als dit knooppunt bestaat in de WRMHeader XML, moet de bijbehorende gegevenswaarde leeg zijn. WAARDE: Vereist. Bevat een base64-gecodeerde sleutel-ID GUID-waarde. Houd er rekening mee dat deze GUID-waarde (DWORD, WORD, WORD, 8-BYTE-matrix) een kleine endiane bytevolgorde moet zijn. |
LA_URL | Nee. | Bevat de URL voor de webservice voor het verkrijgen van licenties. Alleen absolute URL's zijn toegestaan. Er kan niet meer dan één LA_URL element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
LUI_URL | Nee. | Bevat de URL voor een webpagina voor interactieve licentieverwering. Alleen absolute URL's zijn toegestaan. Er kan niet meer dan één LUI_URL element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
DS_ID | Nee. | Service-id voor de domeinservice. Er kan niet meer dan één DS_ID element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
AANGEPASTEPARAMETERS | Nee. | De auteur van de inhoud kan willekeurige XML toevoegen binnen dit element. Microsoft-code handelt niet op gegevens in dit element. Er kan niet meer dan één CUSTOMATTRIBUTES-element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
Configuratie van de Decryptor | Nee. | Deze tag mag alleen de waarde ONDEMAND bevatten. Wanneer deze tag aanwezig is in het DATA-knooppunt en de waarde ervan is ingesteld op 'ONDEMAND', geeft deze aan dat een toepassing niet mag verwachten dat de volledige licentieketen voor de inhoud beschikbaar is voor overname, of die al aanwezig is op de clientcomputer, voordat de mediagrafiek wordt ingesteld. Als deze tag niet is ingesteld, geeft dit aan dat een toepassing de licentie kan afdwingen die moet worden verkregen, of al aanwezig is op de clientcomputer, voordat de mediagrafiek wordt ingesteld. Er kan niet meer dan één DECRYPTORSETUP-element worden opgenomen in het element DATA . |
3.5. v4.1.0.0
PlayReady Header v4.1.0.0 is geïntroduceerd met PlayReady versie 2.0 in september 2011 ter ondersteuning van live lineaire streams met schaalbare leaf-licenties die zijn ingesloten in de stream. Voor dit type stream moeten clients een schaalbare basislicentie binden zonder kennis van de inhoudsversleutelingssleutel die in de ontsleutelingssleutel wordt gebruikt.
3.5.1. Verschillen met andere versies
PlayReady 2.0 SDK's en latere clients kunnen zowel de versies v4.0 als v4.1 PlayReady Header verwerken. Eerdere PlayReady SDK's retourneren een fout 'niet-ondersteunde versie' wanneer deze wordt geleverd met v4.1-headers.
De PlayReady Header-indeling v.4.1.0.0 heeft de volgende wijzigingen ten opzichte van v4.0.0.0:
- Het versiekenmerk van het WRMHEADER-element is ingesteld op de tekenreeks 4.1.0.0.
- Het element DATA bevat een optioneel DECRYPTORSETUP-element .
- Het ELEMENT KID bevindt zich in het element PROTECTINFO en is optioneel in plaats van vereist.
- Het ELEMENT KID bevat de kenmerken ALGID (vereist), CHECKSUM (optioneel) en VALUE (vereist).
- Het ELEMENT KEYLEN is verwijderd. Het kenmerk KEYLEN werd eerder gebruikt om cocktaillicenties met verschillende lengtesleutels te onderscheiden. De v4.1-header verhindert het ondersteunen van andere sleutels dan 8-byte cocktail keys. Als u cocktailsleutels gebruikt die geen 8-byte zijn, moet u v4.0-headers gebruiken.
- De ALGID - en CHECKSUM-elementen zijn verwijderd omdat hun gegevens zijn opgenomen in kenmerken van het KID-element .
3.5.2. Formaat
De PlayReady-header v4.1.0.0 heeft de volgende syntaxis:
<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>
De tags worden hieronder beschreven.
Naam van tag | Verplicht | Beschrijving |
---|---|---|
WRMHEADER | Ja | Buitenste element van het koptekstobject. Het kan één DATA-element bevatten en moet één versiekenmerk bevatten. De versie voor de header is 4.1.0.0. Telkens wanneer Microsoft nieuwe verplichte tags of kenmerken definieert, wordt er een nieuw versienummer gekoppeld aan deze tags of kenmerken. Als de versie groter is dan die waarvoor de clientcode is geschreven, moet de clientcode mislukken, omdat de header verplichte tags bevat die de client niet begrijpt. Als de versie kleiner is dan of gelijk is aan de versie waarvoor de clientcode is geschreven, kan de clientcode alle tags of kenmerken die deze niet begrijpt, veilig overslaan. |
GEGEVENS | Nee. | Containerelement voor headergegevens, inclusief tags van derden. Er kan niet meer dan één DATA-element worden opgenomen in het WRMHEADER-element . |
PROTECTINFO | Nee. | Hiermee geeft u nul of één KID-elementen op die kunnen worden gebruikt voor het maken van ontsleutelingsobjecten voor de bijbehorende inhoud. Er mag niet meer dan één PROTECTINFO-element worden opgenomen in het element DATA . |
KIND | Nee. | Bevat alle belangrijke gegevens voor een bepaalde licentie. Er kunnen één of nul KID-elementen bestaan onder het knooppunt PROTECTINFO . Het ELEMENT KID bevat de volgende kenmerken. WAARDE: Vereist. Bevat een base64-gecodeerde sleutel-ID GUID-waarde. Houd er rekening mee dat deze GUID-waarde (DWORD, WORD, WORD, 8-BYTE-matrix) een kleine endiane bytevolgorde moet zijn. ALGID: vereist. Hiermee geeft u het versleutelingsalgoritmen op. Moet worden ingesteld op: 'AESCTR', of 'COCKTAIL' CHECKSUM: Optioneel. Bevat een controlesom die wordt berekend met behulp van de KID-WAARDE en de inhoudssleutel. Raadpleeg de sectie Key Checksum Algorithm van dit document voor meer informatie. Als dit knooppunt bestaat in de WRMHeader XML, moet de bijbehorende gegevenswaarde leeg zijn. |
LA_URL | Nee. | Bevat de URL voor de webservice voor het verkrijgen van licenties. Alleen absolute URL's zijn toegestaan. Er kan niet meer dan één LA_URL element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
LUI_URL | Nee. | Bevat de URL voor een webpagina voor interactieve licentieverwering. Alleen absolute URL's zijn toegestaan. Er kan niet meer dan één LUI_URL element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
DS_ID | Nee. | Service-id voor de domeinservice. Er kan niet meer dan één DS_ID element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
AANGEPASTEPARAMETERS | Nee. | De auteur van de inhoud kan willekeurige XML toevoegen binnen dit element. Microsoft-code handelt niet op gegevens in dit element. Er kan slechts één CUSTOMATTRIBUTES-element worden opgenomen in het element DATA . Als dit knooppunt bestaat in de WRMHeader XML, mag de bijbehorende gegevenswaarde niet leeg zijn. |
Configuratie van de Decryptor | Nee. | Deze tag mag alleen de waarde ONDEMAND bevatten. Wanneer deze tag aanwezig is in het DATA-knooppunt en de waarde ervan is ingesteld op 'ONDEMAND', geeft deze aan dat een toepassing niet mag verwachten dat de volledige licentieketen voor de inhoud beschikbaar is voor overname, of die al aanwezig is op de clientcomputer, voordat de mediagrafiek wordt ingesteld. Als deze tag niet is ingesteld, geeft dit aan dat een toepassing de licentie kan afdwingen die moet worden verkregen, of al aanwezig is op de clientcomputer, voordat de mediagrafiek wordt ingesteld. Er kan slechts één DECRYPTORSETUP-element worden opgenomen in het element DATA . |
Opmerkingen voor v4.1:
- Alle XML-tags en -kenmerken in de PlayReady-header worden gedefinieerd door Microsoft. De enige uitzondering hierop is de inhoud van het element CUSTOMATTRIBUTES . Ontwikkelaars van PlayReady PC-toepassingen mogen geen aangepaste tags toevoegen buiten het element CUSTOMATTRIBUTES .
- De PlayReady-header moet voldoen aan de W3C Canonical XML v1.1-specificaties.
- De PlayReady-header bevat geen tag op het hoogste niveau
?XML
die vereist is in goed opgemaakte XML. - Het wordt aanbevolen dat de grootte van dit veld niet groter mag zijn dan 1 kB.
3.6. v4.0.0.0
PlayReady Header v4.0.0.0 is geïntroduceerd met PlayReady versie 1.0 in 2008 en biedt één AESCTR-sleutel ondersteuning voor versleutelde AES-inhoud of een COCKTAILsleutel ter ondersteuning van met WMDRM versleutelde inhoud.
3.6.1. Voorbeelden
PlayReady Header 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>
Met Base64 gecodeerd PlayReady-object met een PlayReady-header 4.0.0.0
This content is invalid and needs to be properly decoded and translated. Due to its encoded nature, I can't provide a translation without first accessing its original decoded form.
3.6.2. Formaat
De PlayReady-header v4.0.0.0 heeft de volgende syntaxis:
<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>
In de volgende tabel worden de verschillende tags beschreven.
Naam van tag | Verplicht | Beschrijving |
---|---|---|
WRMHEADER | Ja | Buitenste element van het koptekstobject. Het kan één DATA-element en één versiekenmerk bevatten. De versie voor de header is '4.0.0.0'. Semantiek voor packager: Telkens wanneer Microsoft nieuwe verplichte tags of kenmerken definieert, wordt er een nieuw versienummer gekoppeld aan deze tags of kenmerken. De versie van de PlayReady-header moet worden ingesteld op het hoogste van de versies van de verplichte tags en kenmerken die aanwezig zijn in de header. Semantiek voor client: Als de versie groter is dan die waarvoor de clientcode is geschreven, moet de clientcode mislukken omdat de header verplichte tags bevat die de client niet begrijpt. Als de versie kleiner is dan of gelijk is aan de versie waarvoor de clientcode is geschreven, kan de clientcode alle tags of kenmerken die deze niet begrijpt, veilig overslaan. |
GEGEVENS | Ja | Containerelement voor headergegevens, inclusief tags van derden. |
PROTECTINFO | Ja | Hiermee geeft u het type versleuteling op met behulp van de onderliggende elementen KEYLEN en ALGID . |
KEYLEN | Ja | Hiermee geeft u de grootte van de inhoudssleutel op. Moet worden ingesteld op 16 als ALGID is ingesteld op 'AESCTR' en 7 als ALGID is ingesteld op 'COCKTAIL'. |
ALGID | Ja | Hiermee geeft u het versleutelingsalgoritmen op. Moet worden ingesteld op de volgende waarde: AESCTR: komt overeen met het AES-algoritme in de tellermodus. COCKTAIL: Komt overeen met het Cocktail-algoritme. |
KIND | Ja | Bevat een base64-gecodeerde sleutel-ID GUID-waarde. Houd er rekening mee dat deze GUID-waarde (DWORD, WORD, WORD, 8-BYTE-matrix) een kleine endiane bytevolgorde moet zijn. |
CHECKSUM | Nee. | Bevat een controlesom die wordt berekend op basis van de KID-WAARDE en de inhoudssleutel. Zie de sectie Key Checksum Algorithm voor meer informatie. Eerdere versies van PlayReady behandelden dit veld als vereist, dus deze moet worden opgenomen in een header die wordt gebruikt door een eerdere versie van PlayReady. |
LA_URL | Nee. | Bevat de URL voor de webservice voor het verkrijgen van licenties. Alleen absolute URL's zijn toegestaan. |
LUI_URL | Nee. | Bevat de URL voor een webpagina voor interactieve licentieverwering. Alleen absolute URL's zijn toegestaan. |
DS_ID | Nee. | Service-id voor de domeinservice. |
AANGEPASTEPARAMETERS | Nee. | De auteur van de inhoud kan willekeurige XML toevoegen binnen dit element. Microsoft-code handelt niet op gegevens in dit element. |
Opmerkingen voor v4.0:
- Alle XML-tags en -kenmerken in de PlayReady-header worden gedefinieerd door Microsoft. De enige uitzondering hierop is de inhoud van het element CUSTOMATTRIBUTES . Ontwikkelaars van PlayReady PC-toepassingen mogen geen aangepaste tags toevoegen buiten het element CUSTOMATTRIBUTES , omdat dit mogelijk conflicteert met toekomstige tags die Door Microsoft worden gedefinieerd.
- De volgorde van onderliggende elementen binnen een containerelement maakt niet uit.
- Houd er rekening mee dat de PlayReady-header geen tag op het hoogste niveau
?XML
bevat die vereist is in goed opgemaakte XML. - Het wordt aanbevolen dat de grootte van dit veld niet groter mag zijn dan 1 kB.
- CHECKSUM is vereist voor playReady Server SDK tot versie 1.2. Sinds versie 1.5 behandelt playReady Server SDK de CHECKSUM als optioneel. PlayReady Porting Kit 1.2 vereist standaard de CHECKSUM. PlayReady Porting Kit 2.0 behandelt de CHECKSUM als optioneel.
4. Ingebouwde Licentie Opslag (ELS)
Het is raadzaam om onder de volgende voorwaarden een lege Embedded License Store toe te voegen aan het PlayReady-object:
- Het PlayReady-object moet worden ingevoegd in een inhoudsbestand.
- De inhoud kan worden gebruikt in een context van PlayReady-domeinen met ingesloten licenties.
Hierdoor kan een PlayReady-client een domeingebonden licentie verder insluiten in het PlayReady-object door simpelweg de bestaande ingesloten licentieopslag in te vullen en bespaart u de moeite om het hele bestand opnieuw te headeren met een nieuw PlayReady-object van een groter formaat dan die van de eerste.
Opmerking
Neem geen lege ingesloten licentieopslag op in een PlayReady-object, bedoeld om als een base-64-tekenreeks in een Smooth Streaming Client Manifest te worden ingevoegd.
Opmerking
De aanbevolen grootte is 10 kB.
5. Sleutelcontrolesomalgoritme
Het controlesom-algoritme in de PlayReady-header is bedoeld om te beveiligen tegen niet-overeenkomende sleutels. In de vroege dagen van DRM werden nummers versleuteld met onjuist gelabelde sleutels. Dit resulteerde in witte ruis die werd afgespeeld toen de nummers werden ontsleuteld. En als de liedjes luid genoeg werden afgespeeld, werd de apparatuur voor het afspelen vernietigd. Met de controlesom kan de inhoudssleutel worden geverifieerd als de sleutel die is gebruikt om het bestand te versleutelen. Het algoritme werkt als volgt:
Voor een ALGID-waarde die is ingesteld op "AESCBC", is er geen sleutelchecksumalgoritme gedefinieerd. Het kenmerk CHECKSUM moet worden weggelaten.
Voor een ALGID-waarde die is ingesteld op AESCTR, wordt de sleutel-id van 16 bytes versleuteld met een AES-inhoudssleutel van 16 bytes met behulp van de ECB-modus. De eerste 8 bytes van de buffer worden geëxtraheerd en base64 gecodeerd.
Voer de volgende stappen uit voor een ALGID-waarde die is ingesteld op 'COCKTAIL':
Er wordt een buffer van 21 bytes gemaakt.
De inhoudssleutel wordt in de buffer geplaatst en de rest van de buffer wordt gevuld met nullen.
Voor vijf iteraties:
een. buffer = SHA-1 (buffer).
De eerste 7 bytes van de buffer worden geëxtraheerd en base64 gecodeerd.
Nadat deze stappen zijn uitgevoerd, worden de met base64 gecodeerde bytes gebruikt als controlesom.
AANGEPASTE ATTRIBUTEN
Een serviceprovider kan eigen XML toevoegen in het element CUSTOMATTRIBUTES van de PlayReady-header. Alle tags die in het element CUSTOMATTRIBUTES worden gebruikt, kunnen gegarandeerd niet botsen met toekomstige tags die door Microsoft zijn gedefinieerd.
Microsoft-code werkt niet op XML in dit element. De back-end van de serviceprovider of de code aan de clientzijde zijn de enigen die de waarde van dit element doorgaans interpreteren. Stel bijvoorbeeld dat een white-label-service de front-endservices AAA, BBB, CCC vertegenwoordigt. Een dergelijke service kan de inhoudsbibliotheek slechts eenmaal versleutelen (omdat dat een dure bewerking is), maar wanneer deze inhoud aan een eindgebruiker levert, kan deze de CUSTOMATTRIBUTES instellen op de naam van de specifieke front-endservice waarop de eindgebruiker zich abonneert. Wanneer de eindgebruiker een licentie voor die inhoud aanvraagt, kan de white label-service bepalen op welke front-endservice de eindgebruiker zich abonneert, zodat deze een andere licentie kan uitgeven.
De grootte van dit veld mag niet groter zijn dan 1 kilobyte (KB).