From 8856c8b8777d0e0de11b2de863a336b001024e29 Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Sat, 30 Mar 2013 16:19:44 -0700 Subject: MediaDrm API update Clarify offline usage of sessions and keys and implement implement CryptoSession to support additional crypto use cases. Change-Id: I5d8000ce7e1dd7eba08969fc50296c9e1456c4fc --- include/media/IDrm.h | 62 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 13 deletions(-) (limited to 'include') diff --git a/include/media/IDrm.h b/include/media/IDrm.h index 38e2378..15d0a75 100644 --- a/include/media/IDrm.h +++ b/include/media/IDrm.h @@ -42,19 +42,23 @@ struct IDrm : public IInterface { virtual status_t closeSession(Vector const &sessionId) = 0; virtual status_t - getLicenseRequest(Vector const &sessionId, - Vector const &initData, - String8 const &mimeType, DrmPlugin::LicenseType licenseType, - KeyedVector const &optionalParameters, - Vector &request, String8 &defaultUrl) = 0; + getKeyRequest(Vector const &sessionId, + Vector const &initData, + String8 const &mimeType, DrmPlugin::KeyType keyType, + KeyedVector const &optionalParameters, + Vector &request, String8 &defaultUrl) = 0; - virtual status_t provideLicenseResponse(Vector const &sessionId, - Vector const &response) = 0; + virtual status_t provideKeyResponse(Vector const &sessionId, + Vector const &response, + Vector &keySetId) = 0; - virtual status_t removeLicense(Vector const &sessionId) = 0; + virtual status_t removeKeys(Vector const &keySetId) = 0; - virtual status_t queryLicenseStatus(Vector const &sessionId, - KeyedVector &infoMap) const = 0; + virtual status_t restoreKeys(Vector const &sessionId, + Vector const &keySetId) = 0; + + virtual status_t queryKeyStatus(Vector const &sessionId, + KeyedVector &infoMap) const = 0; virtual status_t getProvisionRequest(Vector &request, String8 &defaulUrl) = 0; @@ -65,13 +69,42 @@ struct IDrm : public IInterface { virtual status_t releaseSecureStops(Vector const &ssRelease) = 0; - virtual status_t getPropertyString(String8 const &name, String8 &value ) const = 0; + virtual status_t getPropertyString(String8 const &name, String8 &value) const = 0; virtual status_t getPropertyByteArray(String8 const &name, - Vector &value ) const = 0; + Vector &value) const = 0; virtual status_t setPropertyString(String8 const &name, String8 const &value ) const = 0; virtual status_t setPropertyByteArray(String8 const &name, - Vector const &value ) const = 0; + Vector const &value) const = 0; + + virtual status_t setCipherAlgorithm(Vector const &sessionId, + String8 const &algorithm) = 0; + + virtual status_t setMacAlgorithm(Vector const &sessionId, + String8 const &algorithm) = 0; + + virtual status_t encrypt(Vector const &sessionId, + Vector const &keyId, + Vector const &input, + Vector const &iv, + Vector &output) = 0; + + virtual status_t decrypt(Vector const &sessionId, + Vector const &keyId, + Vector const &input, + Vector const &iv, + Vector &output) = 0; + + virtual status_t sign(Vector const &sessionId, + Vector const &keyId, + Vector const &message, + Vector &signature) = 0; + + virtual status_t verify(Vector const &sessionId, + Vector const &keyId, + Vector const &message, + Vector const &signature, + bool &match) = 0; private: DISALLOW_EVIL_CONSTRUCTORS(IDrm); @@ -81,6 +114,9 @@ struct BnDrm : public BnInterface { virtual status_t onTransact( uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags = 0); +private: + void readVector(const Parcel &data, Vector &vector) const; + void writeVector(Parcel *reply, Vector const &vector) const; }; } // namespace android -- cgit v1.1