aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/crypto
diff options
context:
space:
mode:
authorMohamed Zenadi <mohamed@zenadi.com>2015-05-17 18:08:59 +0200
committerMohamed Zenadi <mohamed@zenadi.com>2015-05-17 18:08:59 +0200
commite7b766bfd46706805b110c1cfdfbdb1f485b2bad (patch)
tree0ac87d2766e7b75c6e751ce95fe7313fce8de920 /app/src/main/java/com/zeapo/pwdstore/crypto
parenta23b268d9bcc941f1073465bc43ccf98f63a9d3c (diff)
downloadHardenedPass-e7b766bfd46706805b110c1cfdfbdb1f485b2bad.tar.gz
HardenedPass-e7b766bfd46706805b110c1cfdfbdb1f485b2bad.zip
fix #85, use key_ids correctly
as bonus, guava and retrolambda! Nicer code
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/crypto')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java34
1 files changed, 18 insertions, 16 deletions
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 3e94344d..baa25c16 100644
--- a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java
+++ b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java
@@ -25,17 +25,16 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
+import com.google.common.primitives.Longs;
import com.zeapo.pwdstore.R;
import com.zeapo.pwdstore.UserPreference;
import com.zeapo.pwdstore.utils.PasswordRepository;
import org.apache.commons.io.FileUtils;
-import org.eclipse.jgit.util.StringUtils;
import org.openintents.openpgp.IOpenPgpService;
import org.openintents.openpgp.OpenPgpError;
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;
@@ -44,12 +43,14 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConnection.OnBound{
private OpenPgpServiceConnection mServiceConnection;
- private String keyIDs = "";
+ private Set<String> keyIDs = new HashSet<>();
SharedPreferences settings;
private Activity activity;
ClipboardManager clipboard;
@@ -82,7 +83,7 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne
// some persistance
settings = PreferenceManager.getDefaultSharedPreferences(this);
String providerPackageName = settings.getString("openpgp_provider_list", "");
- keyIDs = settings.getString("openpgp_key_ids", "");
+ keyIDs = settings.getStringSet("openpgp_key_ids_set", new HashSet<>());
registered = false;
@@ -355,6 +356,7 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne
+ ".gpg";
OutputStream outputStream = FileUtils.openOutputStream(new File(path));
outputStream.write(os.toByteArray());
+ outputStream.close();
Intent data = new Intent();
data.putExtra("CREATED_FILE", path);
data.putExtra("NAME", ((EditText) findViewById(R.id.crypto_password_file_edit)).getText().toString());
@@ -368,18 +370,10 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne
// get key ids
if (result.hasExtra(OpenPgpApi.RESULT_KEY_IDS)) {
long[] ids = result.getLongArrayExtra(OpenPgpApi.RESULT_KEY_IDS);
- ArrayList<String> keys = new ArrayList<String>();
+ Set<String> keys = new HashSet<String>();
- for (int i = 0; i < ids.length; i++) {
- keys.add(OpenPgpUtils.convertKeyIdToHex(ids[i]));
- }
- keyIDs = StringUtils.join(keys, ", ");
-
- if (!keyIDs.isEmpty()) {
- String mKeys = keyIDs.split(",").length > 1 ? keyIDs : keyIDs.split(",")[0];
-// ((TextView) findViewById(R.id.crypto_key_ids)).setText(mKeys);
- settings.edit().putString("openpgp_key_ids", keyIDs).apply();
- }
+ for (long id : ids) keys.add(String.valueOf(id)); // use Long
+ settings.edit().putStringSet("openpgp_key_ids_set", keys).apply();
showToast("PGP key selected");
setResult(RESULT_OK);
@@ -438,9 +432,17 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne
}
}
-
+ /**
+ * Encrypts a password file
+ * @param data
+ */
public void encrypt(Intent data) {
data.setAction(OpenPgpApi.ACTION_ENCRYPT);
+
+ ArrayList<Long> longKeys = new ArrayList<>();
+ for (String keyId : keyIDs) longKeys.add(Long.valueOf(keyId));
+ data.putExtra(OpenPgpApi.EXTRA_KEY_IDS, Longs.toArray(longKeys));
+
data.putExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true);
String name = ((EditText) findViewById(R.id.crypto_password_file_edit)).getText().toString();