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

Unified Diff: omaha_hash_calculator.cc

Issue 4042004: AU: When applying delta locally, get source checksums (Closed) Base URL: http://git.chromium.org/git/update_engine.git
Patch Set: Created 10 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
« generate_delta_main.cc ('K') | « omaha_hash_calculator.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: omaha_hash_calculator.cc
diff --git a/omaha_hash_calculator.cc b/omaha_hash_calculator.cc
index ac4edf480d6589846192cd70318a538a76fa2f8e..4df52d32a1980ff204d15d5268fcc67d8929fba7 100644
--- a/omaha_hash_calculator.cc
+++ b/omaha_hash_calculator.cc
@@ -63,18 +63,10 @@ off_t OmahaHashCalculator::UpdateFile(const string& name, off_t length) {
return bytes_processed;
}
-// Call Finalize() when all data has been passed in. This mostly just
-// calls OpenSSL's SHA256_Final() and then base64 encodes the hash.
-bool OmahaHashCalculator::Finalize() {
+bool OmahaHashCalculator::Base64Encode(const void* data,
+ size_t size,
+ string* out) {
bool success = true;
- TEST_AND_RETURN_FALSE(hash_.empty());
- TEST_AND_RETURN_FALSE(raw_hash_.empty());
- raw_hash_.resize(SHA256_DIGEST_LENGTH);
- TEST_AND_RETURN_FALSE(
- SHA256_Final(reinterpret_cast<unsigned char*>(&raw_hash_[0]),
- &ctx_) == 1);
-
- // Convert raw_hash_ to base64 encoding and store it in hash_.
BIO *b64 = BIO_new(BIO_f_base64());
if (!b64)
LOG(INFO) << "BIO_new(BIO_f_base64()) failed";
@@ -84,14 +76,13 @@ bool OmahaHashCalculator::Finalize() {
if (b64 && bmem) {
b64 = BIO_push(b64, bmem);
success =
- (BIO_write(b64, &raw_hash_[0], raw_hash_.size()) ==
- static_cast<int>(raw_hash_.size()));
+ (BIO_write(b64, data, size) == static_cast<int>(size));
if (success)
success = (BIO_flush(b64) == 1);
BUF_MEM *bptr = NULL;
BIO_get_mem_ptr(b64, &bptr);
- hash_.assign(bptr->data, bptr->length - 1);
+ out->assign(bptr->data, bptr->length - 1);
}
if (b64) {
BIO_free_all(b64);
@@ -100,6 +91,22 @@ bool OmahaHashCalculator::Finalize() {
return success;
}
+// Call Finalize() when all data has been passed in. This mostly just
+// calls OpenSSL's SHA256_Final() and then base64 encodes the hash.
+bool OmahaHashCalculator::Finalize() {
+ TEST_AND_RETURN_FALSE(hash_.empty());
+ TEST_AND_RETURN_FALSE(raw_hash_.empty());
+ raw_hash_.resize(SHA256_DIGEST_LENGTH);
+ TEST_AND_RETURN_FALSE(
+ SHA256_Final(reinterpret_cast<unsigned char*>(&raw_hash_[0]),
+ &ctx_) == 1);
+
+ // Convert raw_hash_ to base64 encoding and store it in hash_.
+ return OmahaHashCalculator::Base64Encode(&raw_hash_[0],
petkov 2010/10/22 20:15:16 You don't need OmahaHashCalculator:: I think.
adlr 2010/10/22 20:40:18 Done.
+ raw_hash_.size(),
+ &hash_);;
+}
+
bool OmahaHashCalculator::RawHashOfData(const vector<char>& data,
vector<char>* out_hash) {
OmahaHashCalculator calc;
« generate_delta_main.cc ('K') | « omaha_hash_calculator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698