diff --git a/drm/1.0/ICryptoPlugin.hal b/drm/1.0/ICryptoPlugin.hal index ca8fa502ac..0a7fd261d7 100644 --- a/drm/1.0/ICryptoPlugin.hal +++ b/drm/1.0/ICryptoPlugin.hal @@ -99,7 +99,8 @@ interface ICryptoPlugin { * ERROR_DRM_RESOURCE_BUSY if the resources required to perform the * decryption are not available, ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION * if required output protections are not active, - * ERROR_DRM_SESSION_NOT_OPENED if the decrypt session is not opened, or + * ERROR_DRM_SESSION_NOT_OPENED if the decrypt session is not opened, + * ERROR_DRM_DECRYPT if the decrypt operation fails, and * ERROR_DRM_CANNOT_HANDLE in other failure cases. * @return bytesWritten the number of bytes output from the decryption * @return detailedError if the error is a vendor-specific error, the diff --git a/drm/1.0/default/TypeConvert.cpp b/drm/1.0/default/TypeConvert.cpp index ede2a38adf..3a262c3313 100644 --- a/drm/1.0/default/TypeConvert.cpp +++ b/drm/1.0/default/TypeConvert.cpp @@ -59,6 +59,9 @@ Status toStatus(status_t legacyStatus) { case android::ERROR_DRM_DEVICE_REVOKED: status = Status::ERROR_DRM_DEVICE_REVOKED; break; + case android::ERROR_DRM_DECRYPT: + status = Status::ERROR_DRM_DECRYPT; + break; default: ALOGW("Unable to convert legacy status: %d, defaulting to UNKNOWN", legacyStatus); diff --git a/drm/1.0/types.hal b/drm/1.0/types.hal index 52730444a8..cea5b1644e 100644 --- a/drm/1.0/types.hal +++ b/drm/1.0/types.hal @@ -89,6 +89,12 @@ enum Status : uint32_t { */ ERROR_DRM_DEVICE_REVOKED, + /** + * The DRM Plugin must return ERROR_DRM_DECRYPT if the CryptoPlugin + * decrypt operation fails. + */ + ERROR_DRM_DECRYPT, + /** * ERROR_DRM_UNKNOWN must be returned when a fatal failure occurs and no * other defined error is appropriate.