Add new secure stop methods

Methods are needed to release a secure stop by ID and
return a list of secure stops.

Tests: gts media tests

bug:67361434
bug:64001680
Change-Id: I53cb0671b9b775e8da16bcc61008e1700466180b
This commit is contained in:
Jeff Tinker
2018-01-26 09:04:15 -08:00
parent 4acd76e647
commit 80da0aa06f
2 changed files with 61 additions and 0 deletions

View File

@@ -23,6 +23,8 @@ import @1.0::Status;
import @1.1::DrmMetricGroup;
import @1.1::HdcpLevel;
import @1.1::KeyRequestType;
import @1.0::SecureStopId;
import @1.1::SecureStopRelease;
import @1.1::SecurityLevel;
/**
@@ -176,4 +178,56 @@ interface IDrmPlugin extends @1.0::IDrmPlugin {
* plugin.
*/
getMetrics() generates (Status status, vec<DrmMetricGroup> metric_groups);
/**
* Get the IDs of all secure stops on the device
*
* @return status the status of the call. The status must be OK or
* ERROR_DRM_INVALID_STATE if the HAL is in a state where the secure stop
* IDs cannot be returned.
* @return secureStopIds a list of the IDs
*/
getSecureStopIds() generates
(Status status, vec<SecureStopId> secureStopIds);
/**
* Release secure stops given a release message from the key server
*
* @param ssRelease the secure stop release message identifying one or more
* secure stops to release. ssRelease is opaque, it is passed directly from
* a DRM license server through the app and media framework to the vendor
* HAL module. The format and content of ssRelease must be defined by the
* DRM scheme being implemented according to this HAL. The DRM scheme
* can be identified by its UUID which can be queried using
* IDrmFactory::isCryptoSchemeSupported.
*
* @return status the status of the call. The status must be OK or one of
* the following errors: BAD_VALUE if ssRelease is invalid or
* ERROR_DRM_INVALID_STATE if the HAL is in a state where the secure stop
* cannot be released.
*/
releaseSecureStops(SecureStopRelease ssRelease) generates (Status status);
/**
* Remove a secure stop given its secure stop ID, without requiring
* a secure stop release response message from the key server.
*
* @param secureStopId the ID of the secure stop to release.
*
* @return status the status of the call. The status must be OK or one of
* the following errors: BAD_VALUE if the secureStopId is invalid or
* ERROR_DRM_INVALID_STATE if the HAL is in a state where the secure stop
* cannot be released.
*/
removeSecureStop(SecureStopId secureStopId) generates (Status status);
/**
* Remove all secure stops on the device without requiring a secure
* stop release response message from the key server.
*
* @return status the status of the call. The status must be OK or
* ERROR_DRM_INVALID_STATE if the HAL is in a state where the secure
* stops cannot be removed.
*/
removeAllSecureStops() generates (Status status);
};

View File

@@ -210,3 +210,10 @@ enum SecurityLevel : uint32_t {
HW_SECURE_ALL,
};
/**
* Encapsulates a secure stop release opaque object
*/
struct SecureStopRelease {
vec<uint8_t> opaqueData;
};