diff options
author | Alex Buynytskyy <alexbuy@google.com> | 2020-03-13 08:39:31 -0700 |
---|---|---|
committer | Yurii Zubrytskyi <zyy@google.com> | 2020-03-24 10:27:39 -0700 |
commit | eebf9f7670f961b478950f3732c71f5da45f2f68 (patch) | |
tree | 3ea13ec28f0d684f8417a6226dafcb56ffd3c4aa | |
parent | 18c00858d280755790e6199f310c449a03050478 (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.cpp | 28 |
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}; } |