// Copyright 2013 Google Inc. All Rights Reserved. // // Mock implementation of OEMCrypto APIs // #ifndef OEMCRYPTO_KEY_MOCK_H_ #define OEMCRYPTO_KEY_MOCK_H_ #include #include #include namespace wvoec_mock { const uint32_t kControlObserveDataPath = (1<<31); const uint32_t kControlObserveHDCP = (1<<30); const uint32_t kControlObserveCGMS = (1<<29); const uint32_t kControlReplayMask = (0x03<<13); const uint32_t kControlNonceRequired = (0x01<<13); const uint32_t kControlNonceOrEntry = (0x02<<13); const uint32_t kControlHDCPVersionShift = 9; const uint32_t kControlHDCPVersionMask = (0x0F<& key_control_string); ~KeyControlBlock() {} bool Validate(); void Invalidate() { valid_ = false; } bool valid() const { return valid_; } uint32_t duration() const { return duration_; } void set_duration(uint32_t duration) { duration_ = duration; } uint32_t nonce() const { return nonce_; } uint32_t verification() const { return verification_; } uint32_t control_bits() const { return control_bits_; } private: uint32_t ExtractField(const std::vector& str, int idx); bool valid_; uint32_t verification_; uint32_t duration_; uint32_t nonce_; uint32_t control_bits_; }; // AES-128 crypto key, or HMAC signing key. class Key { public: Key(const Key& key) : value_(key.value_), control_(key.control_) {} Key(const std::vector& key_string, const KeyControlBlock& control); virtual ~Key() {}; void UpdateDuration(const KeyControlBlock& control); const std::vector& value() const { return value_; } const KeyControlBlock& control() const { return control_; } private: std::vector value_; KeyControlBlock control_; }; }; // namespace wvoec_eng #endif