diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-16 05:22:56 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-16 05:22:56 +0000 |
commit | abd4cb2a97c4a40bde722099b196178f439edf4d (patch) | |
tree | b104fe77cf8a869ab1e0c4af16e3fa7f412f1609 /extensions/browser/computed_hashes.h | |
parent | 3ec0c24c6058c6f417d9fe41b3ce1fd5afd52086 (diff) | |
download | chromium_src-abd4cb2a97c4a40bde722099b196178f439edf4d.zip chromium_src-abd4cb2a97c4a40bde722099b196178f439edf4d.tar.gz chromium_src-abd4cb2a97c4a40bde722099b196178f439edf4d.tar.bz2 |
A bunch of remaining parts of extension content verification (Reland)
-The real guts of content_hash_fetcher.cc, which fetches the
verified_contents.json file from the webstore if needed and also runs
tasks to compute and cache the block-level hashes of all files in an
extension.
-The real guts of content_hash_reader.cc, which uses the work done by
the content_hash_fetcher during validation of extension file content as
it's read off of disk at time of use.
-Code to avoid verifying transcoded files (images used in browser
process, and message catalogs).
-Don't allow downgrade of mode via kForceFieldTrials command line switch
-Various bits of plumbing to support all of the above
This is a re-land with fixes; original review was:
https://codereview.chromium.org/289533003
BUG=369895,373854
R=rockot@chromium.org
Review URL: https://codereview.chromium.org/288273004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270937 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser/computed_hashes.h')
-rw-r--r-- | extensions/browser/computed_hashes.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/extensions/browser/computed_hashes.h b/extensions/browser/computed_hashes.h new file mode 100644 index 0000000..c68175c --- /dev/null +++ b/extensions/browser/computed_hashes.h @@ -0,0 +1,64 @@ +// Copyright 2014 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. + +#ifndef EXTENSIONS_BROWSER_COMPUTED_HASHES_H_ +#define EXTENSIONS_BROWSER_COMPUTED_HASHES_H_ + +#include <map> +#include <string> +#include <vector> + +#include "base/values.h" + +namespace base { +class FilePath; +} + +namespace extensions { + +// A pair of classes for serialization of a set of SHA256 block hashes computed +// over the files inside an extension. +class ComputedHashes { + public: + class Reader { + public: + Reader(); + ~Reader(); + bool InitFromFile(const base::FilePath& path); + + // The block size and hashes for |relative_path| will be copied into the + // out parameters. + bool GetHashes(const base::FilePath& relative_path, + int* block_size, + std::vector<std::string>* hashes); + + private: + typedef std::pair<int, std::vector<std::string> > HashInfo; + + // This maps a relative path to a pair of (block size, hashes) + std::map<base::FilePath, HashInfo> data_; + }; + + class Writer { + public: + Writer(); + ~Writer(); + + // Adds hashes for |relative_path|. Should not be called more than once + // for a given |relative_path|. + void AddHashes(const base::FilePath& relative_path, + int block_size, + const std::vector<std::string>& hashes); + + bool WriteToFile(const base::FilePath& path); + + private: + // The top-level object that will be serialized as JSON. + base::ListValue file_list_; + }; +}; + +} // namespace extensions + +#endif // EXTENSIONS_BROWSER_COMPUTED_HASHES_H_ |