Return null system ID for built-in DRM cert devices.
[ Merge of http://go/wvgerrit/153489 ] OEMCrypto does not provide an API for retrieving the system ID when the TEE uses a built-in DRM certificate (provisioning 1.0). New OEMs and Android devices do not use prov 1.0; however, the Zimperium CDM (at least the tests) use a built-in certificate and are failing certain tests because of the missing system ID. To address this failure; the CDM SystemIdExtractor has been updated to return a null system ID. Bug: 235879962 Test: system_id_extractor_unittest Change-Id: Ib4c2bd75a7825967b0aa9e31e144184ae18fe8fb
This commit is contained in:
@@ -60,8 +60,12 @@ bool SystemIdExtractor::ExtractSystemId(uint32_t* system_id) {
|
|||||||
bool success = false;
|
bool success = false;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case kClientTokenDrmCert:
|
case kClientTokenDrmCert:
|
||||||
LOGE("Cannot get a system ID from a DRM certificate");
|
LOGW(
|
||||||
return false;
|
"Cannot get a system ID from a DRM certificate, "
|
||||||
|
"using null system ID: security_level = %s",
|
||||||
|
RequestedSecurityLevelToString(security_level_));
|
||||||
|
*system_id = NULL_SYSTEM_ID;
|
||||||
|
return true;
|
||||||
case kClientTokenKeybox:
|
case kClientTokenKeybox:
|
||||||
success = ExtractSystemIdProv20(system_id);
|
success = ExtractSystemIdProv20(system_id);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -390,13 +390,22 @@ TEST_F(SystemIdExtractorTest, GetProvisioningMethod_Failed) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(SystemIdExtractorTest, GetProvisioningMethod_Unsupported) {
|
TEST_F(SystemIdExtractorTest, GetProvisioningMethod_Unsupported) {
|
||||||
ExpectProvisioningType(kClientTokenDrmCert);
|
ExpectProvisioningType(static_cast<CdmClientTokenType>(9999));
|
||||||
auto extractor = CreateExtractor(kLevelDefault);
|
auto extractor = CreateExtractor(kLevelDefault);
|
||||||
ASSERT_TRUE(extractor);
|
ASSERT_TRUE(extractor);
|
||||||
uint32_t system_id;
|
uint32_t system_id;
|
||||||
EXPECT_FALSE(extractor->ExtractSystemId(&system_id));
|
EXPECT_FALSE(extractor->ExtractSystemId(&system_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(SystemIdExtractorTest, DrmCertDevice_NullSystemId) {
|
||||||
|
ExpectProvisioningType(kClientTokenDrmCert);
|
||||||
|
auto extractor = CreateExtractor(kLevelDefault);
|
||||||
|
ASSERT_TRUE(extractor);
|
||||||
|
uint32_t system_id;
|
||||||
|
EXPECT_TRUE(extractor->ExtractSystemId(&system_id));
|
||||||
|
EXPECT_EQ(system_id, NULL_SYSTEM_ID);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(SystemIdExtractorTest, KeyboxDevice_Success) {
|
TEST_F(SystemIdExtractorTest, KeyboxDevice_Success) {
|
||||||
ExpectProvisioningType(kClientTokenKeybox);
|
ExpectProvisioningType(kClientTokenKeybox);
|
||||||
EXPECT_CALL(*crypto_session_, GetTokenFromKeybox(kLevelDefault, NotNull()))
|
EXPECT_CALL(*crypto_session_, GetTokenFromKeybox(kLevelDefault, NotNull()))
|
||||||
|
|||||||
Reference in New Issue
Block a user