Add support for encrypted storage expansion
Capability to configure the encrypted storage size
Partition resizing to the required size upon boot
New unit tests to validate this functionality
Bug: 381067202
Test: atest MicrodroidTests
Change-Id: I6f5737ee601e7c511bdd316b180bf50e3d102ab1
diff --git a/tests/testapk/src/native/testbinary.cpp b/tests/testapk/src/native/testbinary.cpp
index 355cfb1..13eafce 100644
--- a/tests/testapk/src/native/testbinary.cpp
+++ b/tests/testapk/src/native/testbinary.cpp
@@ -29,6 +29,7 @@
#include <stdint.h>
#include <stdio.h>
#include <sys/capability.h>
+#include <sys/statvfs.h>
#include <sys/system_properties.h>
#ifdef __MICRODROID_TEST_PAYLOAD_USES_LIBICU__
#include <unicode/uchar.h>
@@ -232,6 +233,23 @@
return ScopedAStatus::ok();
}
+ ScopedAStatus getEncryptedStorageSize(int64_t *out) override {
+ const char* path_c = AVmPayload_getEncryptedStoragePath();
+ if (path_c == nullptr) {
+ *out = 0;
+ return ScopedAStatus::ok();
+ }
+ struct statvfs buffer;
+ if (statvfs(path_c, &buffer) != 0) {
+ std::string msg = "statvfs " + std::string(path_c) + " failed : " +
+ std::strerror(errno);
+ return ScopedAStatus::fromExceptionCodeWithMessage(EX_SERVICE_SPECIFIC,
+ msg.c_str());
+ }
+ *out= buffer.f_blocks * buffer.f_frsize;
+ return ScopedAStatus::ok();
+ }
+
ScopedAStatus getEffectiveCapabilities(std::vector<std::string>* out) override {
if (out == nullptr) {
return ScopedAStatus::ok();
diff --git a/tests/testapk/src/native/testbinary.rs b/tests/testapk/src/native/testbinary.rs
index 3900cad..6a7d96e 100644
--- a/tests/testapk/src/native/testbinary.rs
+++ b/tests/testapk/src/native/testbinary.rs
@@ -87,6 +87,10 @@
// Everything below here is unimplemented. Implementations may be added as needed.
+ fn getEncryptedStorageSize(&self) -> BinderResult<i64> {
+ unimplemented()
+ }
+
fn readProperty(&self, _: &str) -> BinderResult<String> {
unimplemented()
}