Force a reprovisioning on device renewal

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

Device renewals used to require that OEMs remove provisioning
certificates as part of the OTA update process. Instead, a change
in system ID is relied upon to indicate a change in root of trust.
If a change in System ID is detected, reprovisioning will be forced.

This is not enabled for ATSC devices or L3 devices. For the latter a
change in system ID may occurs without a change in RoT.

Bug: 258361396
Test: GtsMediaTestCases
Change-Id: I6e8b0b2149fc2ed5362a32bb6e869826f5fa8ef7
This commit is contained in:
Rahul Frias
2023-03-30 10:57:05 -07:00
parent 0ab8f029a0
commit d31a4dec56
3 changed files with 196 additions and 8 deletions

View File

@@ -28,6 +28,7 @@ class CdmClientPropertySet;
class ServiceCertificate;
class WvCdmEventListener;
class CdmUsageTable;
class SystemIdExtractor;
class CdmSession {
public:
@@ -255,11 +256,14 @@ class CdmSession {
// true otherwise.
bool VerifyOfflineUsageEntry();
bool HasRootOfTrustBeenRenewed();
// These setters are for testing only. Takes ownership of the pointers.
void set_license_parser(CdmLicense* license_parser);
void set_crypto_session(CryptoSession* crypto_session);
void set_policy_engine(PolicyEngine* policy_engine);
void set_file_handle(DeviceFiles* file_handle);
void set_system_id_extractor(SystemIdExtractor* extractor);
// instance variables
std::shared_ptr<metrics::SessionMetrics> metrics_;
@@ -276,6 +280,7 @@ class CdmSession {
std::unique_ptr<CryptoSession> crypto_session_;
std::unique_ptr<PolicyEngine> policy_engine_;
std::unique_ptr<DeviceFiles> file_handle_;
std::unique_ptr<SystemIdExtractor> mock_system_id_extractor_;
bool license_received_;
bool is_offline_;
bool is_release_;