86 lines
3.0 KiB
C++
86 lines
3.0 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
// Copyright 2019 Google LLC.
|
|
//
|
|
// This software is licensed under the terms defined in the Widevine Master
|
|
// License Agreement. For a copy of this agreement, please contact
|
|
// widevine-licensing@google.com.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Description:
|
|
// Unit tests for the rot_id_util helper methods.
|
|
|
|
#include "common/rot_id_util.h"
|
|
|
|
#include "testing/gmock.h"
|
|
#include "testing/gunit.h"
|
|
#include "absl/strings/escaping.h"
|
|
|
|
namespace {
|
|
constexpr char kFakeEncryptedId[] = "fake encrypted id";
|
|
constexpr char kFakeUniqueIdHash[] = "fake unique_id hash";
|
|
|
|
constexpr char kFakeUniqueId[] = "fake unique_id";
|
|
constexpr char kFakeSecretSalt[] = "fake secret salt";
|
|
|
|
// This is the ROT ID Hash generated from the fake values.
|
|
constexpr char kRotIdHashHex[] =
|
|
"0a757dde0f1080b60f34bf8e46af573ce987b5ed1c831b44952e2feed5243a95";
|
|
// This is the unique id hash generated from the fake unique id value.
|
|
constexpr char kUniqueIdHashHex[] =
|
|
"da20922e84b48e52223496f44b07632a4db19d488cd71cf813de300b9d244e06";
|
|
|
|
constexpr uint32_t kFakeSystemId = 1234;
|
|
constexpr uint32_t kOtherFakeSystemId = 9876;
|
|
|
|
} // anonymous namespace
|
|
|
|
namespace widevine {
|
|
|
|
TEST(RotIdUtilTest, IsRotIdRevokedMatches) {
|
|
ASSERT_TRUE(IsRotIdRevoked<std::vector<std::string>>(
|
|
kFakeEncryptedId, kFakeSystemId, absl::HexStringToBytes(kRotIdHashHex),
|
|
{"NO MATCH UNIQUE ID HASH 1", kFakeUniqueIdHash}));
|
|
}
|
|
|
|
TEST(RotIdUtilTest, IsRotIdRevokedNoMatchSystemId) {
|
|
ASSERT_FALSE(IsRotIdRevoked<std::vector<std::string>>(
|
|
kFakeEncryptedId, kOtherFakeSystemId,
|
|
absl::HexStringToBytes(kRotIdHashHex),
|
|
{"NO MATCH UNIQUE ID HASH 1", kFakeUniqueIdHash}));
|
|
}
|
|
|
|
TEST(RotIdUtilTest, IsRotIdRevokedNoMatch) {
|
|
ASSERT_FALSE(IsRotIdRevoked<std::vector<std::string>>(
|
|
kFakeEncryptedId, kFakeSystemId, kFakeUniqueIdHash,
|
|
{"NO MATCH UNIQUE ID HASH 1", "NO MATCH UNIQUE ID HASH 2"}));
|
|
}
|
|
|
|
TEST(RotIdUtilTest, IsRotIdRevokedEmptyList) {
|
|
ASSERT_FALSE(IsRotIdRevoked<std::vector<std::string>>(
|
|
kFakeEncryptedId, kFakeSystemId, kFakeUniqueIdHash,
|
|
{/* Intentionally empty vector */}));
|
|
}
|
|
|
|
// This test really only ensures the stability of the implementation. If the
|
|
// hash ever changes, then it will introduce problems into the ecosystem.
|
|
TEST(RotIdUtilTest, GenerateRotIdHashSuccess) {
|
|
ASSERT_EQ(
|
|
absl::HexStringToBytes(kRotIdHashHex),
|
|
GenerateRotIdHash(kFakeEncryptedId, kFakeSystemId, kFakeUniqueIdHash));
|
|
}
|
|
|
|
// This test really only ensures the stability of the GenerateUniqueIdHash
|
|
// implementation. If the hash ever changes, then it will introduce problems
|
|
// into the ecosystem.
|
|
TEST(RotIdUtilTest, GenerateUniqueIdHashSuccess) {
|
|
ASSERT_EQ(absl::HexStringToBytes(kUniqueIdHashHex),
|
|
GenerateUniqueIdHash(kFakeUniqueId, kFakeSecretSalt));
|
|
}
|
|
|
|
TEST(RotIdUtilTest, GenerateUniqueIdHashEmptyValues) {
|
|
ASSERT_EQ("", GenerateUniqueIdHash(kFakeUniqueId, ""));
|
|
ASSERT_EQ("", GenerateUniqueIdHash("", kFakeSecretSalt));
|
|
}
|
|
|
|
} // namespace widevine
|