Update to support OEMCrypto v16 with ODK
This commit is contained in:
54
common/output_protection_util.cc
Normal file
54
common/output_protection_util.cc
Normal file
@@ -0,0 +1,54 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright 2019 Google LLC.
|
||||
//
|
||||
// This software is licensed under the terms defined in the Widevine Master
|
||||
// License Agreement. For a copy of this agreement, please contact
|
||||
// widevine-licensing@google.com.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "common/output_protection_util.h"
|
||||
|
||||
namespace widevine {
|
||||
namespace op_util {
|
||||
|
||||
Status VerifyDeviceCapabilities(
|
||||
const ClientIdentification::ClientCapabilities& device_capabilities,
|
||||
const License::KeyContainer::OutputProtection& output_protection,
|
||||
bool* should_disable_analog_output) {
|
||||
bool device_has_analog_output =
|
||||
device_capabilities.analog_output_capabilities() !=
|
||||
ClientIdentification::ClientCapabilities::ANALOG_OUTPUT_NONE &&
|
||||
device_capabilities.analog_output_capabilities() !=
|
||||
ClientIdentification::ClientCapabilities::ANALOG_OUTPUT_UNKNOWN;
|
||||
|
||||
if (should_disable_analog_output != nullptr) {
|
||||
*should_disable_analog_output = false;
|
||||
}
|
||||
if (device_has_analog_output) {
|
||||
if (output_protection.disable_analog_output() &&
|
||||
!device_capabilities.can_disable_analog_output()) {
|
||||
return Status(error::PERMISSION_DENIED,
|
||||
"Analog out cannot be disabled on this device.");
|
||||
}
|
||||
if (output_protection.cgms_flags() !=
|
||||
License::KeyContainer::OutputProtection::CGMS_NONE) {
|
||||
if (device_capabilities.analog_output_capabilities() !=
|
||||
ClientIdentification::ClientCapabilities::
|
||||
ANALOG_OUTPUT_SUPPORTS_CGMS_A) {
|
||||
if (!device_capabilities.can_disable_analog_output()) {
|
||||
return Status(
|
||||
error::PERMISSION_DENIED,
|
||||
"Analog out cannot be disabled on this device, no CGMS.");
|
||||
}
|
||||
// This device does not have support for CGMS protections.
|
||||
if (should_disable_analog_output != nullptr) {
|
||||
*should_disable_analog_output = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return OkStatus();
|
||||
}
|
||||
|
||||
} // namespace op_util
|
||||
} // namespace widevine
|
||||
Reference in New Issue
Block a user