diff --git a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.cpp b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.cpp index 7a4ee20b..714b2521 100644 --- a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.cpp +++ b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.cpp @@ -67,8 +67,7 @@ class ContentKeysContext : public SessionContextKeys { bool SetContentKey(const KeyId& entitlement_id, const KeyId& content_key_id, const std::vector& content_key) override; - bool GetEntitlementKey(const KeyId& entitlement_id, - const std::vector** entitlement_key) override; + EntitlementKey* GetEntitlementKey(const KeyId& entitlement_id) override; private: SessionKeyTable session_keys_; @@ -98,11 +97,11 @@ bool ContentKeysContext::SetContentKey( return false; } -bool ContentKeysContext::GetEntitlementKey(const KeyId& entitlement_id, - const std::vector** key) { +EntitlementKey* ContentKeysContext::GetEntitlementKey( + const KeyId& entitlement_id) { // Unsupported action for this type. - return false; -}; + return nullptr; +} /***************************************/ @@ -118,8 +117,7 @@ class EntitlementKeysContext : public SessionContextKeys { bool SetContentKey(const KeyId& entitlement_id, const KeyId& content_key_id, const std::vector& content_key) override; - bool GetEntitlementKey(const KeyId& entitlement_id, - const std::vector** key) override; + EntitlementKey* GetEntitlementKey(const KeyId& entitlement_id) override; OEMCrypto_LicenseType type() override { return OEMCrypto_EntitlementLicense; } @@ -151,9 +149,9 @@ bool EntitlementKeysContext::SetContentKey( content_key); } -bool EntitlementKeysContext::GetEntitlementKey( - const KeyId& entitlement_id, const std::vector** out_key) { - return session_keys_.GetEntitlementKey(entitlement_id, out_key); +EntitlementKey* EntitlementKeysContext::GetEntitlementKey( + const KeyId& entitlement_id) { + return session_keys_.GetEntitlementKey(entitlement_id); } /***************************************/ @@ -657,9 +655,9 @@ OEMCryptoResult SessionContext::LoadEntitledContentKeys( message + key_data->entitlement_key_id.offset + key_data->entitlement_key_id.length); - const std::vector* entitlement_key = NULL; - if (!session_keys_->GetEntitlementKey(entitlement_key_id, - &entitlement_key)) { + EntitlementKey* entitlement_key = + session_keys_->GetEntitlementKey(entitlement_key_id); + if (entitlement_key == nullptr) { return OEMCrypto_KEY_NOT_ENTITLED; } std::vector content_key; @@ -675,8 +673,9 @@ OEMCryptoResult SessionContext::LoadEntitledContentKeys( content_key_id.assign(message + key_data->content_key_id.offset, message + key_data->content_key_id.offset + key_data->content_key_id.length); - if (!DecryptMessage(*entitlement_key, iv, encrypted_content_key, - &content_key, 256 /* key size */)) { + if (!DecryptMessage(entitlement_key->entitlement_key(), iv, + encrypted_content_key, &content_key, + 256 /* key size */)) { return OEMCrypto_ERROR_UNKNOWN_FAILURE; } if (!session_keys_->SetContentKey(entitlement_key_id, content_key_id, diff --git a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.h b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.h index 1711e727..bfd81a62 100644 --- a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.h +++ b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session.h @@ -46,8 +46,7 @@ class SessionContextKeys { virtual bool SetContentKey(const KeyId& entitlement_id, const KeyId& content_key_id, const std::vector& content_key) = 0; - virtual bool GetEntitlementKey(const KeyId& entitlement_id, - const std::vector** key) = 0; + virtual EntitlementKey* GetEntitlementKey(const KeyId& entitlement_id) = 0; virtual ~SessionContextKeys() {} diff --git a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session_key_table.cpp b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session_key_table.cpp index 105d2b74..42b8a586 100644 --- a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session_key_table.cpp +++ b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session_key_table.cpp @@ -102,18 +102,13 @@ bool EntitlementKeyTable::SetContentKey( return true; } -bool EntitlementKeyTable::GetEntitlementKey( - const KeyId& entitlement_id, - const std::vector** entitlement_key) { - if (!entitlement_key) { - return false; - } +EntitlementKey* EntitlementKeyTable::GetEntitlementKey( + const KeyId& entitlement_id) { EntitlementKeyMap::iterator it = keys_.find(entitlement_id); if (it == keys_.end()) { - return false; + return nullptr; } - *entitlement_key = &it->second->entitlement_key(); - return true; + return it->second; } } // namespace wvoec_ref diff --git a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session_key_table.h b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session_key_table.h index f26b9c99..cac2e8eb 100644 --- a/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session_key_table.h +++ b/libwvdrmengine/oemcrypto/ref/src/oemcrypto_session_key_table.h @@ -57,8 +57,7 @@ class EntitlementKeyTable { size_t size() const { return contentid_to_entitlementid_.size(); } bool SetContentKey(const KeyId& entitlement_id, const KeyId& content_key_id, const std::vector content_key); - bool GetEntitlementKey(const KeyId& entitlement_id, - const std::vector** entitlement_key); + EntitlementKey* GetEntitlementKey(const KeyId& entitlement_id); private: EntitlementKeyMap keys_;