From 9c60d1e1ae02d260d490004fe7a0bb09ca7c4fb6 Mon Sep 17 00:00:00 2001 From: Alex Dale Date: Wed, 19 Feb 2020 22:16:09 -0800 Subject: [PATCH] Adding app package name to license request. [ Merge of http://go/wvgerrit/94323 ] Content providers wish to know the application package name that is requesting a license from the content server. The app package name that is provided to the CDM during initialization is provided to the client identification message as a key-value pair during license request generation. App packages names are keyed under 'application_name'. This feature was tested manually by scraping the content of the license request for YouTube TV. Bug: 148689078 Test: manual Change-Id: I6b65f2ab9845dbea37aaaab76ecea25c228bde5b --- libwvdrmengine/mediadrm/include_hidl/WVDrmPlugin.h | 2 ++ libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libwvdrmengine/mediadrm/include_hidl/WVDrmPlugin.h b/libwvdrmengine/mediadrm/include_hidl/WVDrmPlugin.h index e5aaba3e..12b0388a 100644 --- a/libwvdrmengine/mediadrm/include_hidl/WVDrmPlugin.h +++ b/libwvdrmengine/mediadrm/include_hidl/WVDrmPlugin.h @@ -425,6 +425,8 @@ struct WVDrmPlugin : public IDrmPlugin, IDrmPluginListener, wvcdm::CdmSessionId mDecryptHashSessionId; + std::string mAppPackageName; + Status queryProperty(const std::string& property, std::string& stringValue) const; diff --git a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp index 2c9abf0a..44b68c79 100644 --- a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp @@ -33,6 +33,7 @@ static const char* const kEnable = "enable"; static const char* const kDisable = "disable"; static const std::string kPsshTag = "pssh"; static const char* const kSpecialUnprovisionResponse = "unprovision"; +static const std::string kKeyAppPackageName = "application_name"; } // namespace @@ -192,7 +193,8 @@ WVDrmPlugin::WVDrmPlugin(const sp& cdm, : mCdmIdentifierBuilder(useSpoid, *this, appPackageName), mCDM(cdm), mCrypto(crypto), - mCryptoSessions() {} + mCryptoSessions(), + mAppPackageName(appPackageName) {} WVDrmPlugin::~WVDrmPlugin() { typedef map::iterator mapIterator; @@ -515,6 +517,10 @@ Return WVDrmPlugin::getKeyRequest_1_2( cdmParameters[cdmKey] = cdmValue; } + // Inserting application name into parameters. This will overwrite user + // parameters of the same key. + cdmParameters[kKeyAppPackageName] = mAppPackageName; + CdmKeyRequest keyRequest; CdmResponseType res = mCDM->GenerateKeyRequest( cdmSessionId, cdmKeySetId, cdmInitDataType, processedInitData,