diff options
Diffstat (limited to 'init/builtins.cpp')
-rw-r--r-- | init/builtins.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/init/builtins.cpp b/init/builtins.cpp index 54ccf091e..5c3f2754a 100644 --- a/init/builtins.cpp +++ b/init/builtins.cpp @@ -484,6 +484,25 @@ static Result<Success> queue_fs_event(int code) { // do anything different from the nonencrypted case. ActionManager::GetInstance().QueueEventTrigger("nonencrypted"); return Success(); + } else if (code == FS_MGR_MNTALL_DEV_IS_METADATA_ENCRYPTED) { + if (e4crypt_install_keyring()) { + return Error() << "e4crypt_install_keyring() failed"; + } + property_set("ro.crypto.state", "encrypted"); + property_set("ro.crypto.type", "file"); + + // defaultcrypto detects file/block encryption. init flow is same for each. + ActionManager::GetInstance().QueueEventTrigger("defaultcrypto"); + return Success(); + } else if (code == FS_MGR_MNTALL_DEV_NEEDS_METADATA_ENCRYPTION) { + if (e4crypt_install_keyring()) { + return Error() << "e4crypt_install_keyring() failed"; + } + property_set("ro.crypto.type", "file"); + + // encrypt detects file/block encryption. init flow is same for each. + ActionManager::GetInstance().QueueEventTrigger("encrypt"); + return Success(); } else if (code > 0) { Error() << "fs_mgr_mount_all() returned unexpected error " << code; } |