diff options
author | Jeff Tinker <jtinker@google.com> | 2014-08-04 20:56:24 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-08-04 20:56:24 +0000 |
commit | e2209ffea3f23bf711b732c6b3aa33320f2d2cc0 (patch) | |
tree | 0488a9238652ac87900a4f428942f2ee5a9b7753 | |
parent | 4ae6b2de588bdac03effd94b5ac33225ba0466c1 (diff) | |
parent | b63d63b8afa25694d1973988d7acdfebcd01a18d (diff) | |
download | frameworks_av-e2209ffea3f23bf711b732c6b3aa33320f2d2cc0.zip frameworks_av-e2209ffea3f23bf711b732c6b3aa33320f2d2cc0.tar.gz frameworks_av-e2209ffea3f23bf711b732c6b3aa33320f2d2cc0.tar.bz2 |
am b63d63b8: Merge "Allow device to be unprovisioned" into lmp-dev
* commit 'b63d63b8afa25694d1973988d7acdfebcd01a18d':
Allow device to be unprovisioned
-rw-r--r-- | drm/mediadrm/plugins/clearkey/DrmPlugin.h | 4 | ||||
-rw-r--r-- | include/media/IDrm.h | 2 | ||||
-rw-r--r-- | media/libmedia/IDrm.cpp | 20 | ||||
-rw-r--r-- | media/libmediaplayerservice/Drm.cpp | 17 | ||||
-rw-r--r-- | media/libmediaplayerservice/Drm.h | 2 |
5 files changed, 44 insertions, 1 deletions
diff --git a/drm/mediadrm/plugins/clearkey/DrmPlugin.h b/drm/mediadrm/plugins/clearkey/DrmPlugin.h index bfbc6bf..27df9cd 100644 --- a/drm/mediadrm/plugins/clearkey/DrmPlugin.h +++ b/drm/mediadrm/plugins/clearkey/DrmPlugin.h @@ -104,6 +104,10 @@ public: return android::ERROR_DRM_CANNOT_HANDLE; } + virtual status_t unprovisionDevice() { + return android::ERROR_DRM_CANNOT_HANDLE; + } + virtual status_t getSecureStops(List<Vector<uint8_t> >& secureStops) { UNUSED(secureStops); return android::ERROR_DRM_CANNOT_HANDLE; diff --git a/include/media/IDrm.h b/include/media/IDrm.h index 32ae28e..68de87a 100644 --- a/include/media/IDrm.h +++ b/include/media/IDrm.h @@ -70,6 +70,8 @@ struct IDrm : public IInterface { Vector<uint8_t> &certificate, Vector<uint8_t> &wrappedKey) = 0; + virtual status_t unprovisionDevice() = 0; + virtual status_t getSecureStops(List<Vector<uint8_t> > &secureStops) = 0; virtual status_t releaseSecureStops(Vector<uint8_t> const &ssRelease) = 0; diff --git a/media/libmedia/IDrm.cpp b/media/libmedia/IDrm.cpp index f1a6a9f..1904839 100644 --- a/media/libmedia/IDrm.cpp +++ b/media/libmedia/IDrm.cpp @@ -53,7 +53,8 @@ enum { SIGN, SIGN_RSA, VERIFY, - SET_LISTENER + SET_LISTENER, + UNPROVISION_DEVICE }; struct BpDrm : public BpInterface<IDrm> { @@ -229,6 +230,15 @@ struct BpDrm : public BpInterface<IDrm> { return reply.readInt32(); } + virtual status_t unprovisionDevice() { + Parcel data, reply; + data.writeInterfaceToken(IDrm::getInterfaceDescriptor()); + + remote()->transact(UNPROVISION_DEVICE, data, &reply); + + return reply.readInt32(); + } + virtual status_t getSecureStops(List<Vector<uint8_t> > &secureStops) { Parcel data, reply; data.writeInterfaceToken(IDrm::getInterfaceDescriptor()); @@ -619,6 +629,14 @@ status_t BnDrm::onTransact( return OK; } + case UNPROVISION_DEVICE: + { + CHECK_INTERFACE(IDrm, data, reply); + status_t result = unprovisionDevice(); + reply->writeInt32(result); + return OK; + } + case GET_SECURE_STOPS: { CHECK_INTERFACE(IDrm, data, reply); diff --git a/media/libmediaplayerservice/Drm.cpp b/media/libmediaplayerservice/Drm.cpp index d50037f..d222316 100644 --- a/media/libmediaplayerservice/Drm.cpp +++ b/media/libmediaplayerservice/Drm.cpp @@ -417,6 +417,23 @@ status_t Drm::provideProvisionResponse(Vector<uint8_t> const &response, return mPlugin->provideProvisionResponse(response, certificate, wrappedKey); } +status_t Drm::unprovisionDevice() { + Mutex::Autolock autoLock(mLock); + + if (mInitCheck != OK) { + return mInitCheck; + } + + if (mPlugin == NULL) { + return -EINVAL; + } + + if (!checkPermission("android.permission.REMOVE_DRM_CERTIFICATES")) { + return -EPERM; + } + + return mPlugin->unprovisionDevice(); +} status_t Drm::getSecureStops(List<Vector<uint8_t> > &secureStops) { Mutex::Autolock autoLock(mLock); diff --git a/media/libmediaplayerservice/Drm.h b/media/libmediaplayerservice/Drm.h index 3d4b0fc..9e23e2e 100644 --- a/media/libmediaplayerservice/Drm.h +++ b/media/libmediaplayerservice/Drm.h @@ -75,6 +75,8 @@ struct Drm : public BnDrm, Vector<uint8_t> &certificate, Vector<uint8_t> &wrappedKey); + virtual status_t unprovisionDevice(); + virtual status_t getSecureStops(List<Vector<uint8_t> > &secureStops); virtual status_t releaseSecureStops(Vector<uint8_t> const &ssRelease); |