| Index: chrome/nacl/nacl_validation_query_unittest.cc
|
| diff --git a/chrome/nacl/nacl_validation_query_unittest.cc b/chrome/nacl/nacl_validation_query_unittest.cc
|
| deleted file mode 100644
|
| index 511000d840114744ca79a0aeca3f685ceb883b90..0000000000000000000000000000000000000000
|
| --- a/chrome/nacl/nacl_validation_query_unittest.cc
|
| +++ /dev/null
|
| @@ -1,283 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/nacl/nacl_validation_db.h"
|
| -#include "chrome/nacl/nacl_validation_query.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -// This test makes sure that validation signature generation is performed
|
| -// correctly. In effect, this means that we are checking all of the data
|
| -// (and no other data) we are passing the signature generator affects the final
|
| -// signature. To avoid tying the tests to a particular implementation, each
|
| -// test generates two signatures and compares them rather than trying to compare
|
| -// against a specified signature.
|
| -
|
| -namespace {
|
| -
|
| -const char kKey[] = "bogus key for HMAC...";
|
| -const char kKeyAlt[] = "bogus key for HMAC!!!";
|
| -
|
| -const char kVersion[] = "bogus version";
|
| -const char kVersionAlt[] = "bogus!version";
|
| -
|
| -
|
| -const char kShortData[] = "Short data 1234567890";
|
| -const char kAltShortData[] = "Short!data 1234567890";
|
| -
|
| -const char kLongData[] = "Long data."
|
| - "1234567890123456789012345678901234567890123456789012345678901234567890"
|
| - "1234567890123456789012345678901234567890123456789012345678901234567890"
|
| - "1234567890123456789012345678901234567890123456789012345678901234567890"
|
| - "1234567890123456789012345678901234567890123456789012345678901234567890";
|
| -
|
| -class MockValidationDB : public NaClValidationDB {
|
| - public:
|
| - MockValidationDB()
|
| - : did_query_(false),
|
| - did_set_(false),
|
| - status_(true) {
|
| - }
|
| -
|
| - virtual bool QueryKnownToValidate(const std::string& signature) OVERRIDE {
|
| - // The typecast is needed to work around gtest trying to take the address
|
| - // of a constant.
|
| - EXPECT_EQ((int) NaClValidationQuery::kDigestLength,
|
| - (int) signature.length());
|
| - EXPECT_FALSE(did_query_);
|
| - EXPECT_FALSE(did_set_);
|
| - did_query_ = true;
|
| - memcpy(query_signature_, signature.data(),
|
| - NaClValidationQuery::kDigestLength);
|
| - return status_;
|
| - }
|
| -
|
| - virtual void SetKnownToValidate(const std::string& signature) OVERRIDE {
|
| - // The typecast is needed to work around gtest trying to take the address
|
| - // of a constant.
|
| - ASSERT_EQ((int) NaClValidationQuery::kDigestLength,
|
| - (int) signature.length());
|
| - EXPECT_TRUE(did_query_);
|
| - EXPECT_FALSE(did_set_);
|
| - did_set_ = true;
|
| - memcpy(set_signature_, signature.data(),
|
| - NaClValidationQuery::kDigestLength);
|
| - // Signatures should be the same.
|
| - EXPECT_EQ(0, memcmp(query_signature_, set_signature_,
|
| - NaClValidationQuery::kDigestLength));
|
| - }
|
| -
|
| - virtual bool ResolveFileToken(struct NaClFileToken* file_token, int32* fd,
|
| - std::string* path) OVERRIDE {
|
| - *fd = -1;
|
| - *path = "";
|
| - return false;
|
| - }
|
| -
|
| - bool did_query_;
|
| - bool did_set_;
|
| - bool status_;
|
| -
|
| - uint8 query_signature_[NaClValidationQuery::kDigestLength];
|
| - uint8 set_signature_[NaClValidationQuery::kDigestLength];
|
| -};
|
| -
|
| -class TestQuery {
|
| - public:
|
| - TestQuery(const char* key, const char* version) {
|
| - db.reset(new MockValidationDB());
|
| - context.reset(new NaClValidationQueryContext(db.get(), key, version));
|
| - query.reset(context->CreateQuery());
|
| - }
|
| -
|
| - scoped_ptr<MockValidationDB> db;
|
| - scoped_ptr<NaClValidationQueryContext> context;
|
| - scoped_ptr<NaClValidationQuery> query;
|
| -};
|
| -
|
| -class NaClValidationQueryTest : public ::testing::Test {
|
| - protected:
|
| - scoped_ptr<TestQuery> query1;
|
| - scoped_ptr<TestQuery> query2;
|
| -
|
| - virtual void SetUp() {
|
| - query1.reset(new TestQuery(kKey, kVersion));
|
| - query2.reset(new TestQuery(kKey, kVersion));
|
| - }
|
| -
|
| - void AssertQuerySame() {
|
| - ASSERT_TRUE(query1->db->did_query_);
|
| - ASSERT_TRUE(query2->db->did_query_);
|
| - ASSERT_EQ(0, memcmp(query1->db->query_signature_,
|
| - query2->db->query_signature_,
|
| - NaClValidationQuery::kDigestLength));
|
| - }
|
| -
|
| - void AssertQueryDifferent() {
|
| - ASSERT_TRUE(query1->db->did_query_);
|
| - ASSERT_TRUE(query2->db->did_query_);
|
| - ASSERT_NE(0, memcmp(query1->db->query_signature_,
|
| - query2->db->query_signature_,
|
| - NaClValidationQuery::kDigestLength));
|
| - }
|
| -};
|
| -
|
| -TEST_F(NaClValidationQueryTest, Sanity) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - ASSERT_FALSE(query1->db->did_query_);
|
| - ASSERT_FALSE(query1->db->did_set_);
|
| - ASSERT_EQ(1, query1->query->QueryKnownToValidate());
|
| - ASSERT_TRUE(query1->db->did_query_);
|
| - ASSERT_FALSE(query1->db->did_set_);
|
| - query1->query->SetKnownToValidate();
|
| - ASSERT_TRUE(query1->db->did_query_);
|
| - ASSERT_TRUE(query1->db->did_set_);
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, ConsistentShort) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQuerySame();
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, InconsistentShort) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kAltShortData, sizeof(kAltShortData));
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQueryDifferent();
|
| -}
|
| -
|
| -// Test for a bug caught during development where AddData would accidently
|
| -// overwrite previously written data and add uninitialzied memory to the hash.
|
| -TEST_F(NaClValidationQueryTest, ConsistentShortBug) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQuerySame();
|
| -}
|
| -
|
| -// Test for a bug caught during development where AddData would accidently
|
| -// overwrite previously written data and add uninitialzed memory to the hash.
|
| -TEST_F(NaClValidationQueryTest, InconsistentShortBug1) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kAltShortData, sizeof(kAltShortData));
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQueryDifferent();
|
| -}
|
| -
|
| -// Make sure we don't ignore the second bit of data.
|
| -TEST_F(NaClValidationQueryTest, InconsistentShort2) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->AddData(kAltShortData, sizeof(kAltShortData));
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQueryDifferent();
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, InconsistentZeroSizedAdd) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->AddData(kShortData, 0);
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQueryDifferent();
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, ConsistentZeroSizedAdd) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->AddData("a", 0);
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->AddData("b", 0);
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQuerySame();
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, ConsistentRepeatedShort) {
|
| - for (int i = 0; i < 30; i++) {
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - }
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - for (int i = 0; i < 30; i++) {
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - }
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQuerySame();
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, ConsistentLong) {
|
| - query1->query->AddData(kLongData, sizeof(kLongData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kLongData, sizeof(kLongData));
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQuerySame();
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, ConsistentRepeatedLong) {
|
| - for (int i = 0; i < 30; i++) {
|
| - query1->query->AddData(kLongData, sizeof(kLongData));
|
| - }
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - for (int i = 0; i < 30; i++) {
|
| - query2->query->AddData(kLongData, sizeof(kLongData));
|
| - }
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQuerySame();
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, PerturbKey) {
|
| - query2.reset(new TestQuery(kKeyAlt, kVersion));
|
| -
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQueryDifferent();
|
| -}
|
| -
|
| -TEST_F(NaClValidationQueryTest, PerturbVersion) {
|
| - query2.reset(new TestQuery(kKey, kVersionAlt));
|
| -
|
| - query1->query->AddData(kShortData, sizeof(kShortData));
|
| - query1->query->QueryKnownToValidate();
|
| -
|
| - query2->query->AddData(kShortData, sizeof(kShortData));
|
| - query2->query->QueryKnownToValidate();
|
| -
|
| - AssertQueryDifferent();
|
| -}
|
| -
|
| -}
|
|
|