added account name settings and made it mandatory for encryption

This commit is contained in:
Zeapo 2014-08-07 00:38:16 +01:00
parent 835bbc01dc
commit 4cd5a11185
3 changed files with 63 additions and 31 deletions

View file

@ -23,10 +23,11 @@ TODOs
===== =====
- Initialize a new pass repository - Initialize a new pass repository
- Pull from/Push to a pass repository - Pull from/Push to a pass repository
- Create a new cateogry - Create a new category
- Multi-select (for password deletion) - Multi-select (for password deletion)
- Multiple password stores (multiple git repositories). - Multiple password stores (multiple git repositories).
- More UI enhancements - More UI enhancements
- Clean-up the hard-coded strings
Needed Needed
====== ======

View file

@ -46,6 +46,7 @@ public class PgpHandler extends Activity {
private OpenPgpServiceConnection mServiceConnection; private OpenPgpServiceConnection mServiceConnection;
private String keyIDs = ""; private String keyIDs = "";
private String accountName = "";
SharedPreferences settings; SharedPreferences settings;
public static final int REQUEST_CODE_SIGN = 9910; public static final int REQUEST_CODE_SIGN = 9910;
@ -80,7 +81,7 @@ public class PgpHandler extends Activity {
// some persistance // some persistance
settings = PreferenceManager.getDefaultSharedPreferences(this); settings = PreferenceManager.getDefaultSharedPreferences(this);
String providerPackageName = settings.getString("openpgp_provider_list", ""); String providerPackageName = settings.getString("openpgp_provider_list", "");
String accountName = settings.getString("openpgp_account_name", ""); accountName = settings.getString("openpgp_account_name", "");
if (TextUtils.isEmpty(providerPackageName)) { if (TextUtils.isEmpty(providerPackageName)) {
Toast.makeText(this, "No OpenPGP Provider selected!", Toast.LENGTH_LONG).show(); Toast.makeText(this, "No OpenPGP Provider selected!", Toast.LENGTH_LONG).show();
@ -95,6 +96,7 @@ public class PgpHandler extends Activity {
ActionBar actionBar = getActionBar(); ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true);
Log.i("", accountName);
} }
@ -122,7 +124,7 @@ public class PgpHandler extends Activity {
public void handleClick(View view) { public void handleClick(View view) {
switch (view.getId()) { switch (view.getId()) {
case R.id.crypto_show_button : case R.id.crypto_show_button:
decryptAndVerify(new Intent()); decryptAndVerify(new Intent());
break; break;
case R.id.crypto_confirm_add: case R.id.crypto_confirm_add:
@ -180,7 +182,7 @@ public class PgpHandler extends Activity {
TextView extraText = (TextView) findViewById(R.id.crypto_extra_show); TextView extraText = (TextView) findViewById(R.id.crypto_extra_show);
if (extraText.getText().length() != 0) if (extraText.getText().length() != 0)
((LinearLayout) findViewById(R.id.crypto_extra_show_layout )).setVisibility(View.VISIBLE); ((LinearLayout) findViewById(R.id.crypto_extra_show_layout)).setVisibility(View.VISIBLE);
this.pb = (ProgressBar) findViewById(R.id.pbLoading); this.pb = (ProgressBar) findViewById(R.id.pbLoading);
this.pb.setMax(SHOW_TIME); this.pb.setMax(SHOW_TIME);
@ -189,7 +191,8 @@ public class PgpHandler extends Activity {
@Override @Override
protected Boolean doInBackground(Void... params) { protected Boolean doInBackground(Void... params) {
while (this.count < SHOW_TIME) { while (this.count < SHOW_TIME) {
SystemClock.sleep(1000); this.count++; SystemClock.sleep(1000);
this.count++;
publishProgress(this.count); publishProgress(this.count);
} }
return true; return true;
@ -241,7 +244,7 @@ public class PgpHandler extends Activity {
((TextView) findViewById(R.id.crypto_password_show)) ((TextView) findViewById(R.id.crypto_password_show))
.setText(passContent[0]); .setText(passContent[0]);
String extraContent = os.toString("UTF-8").replaceFirst(".*\n",""); String extraContent = os.toString("UTF-8").replaceFirst(".*\n", "");
if (extraContent.length() != 0) { if (extraContent.length() != 0) {
((TextView) findViewById(R.id.crypto_extra_show)) ((TextView) findViewById(R.id.crypto_extra_show))
.setText(extraContent); .setText(extraContent);
@ -278,7 +281,6 @@ public class PgpHandler extends Activity {
} }
// verify // verify
if (result.hasExtra(OpenPgpApi.RESULT_SIGNATURE)) { if (result.hasExtra(OpenPgpApi.RESULT_SIGNATURE)) {
OpenPgpSignatureResult sigResult OpenPgpSignatureResult sigResult
@ -338,38 +340,62 @@ public class PgpHandler extends Activity {
public void encrypt(Intent data) { public void encrypt(Intent data) {
accountName = settings.getString("openpgp_account_name", "");
data.setAction(OpenPgpApi.ACTION_ENCRYPT); if (accountName.isEmpty()) {
// TODO add preference so that the user sets his account name new AlertDialog.Builder(this)
data.putExtra(OpenPgpApi.EXTRA_USER_IDS, new String[] {"default"}); .setMessage("Please set your OpenKeychain account (email) in the preferences")
data.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true); .setTitle("Account name empty!")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
try {
Intent intent = new Intent(getApplicationContext(), UserPreference.class);
startActivity(intent);
} catch (Exception e) {
System.out.println("Exception caught :(");
e.printStackTrace();
}
}
}).setNegativeButton("No thanks", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// Do nothing...
}
}).show();
} else {
String name = ((EditText) findViewById(R.id.crypto_password_file_edit)).getText().toString(); data.setAction(OpenPgpApi.ACTION_ENCRYPT);
String pass = ((EditText) findViewById(R.id.crypto_password_edit)).getText().toString(); data.putExtra(OpenPgpApi.EXTRA_USER_IDS, new String[]{accountName});
String extra = ((EditText) findViewById(R.id.crypto_extra_edit)).getText().toString(); data.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true);
if (name.isEmpty()) { String name = ((EditText) findViewById(R.id.crypto_password_file_edit)).getText().toString();
showToast("Please provide a file name"); String pass = ((EditText) findViewById(R.id.crypto_password_edit)).getText().toString();
return; String extra = ((EditText) findViewById(R.id.crypto_extra_edit)).getText().toString();
}
if (pass.isEmpty()) { if (name.isEmpty()) {
showToast("You cannot use an empty password or empty extra content"); showToast("Please provide a file name");
return; return;
} }
ByteArrayInputStream is; if (pass.isEmpty() || extra.isEmpty()) {
showToast("You cannot use an empty password or empty extra content");
return;
}
try { ByteArrayInputStream is;
is = new ByteArrayInputStream((pass + "\n" + extra).getBytes("UTF-8"));
ByteArrayOutputStream os = new ByteArrayOutputStream(); try {
is = new ByteArrayInputStream((pass + "\n" + extra).getBytes("UTF-8"));
OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); ByteArrayOutputStream os = new ByteArrayOutputStream();
api.executeApiAsync(data, is, os, new MyCallback(true, os, REQUEST_CODE_ENCRYPT));
}catch (Exception e) { OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService());
e.printStackTrace(); api.executeApiAsync(data, is, os, new MyCallback(true, os, REQUEST_CODE_ENCRYPT));
} catch (Exception e) {
e.printStackTrace();
}
} }
} }
@ -377,7 +403,7 @@ public class PgpHandler extends Activity {
private void deletePassword() { private void deletePassword() {
new AlertDialog.Builder(this). new AlertDialog.Builder(this).
setMessage("Are you sure you want to delete the password \"" + setMessage("Are you sure you want to delete the password \"" +
getIntent().getExtras().getString("NAME") + "\"") getIntent().getExtras().getString("NAME") + "\"")
.setPositiveButton("YES", new DialogInterface.OnClickListener() { .setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialogInterface, int i) { public void onClick(DialogInterface dialogInterface, int i) {

View file

@ -5,5 +5,10 @@
<org.openintents.openpgp.util.OpenPgpListPreference <org.openintents.openpgp.util.OpenPgpListPreference
android:key="openpgp_provider_list" android:key="openpgp_provider_list"
android:title="Select OpenPGP Provider!" /> android:title="Select OpenPGP Provider!" />
<EditTextPreference android:title="OpenPGP account"
android:hint="mail@somewhere.tld"
android:key="openpgp_account_name"/>
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>