我目前正在使用ExoPlayer处理DRM,我试图弄清楚MediaDrmCallback的函数返回什么,即executeProvisionRequest和executeKeyRequest作为ByteArray。我阅读了MediaDrm的Developer页面,但它说服务器返回了我想要打印的许可证,但问题是它在ByteArray中
我尝试使用UTF-8编码和ASCII编码,但它们都打印了一些未知字符。
override fun executeProvisionRequest(uuid: UUID?, request: ExoMediaDrm.ProvisionRequest?): ByteArray {
val url = request?.defaultUrl + "&signedRequest=" + String(request!!.data)
return executePost(url, null, null)
}
override fun executeKeyRequest(uuid: UUID?, request: ExoMediaDrm.KeyRequest?): ByteArray {
val requestProperties = HashMap<String, String>()
requestProperties["X-AxDRM-Message"] = mAxDrmMessage
return executePost(mLicenseServer, request!!.data, requestProperties)
}
如果您要打印许可证本身,即解密密钥,那么您将无法在DRM系统中加密密钥,只有DRM客户端本身配置为对其进行解密。此解密不以任何开放或可观察的方式完成。
DRM系统(如Widevine,PlayReady等)的主要用途之一是在许可证服务器和客户端/播放器之间安全地传输密钥。