// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary // source code may only be used and distributed under the Widevine Master // License Agreement. #ifndef WVCDM_CORE_ENTITLEMENT_KEY_SESSION_H_ #define WVCDM_CORE_ENTITLEMENT_KEY_SESSION_H_ #include #include #include "OEMCryptoCENC.h" #include "content_key_session.h" #include "crypto_key.h" #include "metrics_collections.h" #include "override.h" namespace wvcdm { class EntitlementKeySession : public ContentKeySession { public: EntitlementKeySession(CryptoSessionId oec_session_id, metrics::CryptoMetrics* metrics); virtual ~EntitlementKeySession() {} KeySessionType Type() { return kEntitlement; } // Load Keys for ContentKeySession virtual OEMCryptoResult LoadKeys(const std::string& message, const std::string& signature, const std::string& mac_key_iv, const std::string& mac_key, const std::vector& keys, const std::string& provider_session_token, CdmCipherMode* cipher_mode, const std::string& srm_requirement) OVERRIDE; virtual OEMCryptoResult LoadEntitledContentKeys( const std::vector& keys) OVERRIDE; virtual OEMCryptoResult SelectKey(const std::string& key_id, CdmCipherMode cipher_mode) OVERRIDE; private: // The object returned by this function contains raw pointers to the passed-in // CryptoKey object. Care should be taken that it does not outlive the // CryptoKey. OEMCrypto_EntitledContentKeyObject MakeOecEntitledKey( const CryptoKey& input_key); std::map entitled_keys_; }; } // namespace wvcdm #endif // WVCDM_CORE_ENTITLEMENT_KEY_SESSION_H_