Cdm: Support multiple forms of Service Certs in encrypt_client_id
This commit is contained in:
parent
0c85abb2d4
commit
5c1b0e89ef
|
@ -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}")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue