Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(813)

Unified Diff: base/signatures_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/signatures.cc ('k') | base/signaturevalidator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/signatures_unittest.cc
diff --git a/base/signatures_unittest.cc b/base/signatures_unittest.cc
deleted file mode 100644
index 8bb82ad3bf043597ab4785c8b717afd869f0fcf4..0000000000000000000000000000000000000000
--- a/base/signatures_unittest.cc
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2003-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-//
-// signatures_unittest.cpp
-//
-// Unittests for classes and functions related to crypto-hashes of buffers and
-// digital signatures of buffers.
-// TODO(omaha): There are a number of places inside the signatures code, where
-// empty vector iterators were being dereferenced. Ensure that all these are
-// being tested.
-
-#include <cstring>
-#include <vector>
-#include "omaha/base/app_util.h"
-#include "omaha/base/error.h"
-#include "omaha/base/module_utils.h"
-#include "omaha/base/path.h"
-#include "omaha/base/signatures.h"
-#include "omaha/base/utils.h"
-#include "omaha/testing/unit_test.h"
-
-namespace omaha {
-
-namespace {
-
-struct {
- char* binary;
- char* base64;
-} test_data[] = {
- "", "",
- "what", "d2hhdA==",
- "what will print out", "d2hhdCB3aWxsIHByaW50IG91dA==",
- "foobar", "Zm9vYmFy",
- "a man, a plan, a canal: panama!", "YSBtYW4sIGEgcGxhbiwgYSBjYW5hbDogcGFuYW1hIQ==", // NOLINT
-};
-
-// This test data from http://en.wikipedia.org/wiki/SHA-1:
-struct {
- char* binary;
- byte hash[20];
-} test_hash[] = {
- "The quick brown fox jumps over the lazy dog",
- 0x2f, 0xd4, 0xe1, 0xc6, 0x7a, 0x2d, 0x28, 0xfc, 0xed, 0x84,
- 0x9e, 0xe1, 0xbb, 0x76, 0xe7, 0x39, 0x1b, 0x93, 0xeb, 0x12,
- "The quick brown fox jumps over the lazy cog",
- 0xde, 0x9f, 0x2c, 0x7f, 0xd2, 0x5e, 0x1b, 0x3a, 0xfa, 0xd3,
- 0xe8, 0x5a, 0x0b, 0xd1, 0x7d, 0x9b, 0x10, 0x0d, 0xb4, 0xb3,
-};
-
-} // namespace
-
-TEST(SignaturesTest, Base64) {
- for (size_t i = 0; i != arraysize(test_data); i++) {
- std::vector<byte> buffer(strlen(test_data[i].binary));
- if (strlen(test_data[i].binary) != 0) {
- memcpy(&buffer.front(), test_data[i].binary, strlen(test_data[i].binary));
- }
- CStringA test_e;
- ASSERT_SUCCEEDED(Base64::Encode(buffer, &test_e));
- ASSERT_STREQ(test_e, test_data[i].base64);
- std::vector<byte> test_d;
- uint32 test_d_written = 0;
- ASSERT_SUCCEEDED(Base64::Decode(test_e, &test_d));
- ASSERT_EQ(test_d.size(), strlen(test_data[i].binary));
- if (strlen(test_data[i].binary) != 0) {
- ASSERT_EQ(0, memcmp(&test_d.front(),
- test_data[i].binary,
- strlen(test_data[i].binary)));
- }
- }
-}
-
-TEST(SignaturesTest, CryptoHash) {
- CryptoHash chash;
- for (size_t i = 0; i != arraysize(test_hash); i++) {
- std::vector<byte> buffer(strlen(test_hash[i].binary));
- memcpy(&buffer.front(), test_hash[i].binary, strlen(test_hash[i].binary));
- std::vector<byte> hash;
- ASSERT_SUCCEEDED(chash.Compute(buffer, &hash));
- ASSERT_EQ(hash.size(), CryptoHash::kHashSize);
- ASSERT_EQ(0, memcmp(&hash.front(),
- test_hash[i].hash,
- CryptoHash::kHashSize));
- ASSERT_SUCCEEDED(chash.Validate(buffer, hash));
- }
-}
-
-TEST(SignaturesTest, CreationVerification) {
- TCHAR module_directory[MAX_PATH] = {0};
- ASSERT_TRUE(GetModuleDirectory(NULL, module_directory));
- CString directory;
- directory.Format(_T("%s\\unittest_support"), module_directory);
-
- CString encoded_cert_with_private_key_path;
- encoded_cert_with_private_key_path.AppendFormat(
- _T("%s\\certificate-with-private-key.pfx"), directory);
- CString encoded_cert_without_private_key_path;
- encoded_cert_without_private_key_path.AppendFormat(
- _T("%s\\certificate-without-private-key.cer"), directory);
- CString raw_test_data_path;
- raw_test_data_path.AppendFormat(_T("%s\\declaration.txt"), directory);
-
- // Get cert with private key and cert without private key.
- std::vector<byte> encoded_cert_with_private_key;
- std::vector<byte> encoded_cert_without_private_key;
- ASSERT_SUCCEEDED(ReadEntireFile(encoded_cert_with_private_key_path,
- 0,
- &encoded_cert_with_private_key));
- ASSERT_SUCCEEDED(ReadEntireFile(encoded_cert_without_private_key_path,
- 0,
- &encoded_cert_without_private_key));
- CString cert_password = _T("f00bar");
- CString cert_subject_name = _T("Unofficial Google Test");
-
- // Get testdata.
- std::vector<byte> raw_testdata;
- ASSERT_SUCCEEDED(ReadEntireFile(raw_test_data_path, 0, &raw_testdata));
-
- // Create a signing certificate.
- CryptoSigningCertificate signing_certificate;
- ASSERT_SUCCEEDED(signing_certificate.ImportCertificate(
- encoded_cert_with_private_key, cert_password, cert_subject_name));
-
- // Create a signature object and sign the test data.
- std::vector<byte> signature;
- CryptoComputeSignature signer(&signing_certificate);
- ASSERT_SUCCEEDED(signer.Sign(raw_testdata, &signature));
-
- // Create a validating certificate.
- CryptoSignatureVerificationCertificate verification_certificate;
- ASSERT_SUCCEEDED(verification_certificate.ImportCertificate(
- encoded_cert_without_private_key, cert_subject_name));
-
- // Create a signature object and verify the test data's signature.
- CryptoVerifySignature verifier(verification_certificate);
- ASSERT_SUCCEEDED(verifier.Validate(raw_testdata, signature));
-
- // Mess up the signature and show it doesn't verify.
- size_t mid = signature.size() / 2;
- byte mid_byte = signature[mid];
- signature[mid] = ~mid_byte;
- ASSERT_FAILED(verifier.Validate(raw_testdata, signature));
-
- // Restore the signature, mess up the test data, and show it doesn't verify.
- signature[mid] = mid_byte;
- mid = raw_testdata.size() / 2;
- mid_byte = raw_testdata[mid];
- raw_testdata[mid] = ~mid_byte;
- ASSERT_FAILED(verifier.Validate(raw_testdata, signature));
-}
-
-TEST(SignaturesTest, AuthenticateFiles) {
- const CString executable_path(app_util::GetCurrentModuleDirectory());
-
- const CString source_file1 = ConcatenatePath(
- executable_path,
- _T("unittest_support\\download_cache_test\\")
- _T("{89640431-FE64-4da8-9860-1A1085A60E13}\\gears-win32-opt.msi"));
-
- const CString hash_file1 = _T("ImV9skETZqGFMjs32vbZTvzAYJU=");
-
- const CString source_file2 = ConcatenatePath(
- executable_path,
- _T("unittest_support\\download_cache_test\\")
- _T("{7101D597-3481-4971-AD23-455542964072}\\livelysetup.exe"));
-
- const CString hash_file2 = _T("Igq6bYaeXFJCjH770knXyJ6V53s=");
-
- const CString hash_files = _T("e2uzy96jlusKbADl87zie6F5iwE=");
-
- const CString bad_hash = _T("sFzmoHgCbowEnioqVb8WanTYbhIabcde=");
-
- std::vector<CString> files;
-
- // Authenticate one file.
- files.push_back(source_file1);
- EXPECT_HRESULT_SUCCEEDED(AuthenticateFiles(files, hash_file1));
-
- // Incorrect hash.
- EXPECT_EQ(SIGS_E_INVALID_SIGNATURE, AuthenticateFiles(files, hash_file2));
-
- // Bad hash.
- EXPECT_EQ(E_INVALIDARG, AuthenticateFiles(files, bad_hash));
- EXPECT_EQ(E_INVALIDARG, AuthenticateFiles(files, _T("")));
-
- // Authenticate two files.
- files.push_back(source_file2);
- EXPECT_HRESULT_SUCCEEDED(AuthenticateFiles(files, hash_files));
-
- // Round trip through CryptoHash::Compute to verify the hash of two files.
- CryptoHash crypto;
- std::vector<byte> hash_out;
- EXPECT_HRESULT_SUCCEEDED(crypto.Compute(files, 0, &hash_out));
-
- CStringA actual_hash_files;
- EXPECT_HRESULT_SUCCEEDED(Base64::Encode(hash_out, &actual_hash_files));
- EXPECT_STREQ(hash_files, CString(actual_hash_files));
-}
-
-} // namespace omaha
-
« no previous file with comments | « base/signatures.cc ('k') | base/signaturevalidator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698