diff options
author | Yo Chiang <yochiang@google.com> | 2020-10-26 05:49:35 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-10-26 05:49:35 +0000 |
commit | 76621fa1e5b074549e3fdee19daeccc96c2a20a6 (patch) | |
tree | 16d81d44e82f2a5d3c6db382ed8fa71586a83bff | |
parent | bb1950da878cc077d206603ec240221c06ee1d54 (diff) | |
parent | adb1b891a86ba0755122cdc6a2a3f3d1d23807d6 (diff) | |
download | gsid-76621fa1e5b074549e3fdee19daeccc96c2a20a6.tar.gz |
Merge "Add GetDsuMetadataKeyDir()" am: adb1b891a8
Original change: https://android-review.googlesource.com/c/platform/system/gsid/+/1452416
Change-Id: I31b67407c730690b8ae7ddaffdf569d70ca18409
-rw-r--r-- | include/libgsi/libgsi.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/include/libgsi/libgsi.h b/include/libgsi/libgsi.h index ed47767..9a571f9 100644 --- a/include/libgsi/libgsi.h +++ b/include/libgsi/libgsi.h @@ -19,6 +19,7 @@ #include <string> #include <android-base/file.h> +#include <android-base/strings.h> namespace android { namespace gsi { @@ -35,6 +36,8 @@ static constexpr char kDsuActiveFile[] = DSU_METADATA_PREFIX "active"; static constexpr char kDsuAvbKeyDir[] = DSU_METADATA_PREFIX "avb/"; +static constexpr char kDsuMetadataKeyDirPrefix[] = "/metadata/vold/metadata_encryption/dsu/"; + static inline std::string DsuLpMetadataFile(const std::string& dsu_slot) { return DSU_METADATA_PREFIX + dsu_slot + "/lp_metadata"; } @@ -43,6 +46,24 @@ static inline std::string DsuInstallDirFile(const std::string& dsu_slot) { return DSU_METADATA_PREFIX + dsu_slot + "/install_dir"; } +static inline std::string DsuMetadataKeyDirFile(const std::string& dsu_slot) { + return DSU_METADATA_PREFIX + dsu_slot + "/metadata_encryption_dir"; +} + +static inline std::string DefaultDsuMetadataKeyDir(const std::string& dsu_slot) { + return kDsuMetadataKeyDirPrefix + dsu_slot; +} + +static inline std::string GetDsuMetadataKeyDir(const std::string& dsu_slot) { + auto key_dir_file = DsuMetadataKeyDirFile(dsu_slot); + std::string key_dir; + if (android::base::ReadFileToString(key_dir_file, &key_dir) && + android::base::StartsWith(key_dir, kDsuMetadataKeyDirPrefix)) { + return key_dir; + } + return DefaultDsuMetadataKeyDir(dsu_slot); +} + // install_dir "/data/gsi/dsu/dsu" has a slot name "dsu" // install_dir "/data/gsi/dsu/dsu2" has a slot name "dsu2" std::string GetDsuSlot(const std::string& install_dir); |