Cdm: Support multiple forms of Service Certs in encrypt_client_id

This commit is contained in:
rlaphoenix 2022-07-31 13:29:38 +01:00
parent 0c85abb2d4
commit 5c1b0e89ef
1 changed files with 9 additions and 1 deletions

View File

@ -424,7 +424,7 @@ class Cdm:
@staticmethod @staticmethod
def encrypt_client_id( def encrypt_client_id(
client_id: ClientIdentification, client_id: ClientIdentification,
service_certificate: DrmCertificate, service_certificate: Union[SignedMessage, SignedDrmCertificate, DrmCertificate],
key: bytes = None, key: bytes = None,
iv: bytes = None iv: bytes = None
) -> EncryptedClientIdentification: ) -> EncryptedClientIdentification:
@ -432,6 +432,14 @@ class Cdm:
privacy_key = key or get_random_bytes(16) privacy_key = key or get_random_bytes(16)
privacy_iv = iv or get_random_bytes(16) privacy_iv = iv or get_random_bytes(16)
if isinstance(service_certificate, SignedMessage):
signed_drm_certificate = SignedDrmCertificate()
signed_drm_certificate.ParseFromString(service_certificate.msg)
service_certificate = signed_drm_certificate
if isinstance(service_certificate, SignedDrmCertificate):
drm_certificate = DrmCertificate()
drm_certificate.ParseFromString(service_certificate.drm_certificate)
service_certificate = drm_certificate
if not isinstance(service_certificate, DrmCertificate): if not isinstance(service_certificate, DrmCertificate):
raise ValueError(f"Expecting Service Certificate to be a DrmCertificate, not {service_certificate!r}") raise ValueError(f"Expecting Service Certificate to be a DrmCertificate, not {service_certificate!r}")