From 68d9d71a792deed75d32fe13febc07c9c12c8449 Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Tue, 4 Mar 2014 13:21:31 -0800 Subject: Support CAST V2 Authentication in MediaDrm Java API version Update frameworks to enable support for CAST V2 Authentication in the DRM Plugin. Change-Id: I9066ada0edf8e0d777c503897d8c7fc7f76f2861 related-to-bug: 12702350 --- media/libmediaplayerservice/Drm.cpp | 30 ++++++++++++++++++++++++++---- media/libmediaplayerservice/Drm.h | 14 ++++++++++++-- 2 files changed, 38 insertions(+), 6 deletions(-) (limited to 'media/libmediaplayerservice') diff --git a/media/libmediaplayerservice/Drm.cpp b/media/libmediaplayerservice/Drm.cpp index eebcb79..e68d4cd 100644 --- a/media/libmediaplayerservice/Drm.cpp +++ b/media/libmediaplayerservice/Drm.cpp @@ -373,7 +373,8 @@ status_t Drm::queryKeyStatus(Vector const &sessionId, return mPlugin->queryKeyStatus(sessionId, infoMap); } -status_t Drm::getProvisionRequest(Vector &request, String8 &defaultUrl) { +status_t Drm::getProvisionRequest(String8 const &certType, String8 const &certAuthority, + Vector &request, String8 &defaultUrl) { Mutex::Autolock autoLock(mLock); if (mInitCheck != OK) { @@ -384,10 +385,13 @@ status_t Drm::getProvisionRequest(Vector &request, String8 &defaultUrl) return -EINVAL; } - return mPlugin->getProvisionRequest(request, defaultUrl); + return mPlugin->getProvisionRequest(certType, certAuthority, + request, defaultUrl); } -status_t Drm::provideProvisionResponse(Vector const &response) { +status_t Drm::provideProvisionResponse(Vector const &response, + Vector &certificate, + Vector &wrappedKey) { Mutex::Autolock autoLock(mLock); if (mInitCheck != OK) { @@ -398,7 +402,7 @@ status_t Drm::provideProvisionResponse(Vector const &response) { return -EINVAL; } - return mPlugin->provideProvisionResponse(response); + return mPlugin->provideProvisionResponse(response, certificate, wrappedKey); } @@ -589,6 +593,24 @@ status_t Drm::verify(Vector const &sessionId, return mPlugin->verify(sessionId, keyId, message, signature, match); } +status_t Drm::signRSA(Vector const &sessionId, + String8 const &algorithm, + Vector const &message, + Vector const &wrappedKey, + Vector &signature) { + Mutex::Autolock autoLock(mLock); + + if (mInitCheck != OK) { + return mInitCheck; + } + + if (mPlugin == NULL) { + return -EINVAL; + } + + return mPlugin->signRSA(sessionId, algorithm, message, wrappedKey, signature); +} + void Drm::binderDied(const wp &the_late_who) { delete mPlugin; diff --git a/media/libmediaplayerservice/Drm.h b/media/libmediaplayerservice/Drm.h index 119fd50..3d4b0fc 100644 --- a/media/libmediaplayerservice/Drm.h +++ b/media/libmediaplayerservice/Drm.h @@ -66,10 +66,14 @@ struct Drm : public BnDrm, virtual status_t queryKeyStatus(Vector const &sessionId, KeyedVector &infoMap) const; - virtual status_t getProvisionRequest(Vector &request, + virtual status_t getProvisionRequest(String8 const &certType, + String8 const &certAuthority, + Vector &request, String8 &defaulUrl); - virtual status_t provideProvisionResponse(Vector const &response); + virtual status_t provideProvisionResponse(Vector const &response, + Vector &certificate, + Vector &wrappedKey); virtual status_t getSecureStops(List > &secureStops); @@ -111,6 +115,12 @@ struct Drm : public BnDrm, Vector const &signature, bool &match); + virtual status_t signRSA(Vector const &sessionId, + String8 const &algorithm, + Vector const &message, + Vector const &wrappedKey, + Vector &signature); + virtual status_t setListener(const sp& listener); virtual void sendEvent(DrmPlugin::EventType eventType, int extra, -- cgit v1.1