Index: delta_performer.h |
diff --git a/delta_performer.h b/delta_performer.h |
index 87a27dd9454aa7759430539c87ac3ccc8bd801b2..5425ea51c1942e5bc05125fb06ed790e4d17fc0e 100644 |
--- a/delta_performer.h |
+++ b/delta_performer.h |
@@ -29,6 +29,7 @@ class DeltaPerformer : public FileWriter { |
fd_(-1), |
kernel_fd_(-1), |
manifest_valid_(false), |
+ manifest_metadata_size_(0), |
next_operation_num_(0), |
buffer_offset_(0), |
last_updated_buffer_offset_(kuint64max), |
@@ -51,12 +52,15 @@ class DeltaPerformer : public FileWriter { |
int Close(); |
// Verifies the downloaded payload against the signed hash included in the |
- // payload and returns true on success, false on failure. This method should |
- // be called after closing the stream. Note this method returns true if the |
- // public key is unavailable; it returns false if the public key is available |
- // but the delta payload doesn't include a signature. If |public_key_path| is |
- // an empty string, uses the default public key path. |
- bool VerifyPayload(const std::string& public_key_path); |
+ // payload as well as against the update check hash and size and returns true |
+ // on success, false on failure. This method should be called after closing |
+ // the stream. Note this method skips the signed hash check if the public key |
+ // is unavailable; it returns false if the public key is available but the |
+ // delta payload doesn't include a signature. If |public_key_path| is an empty |
+ // string, uses the default public key path. |
+ bool VerifyPayload(const std::string& public_key_path, |
+ const std::string& update_check_response_hash, |
+ const uint64_t update_check_response_size); |
// Converts an ordered collection of Extent objects which contain data of |
// length full_length to a comma-separated string. For each Extent, the |
@@ -108,9 +112,9 @@ class DeltaPerformer : public FileWriter { |
bool ExtractSignatureMessage( |
const DeltaArchiveManifest_InstallOperation& operation); |
- // Discard |count| bytes from the beginning of buffer_. If |do_hash| is true, |
- // updates the hash calculator with these bytes before discarding them. |
- void DiscardBufferHeadBytes(size_t count, bool do_hash); |
+ // Updates the hash calculator with |count| bytes at the head of |buffer_| and |
+ // then discards them. |
+ void DiscardBufferHeadBytes(size_t count); |
// Checkpoints the update progress into persistent storage to allow this |
// update attempt to be resumed after reboot. |
@@ -130,6 +134,7 @@ class DeltaPerformer : public FileWriter { |
DeltaArchiveManifest manifest_; |
bool manifest_valid_; |
+ uint64_t manifest_metadata_size_; |
// Index of the next operation to perform in the manifest. |
int next_operation_num_; |
@@ -148,9 +153,12 @@ class DeltaPerformer : public FileWriter { |
// The block size (parsed from the manifest). |
uint32_t block_size_; |
- // Calculate the payload hash to verify against the signed hash. |
+ // Calculates the payload hash. |
OmahaHashCalculator hash_calculator_; |
+ // Saves the signed hash context. |
+ std::string signed_hash_context_; |
+ |
// Signatures message blob extracted directly from the payload. |
std::vector<char> signatures_message_data_; |