This has the released version of the OEMCrypto API v14 documentation. This patch also includes sample code and unit tests.
120 lines
4.3 KiB
C++
120 lines
4.3 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, 4u);
|
|
ASSERT_EQ("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,
|
|
};
|
|
|
|
buffer.clear(); // dump_hex_helper appends to buffer
|
|
wvoec_mock::dump_hex_helper(buffer, "name", vector2, 40u);
|
|
ASSERT_EQ(
|
|
"name = \n "
|
|
"wvcdm::a2b_hex("
|
|
"\"FA112833FA112833FA112833FA112833FA112833FA112833011428ABFACDEF67\"\n "
|
|
" \"011428ABFACDEF67\");\n",
|
|
buffer);
|
|
|
|
buffer.clear(); // dump_hex_helper appends to buffer
|
|
wvoec_mock::dump_array_part_helper(buffer, "array", 5u, "name", vector2, 40u);
|
|
ASSERT_EQ(
|
|
"std::string s5_name = \n "
|
|
"wvcdm::a2b_hex("
|
|
"\"FA112833FA112833FA112833FA112833FA112833FA112833011428ABFACDEF67\"\n "
|
|
" \"011428ABFACDEF67\");\narray[5].name = message_ptr + "
|
|
"message.find(s5_name.data());\n",
|
|
buffer);
|
|
|
|
buffer.clear(); // dump_hex_helper appends to buffer
|
|
wvoec_mock::dump_array_part_helper(buffer, "array", 5u, "name", NULL, 40u);
|
|
ASSERT_EQ("array[5].name = NULL;\n", buffer);
|
|
}
|
|
|
|
TEST_F(OEMCryptoLoggingTest, TestChangeLoggingLevel) {
|
|
wvoec_mock::SetLoggingLevel(wvcdm::LOG_WARN);
|
|
ASSERT_EQ(wvcdm::LOG_WARN, wvcdm::g_cutoff);
|
|
|
|
wvoec_mock::SetLoggingLevel(wvcdm::LOG_INFO);
|
|
ASSERT_EQ(wvcdm::LOG_INFO, wvcdm::g_cutoff);
|
|
|
|
wvoec_mock::SetLoggingSettings(wvcdm::LOG_WARN,
|
|
wvoec_mock::kLoggingDumpTraceAll);
|
|
ASSERT_EQ(wvcdm::LOG_WARN, wvcdm::g_cutoff);
|
|
ASSERT_TRUE(wvoec_mock::LogCategoryEnabled(wvoec_mock::kLoggingDumpTraceAll));
|
|
wvoec_mock::TurnOffLoggingForAllCategories();
|
|
|
|
wvoec_mock::SetLoggingLevel(wvcdm::LOG_VERBOSE);
|
|
ASSERT_EQ(wvcdm::LOG_VERBOSE, wvcdm::g_cutoff);
|
|
|
|
wvoec_mock::SetLoggingLevel(wvcdm::LOG_WARN);
|
|
}
|
|
|
|
TEST_F(OEMCryptoLoggingTest, TestChangeLoggingCategories) {
|
|
using namespace wvoec_mock;
|
|
TurnOffLoggingForAllCategories();
|
|
ASSERT_FALSE(LogCategoryEnabled(kLoggingTraceDecryption |
|
|
kLoggingTraceOEMCryptoCalls));
|
|
|
|
AddLoggingForCategories(kLoggingDumpKeyControlBlocks |
|
|
kLoggingDumpDerivedKeys);
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingDumpKeyControlBlocks));
|
|
ASSERT_FALSE(LogCategoryEnabled(kLoggingTraceUsageTable));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingDumpTraceAll));
|
|
|
|
RemoveLoggingForCategories(kLoggingDumpKeyControlBlocks |
|
|
kLoggingTraceUsageTable);
|
|
ASSERT_FALSE(LogCategoryEnabled(kLoggingDumpKeyControlBlocks));
|
|
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingDumpDerivedKeys));
|
|
ASSERT_FALSE(LogCategoryEnabled(kLoggingTraceUsageTable));
|
|
|
|
TurnOffLoggingForAllCategories();
|
|
ASSERT_FALSE(LogCategoryEnabled(kLoggingTraceUsageTable));
|
|
|
|
AddLoggingForCategories(kLoggingDumpTraceAll);
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingDumpKeyControlBlocks));
|
|
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingTraceOEMCryptoCalls));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingDumpContentKeys));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingDumpKeyControlBlocks));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingDumpDerivedKeys));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingTraceNonce));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingTraceDecryption));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingTraceUsageTable));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingTraceDecryptCalls));
|
|
ASSERT_TRUE(LogCategoryEnabled(kLoggingDumpTraceAll));
|
|
|
|
RemoveLoggingForCategories(kLoggingDumpKeyControlBlocks);
|
|
ASSERT_FALSE(LogCategoryEnabled(kLoggingDumpKeyControlBlocks));
|
|
}
|