From 469c17777e8d5ced2036c528a7b70f0f831ce68e Mon Sep 17 00:00:00 2001 From: Fred Gylys-Colwell Date: Mon, 9 Mar 2020 20:40:15 -0700 Subject: [PATCH] Match usage entry to header Merge from Widevine repo of http://go/wvgerrit/95463 In the unit tests ReloadUsageTableWithSkew, we load a header that has a generation number off by 1. This is allowed. However, we then try to load the current entry, which is newer than the header. Instead, we should try to load the entry that went with the header. Bug: 139828114 Test: Ran unit tests Change-Id: I87261501d8ee2b91a07c2b5dff17fc0ea950244d --- .../oemcrypto/test/oemcrypto_test.cpp | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp b/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp index 0f86912e..4d611e30 100644 --- a/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp +++ b/libwvdrmengine/oemcrypto/test/oemcrypto_test.cpp @@ -1694,15 +1694,15 @@ class OEMCryptoSessionTestDecryptWithHDCP : public OEMCryptoSessionTests, // reported if OEMCrypto_WARNING_MIXED_OUTPUT_PROTECTION is expected. ASSERT_NO_FATAL_FAILURE( s.TestDecryptCTR(true, OEMCrypto_WARNING_MIXED_OUTPUT_PROTECTION)) - << "Failed when current HDCP = " << HDCPCapabilityAsString(current) - << ", maximum HDCP = " << HDCPCapabilityAsString(maximum) - << ", license HDCP = " << HDCPCapabilityAsString(version); + << "Failed when current HDCP = " << HDCPCapabilityAsString(current) + << ", maximum HDCP = " << HDCPCapabilityAsString(maximum) + << ", license HDCP = " << HDCPCapabilityAsString(version); } else { ASSERT_NO_FATAL_FAILURE( s.TestDecryptCTR(true, OEMCrypto_ERROR_INSUFFICIENT_HDCP)) - << "Failed when current HDCP = " << HDCPCapabilityAsString(current) - << ", maximum HDCP = " << HDCPCapabilityAsString(maximum) - << ", license HDCP = " << HDCPCapabilityAsString(version); + << "Failed when current HDCP = " << HDCPCapabilityAsString(current) + << ", maximum HDCP = " << HDCPCapabilityAsString(maximum) + << ", license HDCP = " << HDCPCapabilityAsString(version); } } else { ASSERT_NO_FATAL_FAILURE(s.TestDecryptCTR(true, OEMCrypto_SUCCESS)) @@ -2804,7 +2804,8 @@ TEST_F(OEMCryptoLoadsCertificate, CertificateProvisionBadRSAKey) { // Test that RewrapDeviceRSAKey verifies the RSA key is valid. // TODO(b/144186970): This test should also run on Prov 3.0 devices. -TEST_F(OEMCryptoLoadsCertificate, CertificateProvisionBadRSAKeyKeyboxTestAPI16) { +TEST_F(OEMCryptoLoadsCertificate, + CertificateProvisionBadRSAKeyKeyboxTestAPI16) { Session s; ProvisioningRoundTrip provisioning_messages(&s, encoded_rsa_key_); provisioning_messages.PrepareSession(keybox_); @@ -5940,6 +5941,7 @@ TEST_P(OEMCryptoUsageTableTest, ReloadUsageTableWithSkew) { vector old_usage_header_2_ = encrypted_usage_header_; ASSERT_NO_FATAL_FAILURE(s.UpdateUsageEntry(&encrypted_usage_header_)); vector old_usage_header_1_ = encrypted_usage_header_; + vector old_usage_entry_1 = s.encrypted_usage_entry(); ASSERT_NO_FATAL_FAILURE(s.UpdateUsageEntry(&encrypted_usage_header_)); ASSERT_NO_FATAL_FAILURE(s.close()); @@ -5985,12 +5987,12 @@ TEST_P(OEMCryptoUsageTableTest, ReloadUsageTableWithSkew) { ASSERT_EQ(OEMCrypto_WARNING_GENERATION_SKEW, OEMCrypto_LoadUsageTableHeader(old_usage_header_1_.data(), old_usage_header_1_.size())); - // Everything else should still work. Skew by 1 is just a warning. + // Everything else should still work. The old entry goes with the old header. ASSERT_NO_FATAL_FAILURE(s.open()); - ASSERT_EQ(OEMCrypto_WARNING_GENERATION_SKEW, + ASSERT_EQ(OEMCrypto_SUCCESS, OEMCrypto_LoadUsageEntry(s.session_id(), s.usage_entry_number(), - s.encrypted_usage_entry().data(), - s.encrypted_usage_entry().size())); + old_usage_entry_1.data(), + old_usage_entry_1.size())); ASSERT_NO_FATAL_FAILURE(InstallTestRSAKey(&s)); ASSERT_EQ(OEMCrypto_SUCCESS, entry.license_messages().LoadResponse()); }