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

Unified Diff: delta_performer_unittest.cc

Issue 3132033: AU: Sign delta payloads (Closed) Base URL: ssh://git@chromiumos-git/update_engine.git
Patch Set: fixes for review Created 10 years, 4 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 | « delta_diff_generator.cc ('k') | generate_delta_main.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: delta_performer_unittest.cc
diff --git a/delta_performer_unittest.cc b/delta_performer_unittest.cc
index fe12b9b34978acedc0ba17f28ad8b191c08e5392..09a4c7d3e1807237c56af260a00df84eab22989a 100755
--- a/delta_performer_unittest.cc
+++ b/delta_performer_unittest.cc
@@ -17,6 +17,7 @@
#include "update_engine/delta_diff_generator.h"
#include "update_engine/delta_performer.h"
#include "update_engine/graph_types.h"
+#include "update_engine/payload_signer.h"
#include "update_engine/test_utils.h"
#include "update_engine/update_metadata.pb.h"
#include "update_engine/utils.h"
@@ -27,6 +28,8 @@ using std::min;
using std::string;
using std::vector;
+extern const char* kUnittestPrivateKeyPath;
+
class DeltaPerformerTest : public ::testing::Test { };
TEST(DeltaPerformerTest, ExtentsToByteStringTest) {
@@ -166,7 +169,7 @@ TEST(DeltaPerformerTest, RunAsRootSmallImageTest) {
vector<char> new_kernel_data(old_kernel_data.size());
FillWithData(&old_kernel_data);
FillWithData(&new_kernel_data);
-
+
// change the new kernel data
const char* new_data_string = "This is new data.";
strcpy(&new_kernel_data[0], new_data_string);
@@ -179,25 +182,57 @@ TEST(DeltaPerformerTest, RunAsRootSmallImageTest) {
string delta_path;
EXPECT_TRUE(utils::MakeTempFile("/tmp/delta.XXXXXX", &delta_path, NULL));
+ LOG(INFO) << "delta path: " << delta_path;
ScopedPathUnlinker delta_path_unlinker(delta_path);
{
string a_mnt, b_mnt;
ScopedLoopMounter a_mounter(a_img, &a_mnt, MS_RDONLY);
ScopedLoopMounter b_mounter(b_img, &b_mnt, MS_RDONLY);
- EXPECT_TRUE(DeltaDiffGenerator::GenerateDeltaUpdateFile(a_mnt,
- a_img,
- b_mnt,
- b_img,
- old_kernel,
- new_kernel,
- delta_path));
+ EXPECT_TRUE(
+ DeltaDiffGenerator::GenerateDeltaUpdateFile(a_mnt,
+ a_img,
+ b_mnt,
+ b_img,
+ old_kernel,
+ new_kernel,
+ delta_path,
+ kUnittestPrivateKeyPath));
}
// Read delta into memory.
vector<char> delta;
EXPECT_TRUE(utils::ReadFile(delta_path, &delta));
+ // Check that the null signature blob exists
+ {
+ LOG(INFO) << "delta size: " << delta.size();
+ DeltaArchiveManifest manifest;
+ const int kManifestSizeOffset = 12;
+ const int kManifestOffset = 20;
+ uint64_t manifest_size = 0;
+ memcpy(&manifest_size, &delta[kManifestSizeOffset], sizeof(manifest_size));
+ manifest_size = be64toh(manifest_size);
+ LOG(INFO) << "manifest size: " << manifest_size;
+ EXPECT_TRUE(manifest.ParseFromArray(&delta[kManifestOffset],
+ manifest_size));
+ EXPECT_TRUE(manifest.has_signatures_offset());
+
+ Signatures sigs_message;
+ EXPECT_TRUE(sigs_message.ParseFromArray(
+ &delta[kManifestOffset + manifest_size + manifest.signatures_offset()],
+ manifest.signatures_size()));
+ EXPECT_EQ(1, sigs_message.signatures_size());
+ const Signatures_Signature& signature = sigs_message.signatures(0);
+ EXPECT_EQ(1, signature.version());
+
+ uint64_t expected_sig_data_length = 0;
+ EXPECT_TRUE(PayloadSigner::SignatureBlobLength(kUnittestPrivateKeyPath,
+ &expected_sig_data_length));
+ EXPECT_EQ(expected_sig_data_length, manifest.signatures_size());
+ EXPECT_FALSE(signature.data().empty());
+ }
+
// Update the A image in place.
DeltaPerformer performer;
@@ -215,7 +250,7 @@ TEST(DeltaPerformerTest, RunAsRootSmallImageTest) {
EXPECT_EQ(0, performer.Close());
CompareFilesByBlock(old_kernel, new_kernel);
-
+
vector<char> updated_kernel_partition;
EXPECT_TRUE(utils::ReadFile(old_kernel, &updated_kernel_partition));
EXPECT_EQ(0, strncmp(&updated_kernel_partition[0], new_data_string,
« no previous file with comments | « delta_diff_generator.cc ('k') | generate_delta_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698