This CL merges the following changes from the Widevine repository: Avoid CdmSession reinitialization https://widevine-internal-review.googlesource.com/#/c/10530/ Fix timer-related unit tests. https://widevine-internal-review.googlesource.com/#/c/10510/ Correct return statement bug: 15590802 https://widevine-internal-review.googlesource.com/#/c/10553/ Usage reporting fixes bug/15388863 https://widevine-internal-review.googlesource.com/#/c/10460/ Make public methods virtual https://widevine-internal-review.googlesource.com/#/c/10500/ Fix the SetTimer contract in the CDM. https://widevine-internal-review.googlesource.com/#/c/10493/ Move inline CDM methods, add OVERRIDE. https://widevine-internal-review.googlesource.com/#/c/10475/ Simplify storage APIs related cleanup. https://widevine-internal-review.googlesource.com/#/c/10473/ Duration values are not correctly reported when queried b/15592374 https://widevine-internal-review.googlesource.com/#/c/10437/ Propagate IsKeyValid() through ContentDecryptionModule. https://widevine-internal-review.googlesource.com/#/c/10483/ Minor clean up in config_test_env. https://widevine-internal-review.googlesource.com/#/c/10440/ General clean up. https://widevine-internal-review.googlesource.com/#/c/10441/ Refactor HttpSocket and simplify UrlRequest interface. https://widevine-internal-review.googlesource.com/#/c/10410/ Install good keybox at end of unit tests b/15385981 https://widevine-internal-review.googlesource.com/#/c/10374/ Privacy crypto fixes b/15475012 https://widevine-internal-review.googlesource.com/#/c/10383/ Incorporate header files to resolve build issued based on customers feedback. https://widevine-internal-review.googlesource.com/#/c/10420/ Support unprovisioning b/12247651 https://widevine-internal-review.googlesource.com/#/c/10356/ Correct usage of Host::Allocate and Cdm::Decrypt. https://widevine-internal-review.googlesource.com/#/c/10378/ Fix logging bug, arguments in wrong order. https://widevine-internal-review.googlesource.com/#/c/10380/ Rename types that look like constants. https://widevine-internal-review.googlesource.com/#/c/10379/ Fix offline test failures b/13909635 https://widevine-internal-review.googlesource.com/#/c/10348/ Add -DUNIT_TEST to the unit test makefile for Android https://widevine-internal-review.googlesource.com/#/c/10375/ Refactor privacy-crypto and add dummy version. https://widevine-internal-review.googlesource.com/#/c/10353/ Remove References to Apiary https://widevine-internal-review.googlesource.com/#/c/9924/ Delete oldest entry in usage table when full bug: 15184824 https://widevine-internal-review.googlesource.com/#/c/10295/ Port DeviceFiles to iOS. https://widevine-internal-review.googlesource.com/#/c/10355/ Make testing functions in DeviceFiles private. https://widevine-internal-review.googlesource.com/#/c/10354/ Add RSA encryption to haystack https://widevine-internal-review.googlesource.com/#/c/10280/ Add string and vector includes to CDM header. https://widevine-internal-review.googlesource.com/#/c/10352/ First version of oemcrypto logging https://widevine-internal-review.googlesource.com/#/c/10252/ Update Names of Secure Stop Methods bug: 11987015 https://widevine-internal-review.googlesource.com/#/c/10152/ Adjust timing on the Usage Table unit test https://widevine-internal-review.googlesource.com/#/c/10307/ Fix all compiler warnings in CDM source release. https://widevine-internal-review.googlesource.com/#/c/10293/ Fix memset bug: args in wrong order https://widevine-internal-review.googlesource.com/#/c/10292/ Partial revert of 'Remove refs to test prov server, Level3 support...' https://widevine-internal-review.googlesource.com/#/c/10281/ Pack structure OEMCrypto_PST_Report https://widevine-internal-review.googlesource.com/#/c/10243/ Remove refs to test prov server, Level3 support; remove dead code https://widevine-internal-review.googlesource.com/#/c/10220/ Partial revert of 'Document data strings; clean up license server parameters.' https://widevine-internal-review.googlesource.com/#/c/10188/ Document data strings; clean up license server parameters. https://widevine-internal-review.googlesource.com/#/c/10120/ Fix broken build after partner branch merge. https://widevine-internal-review.googlesource.com/#/c/10181/ TODO Cleanup - core/src, core/include https://widevine-internal-review.googlesource.com/#/c/9965/ TODO Cleanup - cdm, chromium, core/test. https://widevine-internal-review.googlesource.com/#/c/9419/ Remove unneeded properties. https://widevine-internal-review.googlesource.com/#/c/10162/ Change-Id: If2bb9d743a562a3875bebb91933c0aaadea286b2
139 lines
4.7 KiB
C++
139 lines
4.7 KiB
C++
// Copyright 2014 Google Inc. All Rights Reserved.
|
|
|
|
#include "OEMCryptoCENC.h"
|
|
|
|
#include <string>
|
|
#include <gtest/gtest.h>
|
|
#include "log.h"
|
|
#include "oemcrypto_logging.h"
|
|
#include "oemcrypto_mock.cpp"
|
|
|
|
class OEMCryptoLoggingTest : public ::testing::Test {
|
|
protected:
|
|
OEMCryptoLoggingTest() {}
|
|
|
|
void SetUp() {
|
|
::testing::Test::SetUp();
|
|
ASSERT_EQ(OEMCrypto_SUCCESS, OEMCrypto_Initialize());
|
|
}
|
|
|
|
void TearDown() {
|
|
OEMCrypto_Terminate();
|
|
::testing::Test::TearDown();
|
|
}
|
|
};
|
|
|
|
TEST_F(OEMCryptoLoggingTest, TestDumpHexFunctions) {
|
|
uint8_t vector[] = { 0xFA, 0x11 , 0x28 , 0x33 };
|
|
std::string buffer = "";
|
|
wvoec_mock::dump_hex_helper(buffer, "name", vector, (size_t)4);
|
|
ASSERT_EQ(buffer, "name = \n wvcdm::a2b_hex(\"FA112833\");\n");
|
|
|
|
buffer = "";
|
|
uint8_t vector2[] = { 0xFA, 0x11 , 0x28 , 0x33 ,
|
|
0xFA, 0x11 , 0x28 , 0x33 , 0xFA, 0x11 ,
|
|
0x28 , 0x33 , 0xFA, 0x11 , 0x28 , 0x33 , 0xFA, 0x11 , 0x28 , 0x33 ,
|
|
0xFA, 0x11 , 0x28 , 0x33 , 0x01, 0x14 , 0x28 , 0xAB, 0xFA, 0xCD ,
|
|
0xEF , 0x67, 0x01, 0x14 , 0x28 , 0xAB, 0xFA, 0xCD , 0xEF , 0x67 };
|
|
wvoec_mock::dump_hex_helper(buffer, "name", vector2, (size_t)40);
|
|
|
|
ASSERT_EQ(buffer, "name = \n wvcdm::a2b_hex(\"FA112833FA112833FA112833F"
|
|
"A112833FA112833FA112833011428ABFACDEF67\"\n \""
|
|
"011428ABFACDEF67\");\n");
|
|
|
|
buffer = "";
|
|
wvoec_mock::dump_array_part_helper(buffer, "array",
|
|
(size_t) 5, "name", vector2, (size_t) 40);
|
|
char* exp = "std::string s5_name = \n wvcdm::a2b_hex(\"FA112833FA112833F"
|
|
"A112833FA112833FA112833FA112833011428ABFACDEF67\"\n "
|
|
" \"011428ABFACDEF67\");\narray[5].name = message_ptr + me"
|
|
"ssage.find(s5_name.data());\n";
|
|
ASSERT_EQ(buffer, exp);
|
|
|
|
buffer = "";
|
|
wvoec_mock::dump_array_part_helper(buffer, "array", (size_t) 5,
|
|
"name", NULL, (size_t) 40);
|
|
ASSERT_EQ(buffer, "array[5].name = NULL;\n");
|
|
}
|
|
|
|
TEST_F(OEMCryptoLoggingTest, TestChangeLoggingLevel) {
|
|
wvcdm::LogPriority default_logging_level = wvcdm::LOG_WARN;
|
|
wvoec_mock::SetLoggingLevel(1);
|
|
ASSERT_EQ(wvcdm::g_cutoff, default_logging_level);
|
|
|
|
wvoec_mock::SetLoggingLevel(2);
|
|
ASSERT_EQ(wvcdm::g_cutoff, wvcdm::LOG_INFO);
|
|
|
|
wvoec_mock::SetLoggingSettings(
|
|
wvcdm::LOG_WARN,
|
|
wvoec_mock::kLoggingDumpTraceAll);
|
|
ASSERT_EQ(wvcdm::g_cutoff, wvcdm::LOG_WARN);
|
|
ASSERT_EQ(wvoec_mock::LogCategoryEnabled(
|
|
wvoec_mock::kLoggingDumpTraceAll), true);
|
|
wvoec_mock::TurnOffLoggingForAllCategories();
|
|
|
|
wvoec_mock::SetLoggingLevel(wvcdm::LOG_VERBOSE);
|
|
ASSERT_EQ(wvcdm::g_cutoff, wvcdm::LOG_VERBOSE);
|
|
|
|
wvoec_mock::SetLoggingLevel(1);
|
|
}
|
|
|
|
namespace wvoec_mock {
|
|
TEST_F(OEMCryptoLoggingTest, TestChangeLoggingCategories) {
|
|
TurnOffLoggingForAllCategories();
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingTraceDecryption |
|
|
kLoggingTraceOEMCryptoCalls), false);
|
|
|
|
AddLoggingForCategories(kLoggingDumpKeyControlBlocks |
|
|
kLoggingDumpDerivedKeys);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingDumpKeyControlBlocks), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingTraceUsageTable), false);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingDumpTraceAll), true);
|
|
|
|
RemoveLoggingForCategories(kLoggingDumpKeyControlBlocks |
|
|
kLoggingTraceUsageTable);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingDumpKeyControlBlocks), false);
|
|
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingDumpDerivedKeys), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingTraceUsageTable), false);
|
|
|
|
TurnOffLoggingForAllCategories();
|
|
bool flag = false;
|
|
if (LogCategoryEnabled(kLoggingTraceUsageTable)) {
|
|
flag = true;
|
|
}
|
|
ASSERT_EQ(flag, false);
|
|
|
|
AddLoggingForCategories(kLoggingDumpTraceAll);
|
|
if (LogCategoryEnabled(kLoggingDumpKeyControlBlocks)) {
|
|
flag = true;
|
|
}
|
|
ASSERT_EQ(flag, true);
|
|
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingTraceOEMCryptoCalls), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingDumpContentKeys), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingDumpKeyControlBlocks), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingDumpDerivedKeys), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingTraceNonce), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingTraceDecryption), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingTraceUsageTable), true);
|
|
ASSERT_EQ(LogCategoryEnabled(kLoggingDumpTraceAll), true);
|
|
|
|
flag= false;
|
|
RemoveLoggingForCategories(kLoggingDumpKeyControlBlocks);
|
|
if ( LogCategoryEnabled(kLoggingDumpKeyControlBlocks) ) {
|
|
flag = true;
|
|
}
|
|
ASSERT_EQ(flag, false);
|
|
}
|
|
|
|
} // namespace wvoec_mock
|
|
|
|
int main(int argc, char** argv) {
|
|
::testing::InitGoogleTest(&argc, argv);
|
|
wvcdm::InitLogging(argc, argv);
|
|
|
|
return RUN_ALL_TESTS();
|
|
}
|
|
|