summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Buynytskyy <alexbuy@google.com>2020-03-13 08:39:31 -0700
committerYurii Zubrytskyi <zyy@google.com>2020-03-24 10:27:39 -0700
commiteebf9f7670f961b478950f3732c71f5da45f2f68 (patch)
tree3ea13ec28f0d684f8417a6226dafcb56ffd3c4aa
parent18c00858d280755790e6199f310c449a03050478 (diff)
Implement the new v4 signing scheme in adb
To be submitted along with changes in apksigner tool and the framework. Merged to AOSP after that. Test: adb install --incremental <apk> Bug: b/151241461 Change-Id: I26e187f8e389e31e2759037057b96fc6c9cb1e94 Merged-In: I26e187f8e389e31e2759037057b96fc6c9cb1e94
-rw-r--r--adb/client/incremental.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/adb/client/incremental.cpp b/adb/client/incremental.cpp
index 6499d4603..3ceb3748a 100644
--- a/adb/client/incremental.cpp
+++ b/adb/client/incremental.cpp
@@ -45,33 +45,29 @@ static inline int32_t read_int32(borrowed_fd fd) {
return result;
}
-static inline int32_t read_be_int32(borrowed_fd fd) {
- return int32_t(be32toh(read_int32(fd)));
-}
-
static inline void append_int(borrowed_fd fd, std::vector<char>* bytes) {
- int32_t be_val = read_int32(fd);
+ int32_t le_val = read_int32(fd);
auto old_size = bytes->size();
- bytes->resize(old_size + sizeof(be_val));
- memcpy(bytes->data() + old_size, &be_val, sizeof(be_val));
+ bytes->resize(old_size + sizeof(le_val));
+ memcpy(bytes->data() + old_size, &le_val, sizeof(le_val));
}
static inline void append_bytes_with_size(borrowed_fd fd, std::vector<char>* bytes) {
- int32_t be_size = read_int32(fd);
- int32_t size = int32_t(be32toh(be_size));
+ int32_t le_size = read_int32(fd);
+ int32_t size = int32_t(le32toh(le_size));
auto old_size = bytes->size();
- bytes->resize(old_size + sizeof(be_size) + size);
- memcpy(bytes->data() + old_size, &be_size, sizeof(be_size));
- ReadFully(fd, bytes->data() + old_size + sizeof(be_size), size);
+ bytes->resize(old_size + sizeof(le_size) + size);
+ memcpy(bytes->data() + old_size, &le_size, sizeof(le_size));
+ ReadFully(fd, bytes->data() + old_size + sizeof(le_size), size);
}
static inline std::pair<std::vector<char>, int32_t> read_id_sig_headers(borrowed_fd fd) {
std::vector<char> result;
append_int(fd, &result); // version
- append_bytes_with_size(fd, &result); // verityRootHash
- append_bytes_with_size(fd, &result); // v3Digest
- append_bytes_with_size(fd, &result); // pkcs7SignatureBlock
- auto tree_size = read_be_int32(fd); // size of the verity tree
+ append_bytes_with_size(fd, &result); // hashingInfo
+ append_bytes_with_size(fd, &result); // signingInfo
+ auto le_tree_size = read_int32(fd);
+ auto tree_size = int32_t(le32toh(le_tree_size)); // size of the verity tree
return {std::move(result), tree_size};
}