Optionally add custom data as a string in get_license_challenge

This commit is contained in:
Fling 2026-01-02 23:23:13 +01:00
parent 7e707a6d12
commit 2ff02eb15a
2 changed files with 13 additions and 5 deletions

View File

@ -94,7 +94,8 @@ class Cdm:
self,
session_id: bytes,
wrm_header: Union[WRMHeader, str],
rev_lists: Optional[List[UUID]]=None # default: RevocationList.SupportedListIds
rev_lists: Optional[List[UUID]] = None, # default: RevocationList.SupportedListIds
custom_data: Optional[str] = None
) -> str:
session = self.__sessions.get(session_id)
if not session:
@ -126,7 +127,8 @@ class Cdm:
client_data=self._get_cipher_data(session),
signing_key=self.signing_key,
client_info=self.client_version,
revocation_lists=rev_lists
revocation_lists=rev_lists,
custom_data=custom_data
)
soap_message = SoapMessage.create(acquire_license_message)

View File

@ -71,7 +71,8 @@ class XmlBuilder:
wrmserver_data: bytes,
client_data: bytes,
client_info: Optional[str] = None,
revocation_lists: Optional[List[UUID]] = None
revocation_lists: Optional[List[UUID]] = None,
custom_data: Optional[str] = None
) -> ET.Element:
LA = ET.SubElement(parent, "LA", {
"xmlns": "http://schemas.microsoft.com/DRM/2007/03/protocols",
@ -91,6 +92,10 @@ class XmlBuilder:
if revocation_lists is not None:
XmlBuilder._RevocationLists(LA, revocation_lists)
if custom_data is not None:
CustomData = ET.SubElement(LA, "CustomData")
CustomData.text = html.escape(custom_data)
LicenseNonce = ET.SubElement(LA, "LicenseNonce")
LicenseNonce.text = base64.b64encode(get_random_bytes(16)).decode()
@ -161,7 +166,8 @@ class XmlBuilder:
client_data: bytes,
signing_key: ECCKey,
client_info: Optional[str] = None,
revocation_lists: Optional[List[UUID]] = None
revocation_lists: Optional[List[UUID]] = None,
custom_data: Optional[str] = None
) -> ET.Element:
AcquireLicense = ET.Element("AcquireLicense", {
"xmlns": "http://schemas.microsoft.com/DRM/2007/03/protocols"
@ -171,7 +177,7 @@ class XmlBuilder:
"xmlns": "http://schemas.microsoft.com/DRM/2007/03/protocols/messages"
})
LA = XmlBuilder._LicenseAcquisition(Challenge, wrmheader, protocol_version, wrmserver_data, client_data, client_info, revocation_lists)
LA = XmlBuilder._LicenseAcquisition(Challenge, wrmheader, protocol_version, wrmserver_data, client_data, client_info, revocation_lists, custom_data)
Signature = ET.SubElement(Challenge, "Signature", {
"xmlns": "http://www.w3.org/2000/09/xmldsig#"