diff --git a/proprietary/drmwvmplugin/include/WVDRMPluginAPI.h b/proprietary/drmwvmplugin/include/WVDRMPluginAPI.h index 0f3df83b..8fa05206 100644 --- a/proprietary/drmwvmplugin/include/WVDRMPluginAPI.h +++ b/proprietary/drmwvmplugin/include/WVDRMPluginAPI.h @@ -63,7 +63,7 @@ class WVDRMPluginAPI { virtual bool RemoveRights(std::string &path) = 0; virtual bool RemoveAllRights() = 0; virtual bool Prepare(char *data, int len) = 0; - virtual bool Operate(char *in, char *out, int len, char *iv) = 0; + virtual int Operate(char *in, char *out, int len, char *iv) = 0; enum EventType { EventType_AcquireDrmInfoFailed, diff --git a/proprietary/drmwvmplugin/lib/libwvdrm_L1.so b/proprietary/drmwvmplugin/lib/libwvdrm_L1.so index 1a697e00..e4b0af58 100644 Binary files a/proprietary/drmwvmplugin/lib/libwvdrm_L1.so and b/proprietary/drmwvmplugin/lib/libwvdrm_L1.so differ diff --git a/proprietary/drmwvmplugin/lib/libwvdrm_L3.so b/proprietary/drmwvmplugin/lib/libwvdrm_L3.so index f57f6596..050cecbc 100644 Binary files a/proprietary/drmwvmplugin/lib/libwvdrm_L3.so and b/proprietary/drmwvmplugin/lib/libwvdrm_L3.so differ diff --git a/proprietary/drmwvmplugin/lib/libwvocs_L1.a b/proprietary/drmwvmplugin/lib/libwvocs_L1.a index 51202598..b1b5ee36 100644 Binary files a/proprietary/drmwvmplugin/lib/libwvocs_L1.a and b/proprietary/drmwvmplugin/lib/libwvocs_L1.a differ diff --git a/proprietary/drmwvmplugin/lib/libwvocs_L3.a b/proprietary/drmwvmplugin/lib/libwvocs_L3.a index 63e56120..402b552b 100644 Binary files a/proprietary/drmwvmplugin/lib/libwvocs_L3.a and b/proprietary/drmwvmplugin/lib/libwvocs_L3.a differ diff --git a/proprietary/drmwvmplugin/src/WVMDrmPlugin.cpp b/proprietary/drmwvmplugin/src/WVMDrmPlugin.cpp index 81dbc1c5..3f5f820f 100644 --- a/proprietary/drmwvmplugin/src/WVMDrmPlugin.cpp +++ b/proprietary/drmwvmplugin/src/WVMDrmPlugin.cpp @@ -854,10 +854,18 @@ status_t WVMDrmPlugin::onDecrypt(int uniqueId, DecryptHandle* decryptHandle, int (*decBuffer)->length = encBuffer->length; - if (!mDrmPluginImpl->Operate(encBuffer->data, (*decBuffer)->data, encBuffer->length, iv)) { + int status; + status = mDrmPluginImpl->Operate(encBuffer->data, (*decBuffer)->data, encBuffer->length, iv); + if (status != WVDRMPluginAPI::RIGHTS_VALID) { (*decBuffer)->length = 0; usleep(1000000); // prevent spinning - return DRM_ERROR_LICENSE_EXPIRED; + if (status == WVDRMPluginAPI::RIGHTS_NOT_ACQUIRED) { + return DRM_ERROR_NO_LICENSE; + } else if (status == WVDRMPluginAPI::RIGHTS_EXPIRED) { + return DRM_ERROR_LICENSE_EXPIRED; + } else if (status == WVDRMPluginAPI::RIGHTS_INVALID) { + return DRM_ERROR_DECRYPT; + } } return DRM_NO_ERROR; diff --git a/proprietary/streamcontrol/lib/libWVStreamControlAPI_L1.so b/proprietary/streamcontrol/lib/libWVStreamControlAPI_L1.so index b1c770c0..406f0268 100644 Binary files a/proprietary/streamcontrol/lib/libWVStreamControlAPI_L1.so and b/proprietary/streamcontrol/lib/libWVStreamControlAPI_L1.so differ diff --git a/proprietary/streamcontrol/lib/libWVStreamControlAPI_L3.so b/proprietary/streamcontrol/lib/libWVStreamControlAPI_L3.so index 28b6f9af..713d8589 100644 Binary files a/proprietary/streamcontrol/lib/libWVStreamControlAPI_L3.so and b/proprietary/streamcontrol/lib/libWVStreamControlAPI_L3.so differ