Added CDM support for production readiness reporting.

[ Merge of http://go/wvgerrit/151518 ]

Extended the CDM layer to report OEMCrypto's production readiness
via string property query.

If OEMCrypto implementents OEMCrypto_ProductionReady(), then the
reported readiness by the CDM will report "True" or "False".

If OEMCrypto does not implement OEMCrypto_ProductionReady() then no
level of readiness is assumed, and the CDM will report "Unknown".

Bug: 231655151
Test: run_prov30_tests and request_license_test
Change-Id: I6afe481ef00ac129d02b004eca89a65810bfbff8
This commit is contained in:
Alex Dale
2022-05-05 20:48:04 -07:00
parent c4a2a08ee6
commit cd5afa88a6
13 changed files with 112 additions and 10 deletions

View File

@@ -221,6 +221,11 @@ class CryptoSession {
RequestedSecurityLevel requested_security_level,
CdmWatermarkingSupport* support);
virtual bool GetProductionReadiness(CdmProductionReadiness* readiness);
virtual bool GetProductionReadiness(
RequestedSecurityLevel requested_security_level,
CdmProductionReadiness* readiness);
virtual bool GetMaximumUsageTableEntries(
RequestedSecurityLevel security_level, size_t* number_of_entries);

View File

@@ -72,6 +72,7 @@ OEMCryptoResult OEMCrypto_GetOEMPublicCertificate(uint8_t* public_cert,
RequestedSecurityLevel level);
OEMCrypto_WatermarkingSupport OEMCrypto_GetWatermarkingSupport(
RequestedSecurityLevel level);
OEMCryptoResult OEMCrypto_ProductionReady(RequestedSecurityLevel level);
} // namespace wvcdm
/* The following functions are deprecated in OEMCrypto v13. They are defined

View File

@@ -111,6 +111,7 @@ static const std::string QUERY_KEY_ANALOG_OUTPUT_CAPABILITIES =
static const std::string QUERY_KEY_CAN_DISABLE_ANALOG_OUTPUT =
"CanDisableAnalogOutput";
static const std::string QUERY_KEY_WATERMARKING_SUPPORT = "WatermarkingSupport";
static const std::string QUERY_KEY_PRODUCTION_READY = "ProductionReady";
static const std::string QUERY_VALUE_TRUE = "True";
static const std::string QUERY_VALUE_FALSE = "False";

View File

@@ -599,6 +599,12 @@ enum CdmWatermarkingSupport : int32_t {
kWatermarkingAlwaysOn
};
enum CdmProductionReadiness : int32_t {
kProductionReadinessUnknown,
kProductionReadinessTrue,
kProductionReadinessFalse,
};
class CdmKeyAllowedUsage {
public:
CdmKeyAllowedUsage() { Clear(); }
@@ -842,6 +848,7 @@ const char* CdmUsageEntryStorageTypeToString(CdmUsageEntryStorageType type);
const char* RequestedSecurityLevelToString(
RequestedSecurityLevel security_level);
const char* CdmWatermarkingSupportToString(CdmWatermarkingSupport support);
const char* CdmProductionReadinessToString(CdmProductionReadiness readiness);
// Converts a generic, unknown enum value to a string representation
// containing its numeric value.
// The pointer returned from this function is thread_local.