Source release v2.1.2-0-773 + third_party libs
Change-Id: Ia07608577b65b301c22a8ff4bf7f743c2d3f9274
This commit is contained in:
@@ -1837,7 +1837,7 @@ class DISABLED_TestKeybox : public OEMCryptoClientTest {
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(DISABLED_TestKeybox, CheckSystemID) {
|
||||
TEST_F(OEMCryptoClientTest, DISABLED_CheckSystemID) {
|
||||
OEMCryptoResult sts;
|
||||
uint8_t key_data[256];
|
||||
size_t key_data_len = sizeof(key_data);
|
||||
@@ -1884,6 +1884,7 @@ TEST_F(DISABLED_TestKeybox, BadCRCKeybox) {
|
||||
InstallKeybox(keybox, false);
|
||||
sts = OEMCrypto_IsKeyboxValid();
|
||||
ASSERT_EQ(OEMCrypto_ERROR_BAD_CRC, sts);
|
||||
InstallKeybox(kDefaultKeybox, true);
|
||||
}
|
||||
|
||||
TEST_F(DISABLED_TestKeybox, BadMagicKeybox) {
|
||||
@@ -1893,6 +1894,7 @@ TEST_F(DISABLED_TestKeybox, BadMagicKeybox) {
|
||||
InstallKeybox(keybox, false);
|
||||
sts = OEMCrypto_IsKeyboxValid();
|
||||
ASSERT_EQ(OEMCrypto_ERROR_BAD_MAGIC, sts);
|
||||
InstallKeybox(kDefaultKeybox, true);
|
||||
}
|
||||
|
||||
TEST_F(DISABLED_TestKeybox, BadDataKeybox) {
|
||||
@@ -1902,6 +1904,7 @@ TEST_F(DISABLED_TestKeybox, BadDataKeybox) {
|
||||
InstallKeybox(keybox, false);
|
||||
sts = OEMCrypto_IsKeyboxValid();
|
||||
ASSERT_EQ(OEMCrypto_ERROR_BAD_CRC, sts);
|
||||
InstallKeybox(kDefaultKeybox, true);
|
||||
}
|
||||
|
||||
TEST_F(DISABLED_TestKeybox, GenerateSignature) {
|
||||
@@ -2148,6 +2151,30 @@ TEST_F(DISABLED_TestKeybox, LoadKeyWithBadNonce) {
|
||||
ASSERT_NE(OEMCrypto_SUCCESS, sts);
|
||||
}
|
||||
|
||||
TEST_F(DISABLED_TestKeybox, LoadKeyWithRepeatNonce) {
|
||||
InstallKeybox(kDefaultKeybox, true);
|
||||
Session s;
|
||||
s.open();
|
||||
s.GenerateDerivedKeys();
|
||||
uint32_t nonce = s.get_nonce();
|
||||
s.FillSimpleMessage(0, wvoec_mock::kControlNonceEnabled, nonce);
|
||||
s.EncryptAndSign();
|
||||
s.LoadTestKeys();
|
||||
s.close();
|
||||
|
||||
s.open();
|
||||
s.GenerateDerivedKeys();
|
||||
s.FillSimpleMessage(0, wvoec_mock::kControlNonceEnabled,
|
||||
nonce); // same old nonce.
|
||||
s.EncryptAndSign();
|
||||
OEMCryptoResult sts = OEMCrypto_LoadKeys(
|
||||
s.session_id(), s.message_ptr(), sizeof(MessageData), &s.signature()[0],
|
||||
s.signature().size(), s.encrypted_license().mac_key_iv,
|
||||
s.encrypted_license().mac_keys, kNumKeys, s.key_array(), NULL, 0);
|
||||
|
||||
ASSERT_NE(OEMCrypto_SUCCESS, sts);
|
||||
}
|
||||
|
||||
TEST_F(DISABLED_TestKeybox, LoadKeyWithBadVerification) {
|
||||
InstallKeybox(kDefaultKeybox, true);
|
||||
Session s;
|
||||
@@ -4601,6 +4628,85 @@ TEST_P(DISABLED_UsageTableTest, EmptyTable) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(DISABLED_UsageTableTest, FiftyEntries) {
|
||||
if (OEMCrypto_SupportsUsageTable()) {
|
||||
ASSERT_EQ(OEMCrypto_SUCCESS, OEMCrypto_UpdateUsageTable());
|
||||
Session s1;
|
||||
s1.open();
|
||||
s1.GenerateDerivedKeys();
|
||||
std::string pst1 = "pst saved";
|
||||
s1.FillSimpleMessage(
|
||||
0, wvoec_mock::kControlNonceEnabled | wvoec_mock::kControlNonceRequired,
|
||||
s1.get_nonce(), pst1);
|
||||
s1.EncryptAndSign();
|
||||
s1.LoadTestKeys(pst1, new_mac_keys_);
|
||||
sleep(kShortSleep);
|
||||
|
||||
cout << "Making 49\n";
|
||||
const size_t ENTRY_COUNT = 49;// API says should hold at least 50 entries.
|
||||
Session sessions[ENTRY_COUNT];
|
||||
for (int i=0; i<ENTRY_COUNT; i++) {
|
||||
sessions[i].open();
|
||||
sessions[i].GenerateDerivedKeys();
|
||||
std::string pst = "pst ";
|
||||
char c = 'A' + i;
|
||||
pst = pst + c;
|
||||
sessions[i].FillSimpleMessage(
|
||||
0, wvoec_mock::kControlNonceEnabled | wvoec_mock::kControlNonceRequired,
|
||||
sessions[i].get_nonce(), pst);
|
||||
sessions[i].EncryptAndSign();
|
||||
sessions[i].LoadTestKeys(pst, new_mac_keys_);
|
||||
sessions[i].GenerateReport(pst);
|
||||
sessions[i].close();
|
||||
}
|
||||
cout << "Checking 49\n";
|
||||
for (int i=0; i<ENTRY_COUNT; i++) {
|
||||
Session s;
|
||||
s.open();
|
||||
std::string pst = "pst ";
|
||||
char c = 'A' + i;
|
||||
pst = pst + c;
|
||||
s.GenerateReport(pst, true, &sessions[i]);
|
||||
EXPECT_EQ(kUnused, s.pst_report()->status);
|
||||
s.close();
|
||||
}
|
||||
sleep(kShortSleep);
|
||||
cout << "Making another 49\n";
|
||||
// If I add too many entries, it can delete the older ones first, except
|
||||
// it shouldn't delete the one attached to an open session. (s1)
|
||||
for (int i=0; i<ENTRY_COUNT; i++) {
|
||||
sessions[i].open();
|
||||
sessions[i].GenerateDerivedKeys();
|
||||
std::string pst = "newer pst ";
|
||||
char c = 'A' + i;
|
||||
pst = pst + c;
|
||||
sessions[i].FillSimpleMessage(
|
||||
0, wvoec_mock::kControlNonceEnabled | wvoec_mock::kControlNonceRequired,
|
||||
sessions[i].get_nonce(), pst);
|
||||
sessions[i].EncryptAndSign();
|
||||
sessions[i].LoadTestKeys(pst, new_mac_keys_);
|
||||
sessions[i].GenerateReport(pst);
|
||||
sessions[i].close();
|
||||
}
|
||||
cout << "Checking another 49\n";
|
||||
for (int i=0; i<49; i++) {
|
||||
Session s;
|
||||
s.open();
|
||||
std::string pst = "newer pst ";
|
||||
char c = 'A' + i;
|
||||
pst = pst + c;
|
||||
s.GenerateReport(pst, true, &sessions[i]);
|
||||
EXPECT_EQ(kUnused, s.pst_report()->status);
|
||||
s.close();
|
||||
}
|
||||
s1.close();
|
||||
s1.open(); // Make sure s1's entry is still in the table.
|
||||
s1.GenerateReport(pst1);
|
||||
EXPECT_EQ(kUnused, s1.pst_report()->status);
|
||||
s1.close();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(DISABLED_UsageTableTest, DeleteUnusedEntry) {
|
||||
if (OEMCrypto_SupportsUsageTable()) {
|
||||
ASSERT_EQ(OEMCrypto_SUCCESS, OEMCrypto_UpdateUsageTable());
|
||||
@@ -4826,9 +4932,7 @@ TEST_P(DISABLED_UsageTableTest, GenericEncrypt) {
|
||||
wvoec_mock::kControlNonceRequired,
|
||||
nonce, pst);
|
||||
s.EncryptAndSign();
|
||||
printf("Getting ready to load keys.\n");
|
||||
s.LoadTestKeys(pst, new_mac_keys_);
|
||||
printf("done to load keys.\n");
|
||||
OEMCryptoResult sts;
|
||||
unsigned int key_index = 0;
|
||||
uint8_t expected_encrypted[kBufferSize];
|
||||
@@ -4842,7 +4946,6 @@ TEST_P(DISABLED_UsageTableTest, GenericEncrypt) {
|
||||
encrypted);
|
||||
ASSERT_EQ(OEMCrypto_SUCCESS, sts);
|
||||
EXPECT_EQ(0, memcmp(encrypted, expected_encrypted, kBufferSize));
|
||||
printf("doing the generate report");
|
||||
s.GenerateReport(pst);
|
||||
EXPECT_EQ(kActive, s.pst_report()->status);
|
||||
EXPECT_ALMOST(
|
||||
@@ -5164,21 +5267,24 @@ TEST_P(DISABLED_UsageTableTest, TimingTest) {
|
||||
Session s1;
|
||||
Session s2;
|
||||
Session s3;
|
||||
time_t loaded = time(NULL);
|
||||
LoadOfflineLicense(s1, pst1);
|
||||
time_t loaded1 = time(NULL);
|
||||
LoadOfflineLicense(s2, pst2);
|
||||
time_t loaded2 = time(NULL);
|
||||
LoadOfflineLicense(s3, pst3);
|
||||
time_t loaded3 = time(NULL);
|
||||
|
||||
sleep(kLongSleep);
|
||||
time_t first_decrypt = time(NULL);
|
||||
s1.open();
|
||||
s1.GenerateDerivedKeys();
|
||||
s1.LoadTestKeys(pst1, new_mac_keys_);
|
||||
time_t first_decrypt1 = time(NULL);
|
||||
s1.TestDecryptCTR();
|
||||
|
||||
s2.open();
|
||||
s2.GenerateDerivedKeys();
|
||||
s2.LoadTestKeys(pst2, new_mac_keys_);
|
||||
time_t first_decrypt2 = time(NULL);
|
||||
s2.TestDecryptCTR();
|
||||
|
||||
sleep(kLongSleep);
|
||||
@@ -5196,6 +5302,7 @@ TEST_P(DISABLED_UsageTableTest, TimingTest) {
|
||||
OEMCrypto_Terminate();
|
||||
sleep(kShortSleep);
|
||||
OEMCrypto_Initialize();
|
||||
InstallKeybox(kDefaultKeybox, true);
|
||||
|
||||
// After a reboot, we should be able to reload keys, and generate reports.
|
||||
sleep(kLongSleep);
|
||||
@@ -5210,34 +5317,36 @@ TEST_P(DISABLED_UsageTableTest, TimingTest) {
|
||||
s2.open();
|
||||
s3.open();
|
||||
sleep(kLongSleep);
|
||||
time_t report_generated = time(NULL);
|
||||
time_t report_generated1 = time(NULL);
|
||||
s1.GenerateReport(pst1);
|
||||
time_t report_generated2 = time(NULL);
|
||||
s2.GenerateReport(pst2);
|
||||
time_t report_generated3 = time(NULL);
|
||||
s3.GenerateReport(pst3);
|
||||
|
||||
EXPECT_EQ(kInactive, s1.pst_report()->status);
|
||||
EXPECT_ALMOST(
|
||||
report_generated - loaded,
|
||||
report_generated1 - loaded1,
|
||||
wvcdm::htonll64(s1.pst_report()->seconds_since_license_received));
|
||||
EXPECT_ALMOST(
|
||||
report_generated - first_decrypt,
|
||||
report_generated1 - first_decrypt1,
|
||||
wvcdm::htonll64(s1.pst_report()->seconds_since_first_decrypt));
|
||||
EXPECT_ALMOST(report_generated - second_decrypt,
|
||||
EXPECT_ALMOST(report_generated1 - second_decrypt,
|
||||
wvcdm::htonll64(s1.pst_report()->seconds_since_last_decrypt));
|
||||
|
||||
EXPECT_EQ(kActive, s2.pst_report()->status);
|
||||
EXPECT_ALMOST(
|
||||
report_generated - loaded,
|
||||
report_generated2 - loaded2,
|
||||
wvcdm::htonll64(s2.pst_report()->seconds_since_license_received));
|
||||
EXPECT_ALMOST(
|
||||
report_generated - first_decrypt,
|
||||
report_generated2 - first_decrypt2,
|
||||
wvcdm::htonll64(s2.pst_report()->seconds_since_first_decrypt));
|
||||
EXPECT_ALMOST(report_generated - third_decrypt,
|
||||
EXPECT_ALMOST(report_generated2 - third_decrypt,
|
||||
wvcdm::htonll64(s2.pst_report()->seconds_since_last_decrypt));
|
||||
|
||||
EXPECT_EQ(kUnused, s3.pst_report()->status);
|
||||
EXPECT_ALMOST(
|
||||
report_generated - loaded,
|
||||
report_generated3 - loaded3,
|
||||
wvcdm::htonll64(s3.pst_report()->seconds_since_license_received));
|
||||
// We don't expect first or last decrypt for unused report.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user