Separate OEM unprovisioning from DRM unprovisioing.

[ Cherry-pick of v19 http://go/wvgerrit/219330 ]
[ Merge of http://go/wvgerrit/219454 ]

For two-staged provisioning devices, the behavior of
CdmEngine::Unprovision() varied by platform and context.
For production Android, unprovisioning would remove both;
for production and testing CE CDM it would only remove
DRM provisioning; for testing Android may remove both or
remove everything (both certs and licenses).

This behavior was not documented, making use of the
CdmEngine::Unprovision() API rather unpredictable.

This change attempts to document the unpredictable behavior
and add a way to explicitly remove the OEM certificate
in the core code.

The new CdmEngine::UnprovisionOemCert() will remove only
the OEM certificate.

Bug: 391469176
Test: run_x86_64_tests
Test: WvTs on oriole
Change-Id: Ib2f6ef61f45b5320c71d7e8e8460f7fe8e0e2248
This commit is contained in:
Alex Dale
2025-04-21 16:55:19 -07:00
parent b0fa978058
commit daf291955f
4 changed files with 96 additions and 17 deletions

View File

@@ -212,6 +212,15 @@ class CdmEngine {
// system. This will force the device to reprovision itself.
virtual CdmResponseType Unprovision(CdmSecurityLevel security_level);
// Remove the system's REE-side OEM certificate for the specified
// |security_level|.
// Only effects two-stage provisioning devices which have an OEM cert
// in the REE side file system.
// Removing the OEM certificate will cause all DRM certificates tied to
// the OEM certificate to be invalidated and unloadable to future
// sessions.
virtual CdmResponseType UnprovisionOemCert(CdmSecurityLevel security_level);
// Return the list of key_set_ids stored on the current (origin-specific)
// file system.
virtual CdmResponseType ListStoredLicenses(