introduce AbstractDao, fix import of keys (missing delete in KeychainProvider)

This commit is contained in:
Vincent Breitmoser
2018-06-22 10:53:04 +02:00
parent 587b8b4cc9
commit 1556db897f
21 changed files with 166 additions and 144 deletions

View File

@@ -35,7 +35,7 @@ import android.os.Binder;
import org.openintents.openpgp.OpenPgpError;
import org.openintents.openpgp.util.OpenPgpApi;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import timber.log.Timber;
@@ -45,13 +45,13 @@ import timber.log.Timber;
public class ApiPermissionHelper {
private final Context mContext;
private final ApiDataAccessObject mApiDao;
private final ApiAppDao mApiAppDao;
private PackageManager mPackageManager;
public ApiPermissionHelper(Context context, ApiDataAccessObject apiDao) {
public ApiPermissionHelper(Context context, ApiAppDao apiAppDao) {
mContext = context;
mPackageManager = context.getPackageManager();
mApiDao = apiDao;
mApiAppDao = apiAppDao;
}
public static class WrongPackageCertificateException extends Exception {
@@ -206,7 +206,7 @@ public class ApiPermissionHelper {
public boolean isPackageAllowed(String packageName) throws WrongPackageCertificateException {
Timber.d("isPackageAllowed packageName: " + packageName);
byte[] storedPackageCert = mApiDao.getApiAppCertificate(packageName);
byte[] storedPackageCert = mApiAppDao.getApiAppCertificate(packageName);
boolean isKnownPackage = storedPackageCert != null;
if (!isKnownPackage) {

View File

@@ -38,7 +38,7 @@ import android.text.TextUtils;
import org.sufficientlysecure.keychain.BuildConfig;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.provider.KeychainContract.Certs;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainContract.Keys;
@@ -102,7 +102,7 @@ public class KeychainExternalProvider extends ContentProvider implements SimpleC
throw new NullPointerException("Context can't be null during onCreate!");
}
apiPermissionHelper = new ApiPermissionHelper(context, new ApiDataAccessObject(getContext()));
apiPermissionHelper = new ApiPermissionHelper(context, ApiAppDao.getInstance(getContext()));
return true;
}

View File

@@ -67,7 +67,7 @@ import org.sufficientlysecure.keychain.pgp.PgpSignEncryptOperation;
import org.sufficientlysecure.keychain.pgp.Progressable;
import org.sufficientlysecure.keychain.pgp.SecurityProblem;
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.provider.AutocryptPeerDao;
import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing;
import org.sufficientlysecure.keychain.provider.KeyRepository;
@@ -97,7 +97,7 @@ public class OpenPgpService extends Service {
private ApiPermissionHelper mApiPermissionHelper;
private KeyRepository mKeyRepository;
private ApiDataAccessObject mApiDao;
private ApiAppDao mApiAppDao;
private OpenPgpServiceKeyIdExtractor mKeyIdExtractor;
private ApiPendingIntentFactory mApiPendingIntentFactory;
@@ -105,8 +105,8 @@ public class OpenPgpService extends Service {
public void onCreate() {
super.onCreate();
mKeyRepository = KeyRepository.create(this);
mApiDao = new ApiDataAccessObject(this);
mApiPermissionHelper = new ApiPermissionHelper(this, mApiDao);
mApiAppDao = ApiAppDao.getInstance(this);
mApiPermissionHelper = new ApiPermissionHelper(this, mApiAppDao);
mApiPendingIntentFactory = new ApiPendingIntentFactory(getBaseContext());
mKeyIdExtractor = OpenPgpServiceKeyIdExtractor.getInstance(getContentResolver(), mApiPendingIntentFactory);
}
@@ -915,7 +915,7 @@ public class OpenPgpService extends Service {
private HashSet<Long> getAllowedKeyIds() {
String currentPkg = mApiPermissionHelper.getCurrentCallingPackage();
return mApiDao.getAllowedKeyIdsForApp(currentPkg);
return mApiAppDao.getAllowedKeyIdsForApp(currentPkg);
}
/**

View File

@@ -23,7 +23,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
public class PackageUninstallReceiver extends BroadcastReceiver {
@@ -36,8 +36,8 @@ public class PackageUninstallReceiver extends BroadcastReceiver {
}
String packageName = uri.getEncodedSchemeSpecificPart();
ApiDataAccessObject apiDao = new ApiDataAccessObject(context);
apiDao.deleteApiApp(packageName);
ApiAppDao apiAppDao = ApiAppDao.getInstance(context);
apiAppDao.deleteApiApp(packageName);
}
}
}

View File

@@ -45,7 +45,7 @@ import org.sufficientlysecure.keychain.pgp.CanonicalizedPublicKey;
import org.sufficientlysecure.keychain.pgp.SshPublicKey;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing;
import org.sufficientlysecure.keychain.provider.KeyRepository;
import org.sufficientlysecure.keychain.service.input.CryptoInputParcel;
@@ -63,7 +63,7 @@ public class SshAuthenticationService extends Service {
private ApiPermissionHelper mApiPermissionHelper;
private KeyRepository mKeyRepository;
private ApiDataAccessObject mApiDao;
private ApiAppDao mApiAppDao;
private ApiPendingIntentFactory mApiPendingIntentFactory;
private static final List<Integer> SUPPORTED_VERSIONS = Collections.unmodifiableList(Collections.singletonList(1));
@@ -74,9 +74,9 @@ public class SshAuthenticationService extends Service {
@Override
public void onCreate() {
super.onCreate();
mApiPermissionHelper = new ApiPermissionHelper(this, new ApiDataAccessObject(this));
mApiPermissionHelper = new ApiPermissionHelper(this, ApiAppDao.getInstance(this));
mKeyRepository = KeyRepository.create(this);
mApiDao = new ApiDataAccessObject(this);
mApiAppDao = ApiAppDao.getInstance(this);
mApiPendingIntentFactory = new ApiPendingIntentFactory(getBaseContext());
}
@@ -394,7 +394,7 @@ public class SshAuthenticationService extends Service {
private HashSet<Long> getAllowedKeyIds() {
String currentPkg = mApiPermissionHelper.getCurrentCallingPackage();
return mApiDao.getAllowedKeyIdsForApp(currentPkg);
return mApiAppDao.getAllowedKeyIdsForApp(currentPkg);
}
/**

View File

@@ -37,7 +37,7 @@ import org.bouncycastle.util.encoders.Hex;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.model.ApiApp;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.ui.base.BaseActivity;
import org.sufficientlysecure.keychain.ui.dialog.AdvancedAppSettingsDialogFragment;
import timber.log.Timber;
@@ -54,7 +54,7 @@ public class AppSettingsActivity extends BaseActivity {
// model
ApiApp mApiApp;
private ApiDataAccessObject apiDataAccessObject;
private ApiAppDao apiAppDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -76,7 +76,7 @@ public class AppSettingsActivity extends BaseActivity {
return;
}
apiDataAccessObject = new ApiDataAccessObject(this);
apiAppDao = ApiAppDao.getInstance(this);
loadData(savedInstanceState);
}
@@ -170,7 +170,7 @@ public class AppSettingsActivity extends BaseActivity {
}
private void loadData(Bundle savedInstanceState) {
mApiApp = apiDataAccessObject.getApiApp(packageName);
mApiApp = apiAppDao.getApiApp(packageName);
// get application name and icon from package manager
String appName;
@@ -211,7 +211,7 @@ public class AppSettingsActivity extends BaseActivity {
}
private void revokeAccess() {
apiDataAccessObject.deleteApiApp(packageName);
apiAppDao.deleteApiApp(packageName);
finish();
}

View File

@@ -33,7 +33,7 @@ import android.widget.ListView;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.ListFragmentWorkaround;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.ui.adapter.KeyAdapter;
import org.sufficientlysecure.keychain.ui.adapter.KeySelectableAdapter;
@@ -44,7 +44,7 @@ public class AppSettingsAllowedKeysListFragment extends ListFragmentWorkaround i
private static final String ARG_PACKAGE_NAME = "package_name";
private KeySelectableAdapter mAdapter;
private ApiDataAccessObject mApiDao;
private ApiAppDao mApiAppDao;
private String packageName;
@@ -66,7 +66,7 @@ public class AppSettingsAllowedKeysListFragment extends ListFragmentWorkaround i
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mApiDao = new ApiDataAccessObject(getActivity());
mApiAppDao = ApiAppDao.getInstance(getActivity());
}
@Override
@@ -104,7 +104,7 @@ public class AppSettingsAllowedKeysListFragment extends ListFragmentWorkaround i
// application this would come from a resource.
setEmptyText(getString(R.string.list_empty));
Set<Long> checked = mApiDao.getAllowedKeyIdsForApp(packageName);
Set<Long> checked = mApiAppDao.getAllowedKeyIdsForApp(packageName);
mAdapter = new KeySelectableAdapter(getActivity(), null, 0, checked);
setListAdapter(mAdapter);
getListView().setOnItemClickListener(mAdapter);
@@ -137,7 +137,7 @@ public class AppSettingsAllowedKeysListFragment extends ListFragmentWorkaround i
} */
public void saveAllowedKeys() {
mApiDao.saveAllowedKeyIdsForApp(packageName, getSelectedMasterKeyIds());
mApiAppDao.saveAllowedKeyIdsForApp(packageName, getSelectedMasterKeyIds());
}
@Override

View File

@@ -41,7 +41,7 @@ import android.widget.TextView;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.model.ApiApp;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.remote.ui.AppsListFragment.ApiAppAdapter;
import org.sufficientlysecure.keychain.ui.base.RecyclerFragment;
import org.sufficientlysecure.keychain.ui.keyview.loader.AsyncTaskLiveData;
@@ -169,14 +169,14 @@ public class AppsListFragment extends RecyclerFragment<ApiAppAdapter> {
}
public static class ApiAppsLiveData extends AsyncTaskLiveData<List<ListedApp>> {
private final ApiDataAccessObject apiDao;
private final ApiAppDao apiAppDao;
private final PackageManager packageManager;
ApiAppsLiveData(Context context) {
super(context, null);
packageManager = getContext().getPackageManager();
apiDao = new ApiDataAccessObject(context);
apiAppDao = ApiAppDao.getInstance(context);
}
@Override
@@ -191,7 +191,7 @@ public class AppsListFragment extends RecyclerFragment<ApiAppAdapter> {
}
private void loadRegisteredApps(ArrayList<ListedApp> result) {
List<ApiApp> registeredApiApps = apiDao.getAllApiApps();
List<ApiApp> registeredApiApps = apiAppDao.getAllApiApps();
for (ApiApp apiApp : registeredApiApps) {
ListedApp listedApp;

View File

@@ -27,12 +27,12 @@ import android.graphics.drawable.Drawable;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.model.ApiApp;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import timber.log.Timber;
class RemoteRegisterPresenter {
private final ApiDataAccessObject apiDao;
private final ApiAppDao apiAppDao;
private final PackageManager packageManager;
private final Context context;
@@ -45,7 +45,7 @@ class RemoteRegisterPresenter {
RemoteRegisterPresenter(Context context) {
this.context = context;
apiDao = new ApiDataAccessObject(context);
apiAppDao = ApiAppDao.getInstance(context);
packageManager = context.getPackageManager();
}
@@ -76,7 +76,7 @@ class RemoteRegisterPresenter {
}
void onClickAllow() {
apiDao.insertApiApp(apiApp);
apiAppDao.insertApiApp(apiApp);
view.finishWithResult(resultData);
}

View File

@@ -29,7 +29,7 @@ import org.openintents.openpgp.util.OpenPgpUtils.UserId;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey.SecretKeyType;
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing;
import org.sufficientlysecure.keychain.provider.KeyRepository;
import org.sufficientlysecure.keychain.provider.KeyRepository.NotFoundException;
@@ -42,7 +42,7 @@ import timber.log.Timber;
class RequestKeyPermissionPresenter {
private final Context context;
private final PackageManager packageManager;
private final ApiDataAccessObject apiDataAccessObject;
private final ApiAppDao apiAppDao;
private final ApiPermissionHelper apiPermissionHelper;
private RequestKeyPermissionMvpView view;
@@ -54,19 +54,19 @@ class RequestKeyPermissionPresenter {
static RequestKeyPermissionPresenter createRequestKeyPermissionPresenter(Context context) {
PackageManager packageManager = context.getPackageManager();
ApiDataAccessObject apiDataAccessObject = new ApiDataAccessObject(context);
ApiPermissionHelper apiPermissionHelper = new ApiPermissionHelper(context, apiDataAccessObject);
ApiAppDao apiAppDao = ApiAppDao.getInstance(context);
ApiPermissionHelper apiPermissionHelper = new ApiPermissionHelper(context, apiAppDao);
KeyRepository keyRepository =
KeyRepository.create(context);
return new RequestKeyPermissionPresenter(context, apiDataAccessObject, apiPermissionHelper, packageManager,
return new RequestKeyPermissionPresenter(context, apiAppDao, apiPermissionHelper, packageManager,
keyRepository);
}
private RequestKeyPermissionPresenter(Context context, ApiDataAccessObject apiDataAccessObject,
private RequestKeyPermissionPresenter(Context context, ApiAppDao apiAppDao,
ApiPermissionHelper apiPermissionHelper, PackageManager packageManager, KeyRepository keyRepository) {
this.context = context;
this.apiDataAccessObject = apiDataAccessObject;
this.apiAppDao = apiAppDao;
this.apiPermissionHelper = apiPermissionHelper;
this.packageManager = packageManager;
this.keyRepository = keyRepository;
@@ -160,7 +160,7 @@ class RequestKeyPermissionPresenter {
}
void onClickAllow() {
apiDataAccessObject.addAllowedKeyIdForApp(packageName, masterKeyId);
apiAppDao.addAllowedKeyIdForApp(packageName, masterKeyId);
view.finish();
}

View File

@@ -32,7 +32,7 @@ import org.openintents.openpgp.util.OpenPgpApi;
import org.openintents.openpgp.util.OpenPgpUtils;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.KeyRing;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.remote.ui.adapter.SelectSignKeyAdapter;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity;
@@ -49,7 +49,7 @@ public class SelectSignKeyIdListFragment extends RecyclerFragment<SelectSignKeyA
private Intent mResult;
private String mPrefUid;
private ApiDataAccessObject mApiDao;
private ApiAppDao mApiAppDao;
private String mPackageName;
/**
@@ -71,7 +71,7 @@ public class SelectSignKeyIdListFragment extends RecyclerFragment<SelectSignKeyA
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mApiDao = new ApiDataAccessObject(getActivity());
mApiAppDao = ApiAppDao.getInstance(getActivity());
}
/**
@@ -173,7 +173,7 @@ public class SelectSignKeyIdListFragment extends RecyclerFragment<SelectSignKeyA
@Override
public void onSelectKeyItemClicked(long masterKeyId) {
mApiDao.addAllowedKeyIdForApp(mPackageName, masterKeyId);
mApiAppDao.addAllowedKeyIdForApp(mPackageName, masterKeyId);
mResult.putExtra(OpenPgpApi.EXTRA_SIGN_KEY_ID, masterKeyId);
getActivity().setResult(Activity.RESULT_OK, mResult);

View File

@@ -52,7 +52,7 @@ import com.mikepenz.materialdrawer.util.KeyboardUtil;
import org.openintents.ssh.authentication.SshAuthenticationApi;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.livedata.KeyInfoInteractor.KeyInfo;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.remote.ui.RemoteSecurityTokenOperationActivity;
import org.sufficientlysecure.keychain.remote.ui.dialog.RemoteSelectAuthenticationKeyPresenter.RemoteSelectAuthenticationKeyView;
import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder;
@@ -101,8 +101,8 @@ public class RemoteSelectAuthenticationKeyActivity extends FragmentActivity {
Intent originalIntent = callingIntent.getParcelableExtra(
RemoteSecurityTokenOperationActivity.EXTRA_DATA);
ApiDataAccessObject apiDao = new ApiDataAccessObject(getBaseContext());
apiDao.addAllowedKeyIdForApp(packageName, masterKeyId);
ApiAppDao apiAppDao = ApiAppDao.getInstance(getBaseContext());
apiAppDao.addAllowedKeyIdForApp(packageName, masterKeyId);
originalIntent.putExtra(SshAuthenticationApi.EXTRA_KEY_ID, String.valueOf(masterKeyId));

View File

@@ -38,7 +38,7 @@ import org.sufficientlysecure.keychain.model.ApiApp;
import org.sufficientlysecure.keychain.operations.results.ImportKeyResult;
import org.sufficientlysecure.keychain.operations.results.PgpEditKeyResult;
import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
import org.sufficientlysecure.keychain.provider.ApiAppDao;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
@@ -57,14 +57,14 @@ class RemoteSelectIdentityKeyPresenter {
private UserId userId;
private long selectedMasterKeyId;
private byte[] generatedKeyData;
private ApiDataAccessObject apiDao;
private ApiAppDao apiAppDao;
private ApiApp apiApp;
RemoteSelectIdentityKeyPresenter(Context context, RemoteSelectIdViewModel viewModel, LifecycleOwner lifecycleOwner) {
this.context = context;
this.viewModel = viewModel;
this.apiDao = new ApiDataAccessObject(context);
this.apiAppDao = ApiAppDao.getInstance(context);
packageManager = context.getPackageManager();
@@ -200,15 +200,15 @@ class RemoteSelectIdentityKeyPresenter {
}
void onHighlightFinished() {
apiDao.insertApiApp(apiApp);
apiDao.addAllowedKeyIdForApp(apiApp.package_name(), selectedMasterKeyId);
apiAppDao.insertApiApp(apiApp);
apiAppDao.addAllowedKeyIdForApp(apiApp.package_name(), selectedMasterKeyId);
view.finishAndReturn(selectedMasterKeyId);
}
void onImportOpSuccess(ImportKeyResult result) {
long importedMasterKeyId = result.getImportedMasterKeyIds()[0];
apiDao.insertApiApp(apiApp);
apiDao.addAllowedKeyIdForApp(apiApp.package_name(), selectedMasterKeyId);
apiAppDao.insertApiApp(apiApp);
apiAppDao.addAllowedKeyIdForApp(apiApp.package_name(), selectedMasterKeyId);
view.finishAndReturn(importedMasterKeyId);
}