aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java49
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettings.java70
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java38
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsFragment.java44
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java13
5 files changed, 149 insertions, 65 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java
index 60aa0542e..42210db6a 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/ProviderHelper.java
@@ -36,6 +36,7 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainContract.Keys;
import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
import org.sufficientlysecure.keychain.provider.KeychainDatabase.Tables;
+import org.sufficientlysecure.keychain.remote_api.AppSettings;
import org.sufficientlysecure.keychain.util.IterableIterator;
import org.sufficientlysecure.keychain.util.Log;
@@ -739,12 +740,50 @@ public class ProviderHelper {
return packageNames;
}
- public static void addCryptoConsumer(Context context, String packageName, long keyId,
- boolean asciiArmor) {
+ private static void contentValueForApiApps() {
+
+ }
+
+ public static void insertApiApp(Context context, AppSettings appSettings) {
ContentValues values = new ContentValues();
- values.put(ApiApps.PACKAGE_NAME, packageName);
- values.put(ApiApps.KEY_ID, keyId);
- values.put(ApiApps.ASCII_ARMOR, asciiArmor);
+ values.put(ApiApps.PACKAGE_NAME, appSettings.getPackageName());
+ values.put(ApiApps.KEY_ID, appSettings.getKeyId());
+ values.put(ApiApps.ASCII_ARMOR, appSettings.isAsciiArmor());
+ // TODO: other parameters
context.getContentResolver().insert(ApiApps.CONTENT_URI, values);
}
+
+ public static void updateApiApp(Context context, AppSettings appSettings, Uri uri) {
+ final ContentValues cv = new ContentValues();
+ cv.put(KeychainContract.ApiApps.KEY_ID, appSettings.getKeyId());
+
+ cv.put(KeychainContract.ApiApps.ASCII_ARMOR, appSettings.isAsciiArmor());
+ // TODO: other parameters
+
+ if (context.getContentResolver().update(uri, cv, null, null) <= 0) {
+ throw new RuntimeException();
+ }
+ }
+
+ public static AppSettings getApiAppSettings(Context context, Uri uri) {
+ AppSettings settings = new AppSettings();
+ Cursor cur = context.getContentResolver().query(uri, null, null, null, null);
+ if (cur.moveToFirst()) {
+ settings.setPackageName(cur.getString(cur
+ .getColumnIndex(KeychainContract.ApiApps.PACKAGE_NAME)));
+
+ settings.setKeyId(cur.getLong(cur.getColumnIndex(KeychainContract.ApiApps.KEY_ID)));
+
+ settings.setAsciiArmor(cur.getInt(cur
+ .getColumnIndexOrThrow(KeychainContract.ApiApps.ASCII_ARMOR)) == 1);
+
+ settings.setPackageName(cur.getString(cur
+ .getColumnIndex(KeychainContract.ApiApps.PACKAGE_NAME)));
+
+ settings.setPackageName(cur.getString(cur
+ .getColumnIndex(KeychainContract.ApiApps.PACKAGE_NAME)));
+ }
+
+ return settings;
+ }
}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettings.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettings.java
new file mode 100644
index 000000000..fe251a5e7
--- /dev/null
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettings.java
@@ -0,0 +1,70 @@
+package org.sufficientlysecure.keychain.remote_api;
+
+import org.sufficientlysecure.keychain.Id;
+
+public class AppSettings {
+ private String packageName;
+ private long keyId = Id.key.none;
+ private boolean asciiArmor;
+ private int encryptionAlgorithm = 7; // AES-128
+ private int hashAlgorithm = 10; // SHA-512
+ private int compression = 2; // zlib
+
+ public AppSettings() {
+
+ }
+
+ public AppSettings(String packageName) {
+ super();
+ this.packageName = packageName;
+ }
+
+ public String getPackageName() {
+ return packageName;
+ }
+
+ public void setPackageName(String packageName) {
+ this.packageName = packageName;
+ }
+
+ public long getKeyId() {
+ return keyId;
+ }
+
+ public void setKeyId(long scretKeyId) {
+ this.keyId = scretKeyId;
+ }
+
+ public boolean isAsciiArmor() {
+ return asciiArmor;
+ }
+
+ public void setAsciiArmor(boolean asciiArmor) {
+ this.asciiArmor = asciiArmor;
+ }
+
+ public int getEncryptionAlgorithm() {
+ return encryptionAlgorithm;
+ }
+
+ public void setEncryptionAlgorithm(int encryptionAlgorithm) {
+ this.encryptionAlgorithm = encryptionAlgorithm;
+ }
+
+ public int getHashAlgorithm() {
+ return hashAlgorithm;
+ }
+
+ public void setHashAlgorithm(int hashAlgorithm) {
+ this.hashAlgorithm = hashAlgorithm;
+ }
+
+ public int getCompression() {
+ return compression;
+ }
+
+ public void setCompression(int compression) {
+ this.compression = compression;
+ }
+
+}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java
index 55fa72b0e..155369601 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java
@@ -2,12 +2,10 @@ package org.sufficientlysecure.keychain.remote_api;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
-import org.sufficientlysecure.keychain.provider.KeychainContract;
+import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.util.Log;
-import android.content.ContentValues;
import android.content.Intent;
-import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -20,9 +18,7 @@ import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
public class AppSettingsActivity extends SherlockFragmentActivity {
- // model
private Uri mAppUri;
- private String mPackageName;
private AppSettingsFragment settingsFragment;
@@ -91,26 +87,8 @@ public class AppSettingsActivity extends SherlockFragmentActivity {
}
private void loadData(Uri appUri) {
- Cursor cur = getContentResolver().query(appUri, null, null, null, null);
- if (cur.moveToFirst()) {
- mPackageName = cur.getString(cur.getColumnIndex(KeychainContract.ApiApps.PACKAGE_NAME));
-
- settingsFragment.setPackage(mPackageName);
-
- try {
- long secretKeyId = (cur.getLong(cur
- .getColumnIndexOrThrow(KeychainContract.ApiApps.KEY_ID)));
- Log.d(Constants.TAG, "mSecretKeyId: " + secretKeyId);
- settingsFragment.setSecretKey(secretKeyId);
-
- boolean asciiArmor = (cur.getInt(cur
- .getColumnIndexOrThrow(KeychainContract.ApiApps.ASCII_ARMOR)) == 1);
- settingsFragment.setAsciiArmor(asciiArmor);
-
- } catch (IllegalArgumentException e) {
- Log.e(Constants.TAG, "AppSettingsActivity", e);
- }
- }
+ AppSettings settings = ProviderHelper.getApiAppSettings(this, appUri);
+ settingsFragment.setAppSettings(settings);
}
private void revokeAccess() {
@@ -121,15 +99,7 @@ public class AppSettingsActivity extends SherlockFragmentActivity {
}
private void save() {
- final ContentValues cv = new ContentValues();
- cv.put(KeychainContract.ApiApps.KEY_ID, settingsFragment.getSecretKeyId());
-
- cv.put(KeychainContract.ApiApps.ASCII_ARMOR, settingsFragment.isAsciiArmor());
- // TODO: other parameters
-
- if (getContentResolver().update(mAppUri, cv, null, null) <= 0) {
- throw new RuntimeException();
- }
+ ProviderHelper.updateApiApp(this, settingsFragment.getAppSettings(), mAppUri);
finish();
}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsFragment.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsFragment.java
index 69d4e68ea..1bb447a7d 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsFragment.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsFragment.java
@@ -26,6 +26,8 @@ import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.widget.Button;
import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -33,7 +35,7 @@ import android.widget.TextView;
public class AppSettingsFragment extends Fragment {
// model
- private long mSecretKeyId = Id.key.none;
+ private AppSettings appSettings;
// view
private LinearLayout mAdvancedSettingsContainer;
@@ -45,21 +47,15 @@ public class AppSettingsFragment extends Fragment {
private Button mSelectKeyButton;
private CheckBox mAsciiArmorCheckBox;
- public void setSecretKey(long keyId) {
- mSecretKeyId = keyId;
- updateSelectedKeyView(keyId);
+ public AppSettings getAppSettings() {
+ return appSettings;
}
- public long getSecretKeyId() {
- return mSecretKeyId;
- }
-
- public void setAsciiArmor(boolean value) {
- mAsciiArmorCheckBox.setChecked(value);
- }
-
- public boolean isAsciiArmor() {
- return mAsciiArmorCheckBox.isChecked();
+ public void setAppSettings(AppSettings appSettings) {
+ this.appSettings = appSettings;
+ setPackage(appSettings.getPackageName());
+ updateSelectedKeyView(appSettings.getKeyId());
+ mAsciiArmorCheckBox.setChecked(appSettings.isAsciiArmor());
}
/**
@@ -92,6 +88,14 @@ public class AppSettingsFragment extends Fragment {
}
});
+ mAsciiArmorCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
+
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ appSettings.setAsciiArmor(isChecked);
+ }
+ });
+
final Animation visibleAnimation = new AlphaAnimation(0.0f, 1.0f);
visibleAnimation.setDuration(250);
final Animation invisibleAnimation = new AlphaAnimation(1.0f, 0.0f);
@@ -123,7 +127,6 @@ public class AppSettingsFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
-
}
private void selectSecretKey() {
@@ -131,7 +134,7 @@ public class AppSettingsFragment extends Fragment {
startActivityForResult(intent, Id.request.secret_keys);
}
- public void setPackage(String packageName) {
+ private void setPackage(String packageName) {
PackageManager pm = getActivity().getApplicationContext().getPackageManager();
// get application name and icon from package manager
@@ -181,15 +184,16 @@ public class AppSettingsFragment extends Fragment {
switch (requestCode) {
case Id.request.secret_keys: {
+ long secretKeyId;
if (resultCode == Activity.RESULT_OK) {
Bundle bundle = data.getExtras();
- mSecretKeyId = bundle.getLong(SelectSecretKeyActivity.RESULT_EXTRA_MASTER_KEY_ID);
- Log.d(Constants.TAG, "jo " + mSecretKeyId);
+ secretKeyId = bundle.getLong(SelectSecretKeyActivity.RESULT_EXTRA_MASTER_KEY_ID);
} else {
- mSecretKeyId = Id.key.none;
+ secretKeyId = Id.key.none;
}
- updateSelectedKeyView(mSecretKeyId);
+ appSettings.setKeyId(secretKeyId);
+ updateSelectedKeyView(secretKeyId);
break;
}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java
index 39ff79f16..06c64559a 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java
@@ -151,15 +151,14 @@ public class CryptoServiceActivity extends SherlockFragmentActivity {
public void onClick(View v) {
// Allow
- if (settingsFragment.getSecretKeyId() == Id.key.none) {
+ // user needs to select a key!
+ if (settingsFragment.getAppSettings().getKeyId() == Id.key.none) {
Toast.makeText(CryptoServiceActivity.this,
R.string.api_register_error_select_key, Toast.LENGTH_LONG)
.show();
} else {
- ProviderHelper.addCryptoConsumer(CryptoServiceActivity.this,
- packageName, settingsFragment.getSecretKeyId(),
- settingsFragment.isAsciiArmor());
- // Intent data = new Intent();
+ ProviderHelper.insertApiApp(CryptoServiceActivity.this,
+ settingsFragment.getAppSettings());
try {
mServiceCallback.onRegistered(true, packageName);
@@ -199,7 +198,9 @@ public class CryptoServiceActivity extends SherlockFragmentActivity {
settingsFragment = (AppSettingsFragment) getSupportFragmentManager().findFragmentById(
R.id.api_app_settings_fragment);
- settingsFragment.setPackage(packageName);
+ AppSettings settings = new AppSettings(packageName);
+ settingsFragment.setAppSettings(settings);
+
// TODO: handle if app is already registered
// LinearLayout layoutRegister = (LinearLayout)