diff options
author | Zeapo <mohamed@zenadi.com> | 2014-08-06 16:43:37 +0100 |
---|---|---|
committer | Zeapo <mohamed@zenadi.com> | 2014-08-06 16:43:37 +0100 |
commit | 42d22abfbc999699ce8441fc4ffa1af4a6c35ddd (patch) | |
tree | 924056b99a414edef742a55a5f2714221ed51c91 /app/src/main/java/com | |
parent | d4380507b03479f9fd70d741d07e105c76ab3ea6 (diff) |
encryption working with a temporary hack (default account)
Diffstat (limited to 'app/src/main/java/com')
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/PasswordStore.java | 4 | ||||
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java | 93 |
2 files changed, 81 insertions, 16 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java index fdc90518..6faecf86 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java @@ -199,9 +199,9 @@ public class PasswordStore extends Activity implements ToCloneOrNot.OnFragmentI Intent intent = new Intent(this, PgpHandler.class); intent.putExtra("PGP-ID", FileUtils.readFileToString(PasswordRepository.getFile("/.gpg-id"))); intent.putExtra("NAME", "test.gpg"); - intent.putExtra("FILE_PATH", this.currentDir.getAbsolutePath() + "/test.gpg"); + intent.putExtra("FILE_PATH", this.currentDir.getAbsolutePath()); intent.putExtra("Operation", "ENCRYPT"); - startActivity(intent); + startActivityForResult(intent, 0); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java index 72775400..11c2985e 100644 --- a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java +++ b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java @@ -32,15 +32,20 @@ import org.openintents.openpgp.util.OpenPgpApi; import org.openintents.openpgp.util.OpenPgpServiceConnection; import org.openintents.openpgp.util.OpenPgpUtils; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.InputStream; +import java.io.OutputStream; +import java.io.StringReader; import java.io.UnsupportedEncodingException; public class PgpHandler extends Activity { private OpenPgpServiceConnection mServiceConnection; + private String keyIDs = ""; + SharedPreferences settings; public static final int REQUEST_CODE_SIGN = 9910; public static final int REQUEST_CODE_ENCRYPT = 9911; @@ -73,7 +78,7 @@ public class PgpHandler extends Activity { } // some persistance - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); + settings = PreferenceManager.getDefaultSharedPreferences(this); String providerPackageName = settings.getString("openpgp_provider_list", ""); String accountName = settings.getString("openpgp_account_name", ""); @@ -109,8 +114,20 @@ public class PgpHandler extends Activity { return super.onOptionsItemSelected(item); } - public void decrypt(View view) { - decryptAndVerify(new Intent()); + public void handleClick(View view) { + switch (view.getId()) { + case R.id.crypto_show_button : + decryptAndVerify(new Intent()); + break; + case R.id.crypto_confirm_add: + encrypt(new Intent()); + break; + case R.id.crypto_cancel_add: + break; + default: + // should not happen + + } // getKeyIds(new Intent()); } @@ -124,6 +141,7 @@ public class PgpHandler extends Activity { Toast.LENGTH_LONG).show(); Log.e(Constants.TAG, "onError getErrorId:" + error.getErrorId()); Log.e(Constants.TAG, "onError getMessage:" + error.getMessage()); + Log.e(Constants.TAG, " " + error.toString()); } }); } @@ -202,7 +220,7 @@ public class PgpHandler extends Activity { showToast("RESULT_CODE_SUCCESS"); // encrypt/decrypt/sign/verify - if (os != null) { + if (requestCode == REQUEST_CODE_DECRYPT_AND_VERIFY && os != null) { try { Log.d(OpenPgpApi.TAG, "result: " + os.toByteArray().length + " str=" + os.toString("UTF-8")); @@ -227,6 +245,29 @@ public class PgpHandler extends Activity { Log.e(Constants.TAG, "UnsupportedEncodingException", e); } } + // encrypt + if (requestCode == REQUEST_CODE_ENCRYPT && os != null) { + try { + Log.d(OpenPgpApi.TAG, "result: " + os.toByteArray().length + + " str=" + os.toString("UTF-8")); + + if (returnToCiphertextField) { + String path = getIntent().getExtras().getString("FILE_PATH") + + "/" + ((EditText) findViewById(R.id.crypto_password_file_edit)).getText().toString() + + ".gpg"; + OutputStream outputStream = FileUtils.openOutputStream(new File(path)); + outputStream.write(os.toByteArray()); + finishActivity(0); + } else { + showToast(os.toString()); + } + + } catch (Exception e) { + Log.e(Constants.TAG, "UnsupportedEncodingException", e); + } + } + + // verify if (result.hasExtra(OpenPgpApi.RESULT_SIGNATURE)) { @@ -237,13 +278,11 @@ public class PgpHandler extends Activity { // get key ids if (result.hasExtra(OpenPgpApi.RESULT_KEY_IDS)) { - long[] keyIds = result.getLongArrayExtra(OpenPgpApi.RESULT_KEY_IDS); - String out = "keyIds: "; - for (int i = 0; i < keyIds.length; i++) { - out += OpenPgpUtils.convertKeyIdToHex(keyIds[i]) + ", "; - } + long[] ids = result.getLongArrayExtra(OpenPgpApi.RESULT_KEY_IDS); - showToast(out); + for (int i = 0; i < ids.length; i++) { + keyIDs += OpenPgpUtils.convertKeyIdToHex(ids[i]) + ", "; + } } break; } @@ -288,6 +327,32 @@ public class PgpHandler extends Activity { } + public void encrypt(Intent data) { + + data.setAction(OpenPgpApi.ACTION_ENCRYPT); + data.putExtra(OpenPgpApi.EXTRA_USER_IDS, new String[] {"default"}); + data.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true); + + String pass = ((EditText) findViewById(R.id.crypto_password_edit)).getText().toString(); + String extra = ((EditText) findViewById(R.id.crypto_extra_edit)).getText().toString(); + + ByteArrayInputStream is; + + try { + is = new ByteArrayInputStream((pass + "\n" + extra).getBytes("UTF-8")); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + + OpenPgpApi api = new OpenPgpApi(this, mServiceConnection.getService()); + api.executeApiAsync(data, is, os, new MyCallback(true, os, REQUEST_CODE_ENCRYPT)); + + }catch (Exception e) { + e.printStackTrace(); + } + + } + + public void getKeyIds(Intent data) { data.setAction(OpenPgpApi.ACTION_GET_KEY_IDS); data.putExtra(OpenPgpApi.EXTRA_USER_IDS, new String[]{getIntent().getExtras().getString("PGP-ID")}); @@ -314,10 +379,10 @@ public class PgpHandler extends Activity { // sign(data); // break; // } -// case REQUEST_CODE_ENCRYPT: { -// encrypt(data); -// break; -// } + case REQUEST_CODE_ENCRYPT: { + encrypt(data); + break; + } // case REQUEST_CODE_SIGN_AND_ENCRYPT: { // signAndEncrypt(data); // break; |