This import syncs to the widevine git repostiory change commit ab3e1e43642cf36900f55169597a33f222709fdb Change-Id: I3a6f1e2969e5fe7ed1ca12f90b0eb0a3b7899835
83 lines
1.9 KiB
C++
83 lines
1.9 KiB
C++
// Copyright 2012 Google Inc. All Rights Reserved.
|
|
//
|
|
// OEMCrypto Client - wrapper class for C-style OEMCrypto interface
|
|
//
|
|
#ifndef CDM_BASE_CRYPTO_ENGINE_H_
|
|
#define CDM_BASE_CRYPTO_ENGINE_H_
|
|
|
|
#include "crypto_session.h"
|
|
#include "lock.h"
|
|
#include "wv_cdm_types.h"
|
|
|
|
namespace wvcdm {
|
|
|
|
typedef std::map<CdmSessionId,CryptoSession*> CryptoSessionMap;
|
|
|
|
class CryptoEngine {
|
|
|
|
friend class CryptoSession;
|
|
|
|
private:
|
|
|
|
CryptoEngine();
|
|
~CryptoEngine();
|
|
|
|
public:
|
|
|
|
// get an instance of Crypto engine
|
|
static CryptoEngine* GetInstance();
|
|
|
|
bool Init();
|
|
bool Terminate();
|
|
bool ValidateKeybox();
|
|
|
|
CryptoSession* CreateSession(const CdmSessionId& session_id);
|
|
CryptoSession* FindSession(const CdmSessionId& session_id);
|
|
bool DestroySession(const CdmSessionId& session_id);
|
|
bool DestroySessions();
|
|
|
|
bool GetToken(std::string* token);
|
|
|
|
typedef enum {
|
|
kSecurityLevelL1,
|
|
kSecurityLevelL2,
|
|
kSecurityLevelL3,
|
|
kSecurityLevelUnknown
|
|
} SecurityLevel;
|
|
|
|
SecurityLevel GetSecurityLevel();
|
|
|
|
bool properties_valid() const { return properties_valid_; }
|
|
bool oem_crypto_use_secure_buffers() const
|
|
{ return oem_crypto_use_secure_buffers_; }
|
|
bool oem_crypto_use_fifo() const { return oem_crypto_use_fifo_; }
|
|
bool oem_crypto_use_userspace_buffers() const
|
|
{ return oem_crypto_use_userspace_buffers_; }
|
|
|
|
private:
|
|
|
|
void DeleteInstance();
|
|
static CryptoEngine* CreateSingleton();
|
|
|
|
CryptoSession* FindSessionInternal(const CdmSessionId& session_id);
|
|
|
|
static CryptoEngine* crypto_engine_;
|
|
static Lock crypto_engine_lock_;
|
|
|
|
bool initialized_;
|
|
mutable Lock crypto_lock_;
|
|
mutable Lock sessions_lock_;
|
|
CryptoSessionMap sessions_;
|
|
|
|
bool properties_valid_;
|
|
bool oem_crypto_use_secure_buffers_;
|
|
bool oem_crypto_use_fifo_;
|
|
bool oem_crypto_use_userspace_buffers_;
|
|
|
|
CORE_DISALLOW_COPY_AND_ASSIGN(CryptoEngine);
|
|
};
|
|
|
|
}; // namespace wvcdm
|
|
|
|
#endif // CDM_BASE_CRYPTO_ENGINE_H_
|