This patch adds a suite of tests for OEMCrypto that verifying buffer overflow and off-by-one errors. The reference code has also been updated to pass these tests. The ODK library and the OEMCrypto API have not changed since the release of version 16.4.
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
// Copyright 2019 Google LLC. All Rights Reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine License
|
|
// Agreement.
|
|
//
|
|
// Clock - A fake clock just for running tests.
|
|
|
|
#include "clock.h"
|
|
|
|
#include <chrono>
|
|
|
|
#include "test_sleep.h"
|
|
|
|
namespace wvcdm {
|
|
|
|
namespace {
|
|
// A fake clock that only advances when TestSleep::Sleep is called.
|
|
class FakeClock : public wvcdm::TestSleep::CallBack {
|
|
public:
|
|
FakeClock() {
|
|
auto now = std::chrono::steady_clock().now();
|
|
now_ = now.time_since_epoch() / std::chrono::milliseconds(1);
|
|
TestSleep::set_callback(this);
|
|
}
|
|
~FakeClock() { TestSleep::set_callback(nullptr); }
|
|
void ElapseTime(int64_t milliseconds) { now_ += milliseconds; }
|
|
|
|
int64_t now() const { return now_; }
|
|
|
|
private:
|
|
int64_t now_;
|
|
};
|
|
|
|
FakeClock* g_fake_clock = nullptr;
|
|
} // namespace
|
|
|
|
// On devices running a fake OEMCrypto, we can use a fake sleep and fake time.
|
|
int64_t Clock::GetCurrentTime() {
|
|
if (g_fake_clock == nullptr) g_fake_clock = new FakeClock();
|
|
return g_fake_clock->now() / 1000;
|
|
}
|
|
|
|
} // namespace wvcdm
|