Switch to new FBE emulation property.

Also prepare CE/DE storage directories for owner user at boot.

Bug: 22358539
Change-Id: I76228952c990ebed83360c69ef36321b99114196
diff --git a/Ext4Crypt.cpp b/Ext4Crypt.cpp
index ae6a960..028c12c 100644
--- a/Ext4Crypt.cpp
+++ b/Ext4Crypt.cpp
@@ -52,6 +52,8 @@
 
 using android::base::StringPrintf;
 
+static const char* kPropEmulateFbe = "persist.vold.emulate_fbe";
+
 namespace {
     // Key length in bits
     const int key_length = 128;
@@ -683,7 +685,7 @@
 }
 
 int e4crypt_unlock_user_key(userid_t user_id, const char* token) {
-    if (property_get_bool("vold.emulate_fbe", false)) {
+    if (property_get_bool(kPropEmulateFbe, false)) {
         // When in emulation mode, we just use chmod
         if (chmod(android::vold::BuildDataSystemCePath(user_id).c_str(), 0771) ||
                 chmod(android::vold::BuildDataUserPath(nullptr, user_id).c_str(), 0771)) {
@@ -704,7 +706,7 @@
 }
 
 int e4crypt_lock_user_key(userid_t user_id) {
-    if (property_get_bool("vold.emulate_fbe", false)) {
+    if (property_get_bool(kPropEmulateFbe, false)) {
         // When in emulation mode, we just use chmod
         if (chmod(android::vold::BuildDataSystemCePath(user_id).c_str(), 0000) ||
                 chmod(android::vold::BuildDataUserPath(nullptr, user_id).c_str(), 0000)) {
diff --git a/main.cpp b/main.cpp
index 648f36a..537e0a0 100644
--- a/main.cpp
+++ b/main.cpp
@@ -18,6 +18,7 @@
 #include "VolumeManager.h"
 #include "CommandListener.h"
 #include "CryptCommandListener.h"
+#include "Ext4Crypt.h"
 #include "NetlinkManager.h"
 #include "cryptfs.h"
 #include "sehandle.h"
@@ -96,6 +97,9 @@
         vm->setDebug(true);
     }
 
+    // Prepare owner storage
+    e4crypt_prepare_user_storage(nullptr, 0);
+
     cl = new CommandListener();
     ccl = new CryptCommandListener();
     vm->setBroadcaster((SocketListener *) cl);