Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46791e75 authored by Paul Lawrence's avatar Paul Lawrence
Browse files

Allow encryption when keyguard is set to pattern or no protection

Add type parameter to encryptStorage so we can set type when we encrypt

Depends on
  https://googleplex-android-review.git.corp.google.com/#/c/444056/

Circular dependency on:
  https://googleplex-android-review.git.corp.google.com/#/c/444201/

Bug: 13749169
Change-Id: I52034ec25de35f12f1bbfdd1b0f8584923a0be2e
parent 93160828
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -625,12 +625,13 @@ public interface IMountService extends IInterface {
                return _result;
            }

            public int encryptStorage(String password) throws RemoteException {
            public int encryptStorage(int type, String password) throws RemoteException {
                Parcel _data = Parcel.obtain();
                Parcel _reply = Parcel.obtain();
                int _result;
                try {
                    _data.writeInterfaceToken(DESCRIPTOR);
                    _data.writeInt(type);
                    _data.writeString(password);
                    mRemote.transact(Stub.TRANSACTION_encryptStorage, _data, _reply, 0);
                    _reply.readException();
@@ -1175,8 +1176,9 @@ public interface IMountService extends IInterface {
                }
                case TRANSACTION_encryptStorage: {
                    data.enforceInterface(DESCRIPTOR);
                    int type = data.readInt();
                    String password = data.readString();
                    int result = encryptStorage(password);
                    int result = encryptStorage(type, password);
                    reply.writeNoException();
                    reply.writeInt(result);
                    return true;
@@ -1444,7 +1446,7 @@ public interface IMountService extends IInterface {
    /**
     * Encrypts storage.
     */
    public int encryptStorage(String password) throws RemoteException;
    public int encryptStorage(int type, String password) throws RemoteException;

    /**
     * Changes the encryption password.
+4 −3
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import android.os.storage.IMountServiceListener;
import android.os.storage.IMountShutdownObserver;
import android.os.storage.IObbActionListener;
import android.os.storage.OnObbStateChangeListener;
import android.os.storage.StorageManager;
import android.os.storage.StorageResultCode;
import android.os.storage.StorageVolume;
import android.text.TextUtils;
@@ -2144,8 +2145,8 @@ class MountService extends IMountService.Stub
        }
    }

    public int encryptStorage(String password) {
        if (TextUtils.isEmpty(password)) {
    public int encryptStorage(int type, String password) {
        if (TextUtils.isEmpty(password) && type != StorageManager.CRYPT_TYPE_DEFAULT) {
            throw new IllegalArgumentException("password cannot be empty");
        }

@@ -2159,7 +2160,7 @@ class MountService extends IMountService.Stub
        }

        try {
            mConnector.execute("cryptfs", "enablecrypto", "inplace",
            mConnector.execute("cryptfs", "enablecrypto", "inplace", CRYPTO_TYPES[type],
                               new SensitiveArg(toHex(password)));
        } catch (NativeDaemonConnectorException e) {
            // Encryption failed