aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-01-12 20:04:15 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2015-01-12 20:04:15 +0100
commit9fe701c866673d80cabc418ac675718447f76145 (patch)
tree910d866b75cc71e10d2cc30bc6c100f0975011d5 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation
parent8408113322242b8811b4a0fa874c172c274b9f0e (diff)
downloadopen-keychain-9fe701c866673d80cabc418ac675718447f76145.tar.gz
open-keychain-9fe701c866673d80cabc418ac675718447f76145.tar.bz2
open-keychain-9fe701c866673d80cabc418ac675718447f76145.zip
work on affirmations (begin rename to LinkedIdentity
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/Affirmation.java163
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/LinkedIdentity.java3
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/GenericHttpsResource.java9
3 files changed, 2 insertions, 173 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/Affirmation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/Affirmation.java
deleted file mode 100644
index 892231cbe..000000000
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/Affirmation.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.sufficientlysecure.keychain.pgp.affirmation;
-
-import org.spongycastle.bcpg.UserAttributeSubpacket;
-import org.spongycastle.util.BigIntegers;
-import org.spongycastle.util.Strings;
-import org.spongycastle.util.encoders.Hex;
-import org.sufficientlysecure.keychain.Constants;
-import org.sufficientlysecure.keychain.util.Log;
-
-import java.math.BigInteger;
-import java.net.URI;
-import java.security.SecureRandom;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.Set;
-
-public class Affirmation {
-
- protected byte[] mData;
- public final String mNonce;
- public final URI mSubUri;
- final Set<String> mFlags;
- final HashMap<String,String> mParams;
-
- protected Affirmation(byte[] data, String nonce, Set<String> flags,
- HashMap<String,String> params, URI subUri) {
- if ( ! nonce.matches("[0-9a-zA-Z]+")) {
- throw new AssertionError("bug: nonce must be hexstring!");
- }
-
- mData = data;
- mNonce = nonce;
- mFlags = flags;
- mParams = params;
- mSubUri = subUri;
- }
-
- Affirmation(String nonce, Set<String> flags,
- HashMap<String,String> params, URI subUri) {
- this(null, nonce, flags, params, subUri);
- }
-
- public byte[] encode() {
- if (mData != null) {
- return mData;
- }
-
- StringBuilder b = new StringBuilder();
- b.append("pgpid:");
-
- // add flags
- if (mFlags != null) {
- boolean first = true;
- for (String flag : mFlags) {
- if (!first) {
- b.append(";");
- }
- first = false;
- b.append(flag);
- }
- }
-
- // add parameters
- if (mParams != null) {
- boolean first = true;
- Iterator<Entry<String, String>> it = mParams.entrySet().iterator();
- while (it.hasNext()) {
- if (!first) {
- b.append(";");
- }
- first = false;
- Entry<String, String> entry = it.next();
- b.append(entry.getKey()).append("=").append(entry.getValue());
- }
- }
-
- b.append("@");
- b.append(mSubUri);
-
- byte[] nonceBytes = Hex.decode(mNonce);
- byte[] data = Strings.toUTF8ByteArray(b.toString());
-
- byte[] result = new byte[data.length+12];
- System.arraycopy(nonceBytes, 0, result, 0, 12);
- System.arraycopy(data, 0, result, 12, result.length);
-
- return result;
- }
-
- /** This method parses an affirmation from a UserAttributeSubpacket, or returns null if the
- * subpacket can not be parsed as a valid affirmation.
- */
- public static Affirmation parseAffirmation(UserAttributeSubpacket subpacket) {
- if (subpacket.getType() != 100) {
- return null;
- }
-
- byte[] data = subpacket.getData();
- String nonce = Hex.toHexString(data, 0, 12);
-
- try {
- return parseUri(nonce, Strings.fromUTF8ByteArray(Arrays.copyOfRange(data, 12, data.length)));
-
- } catch (IllegalArgumentException e) {
- Log.e(Constants.TAG, "error parsing uri in (suspected) affirmation packet");
- return null;
- }
- }
-
- protected static Affirmation parseUri (String nonce, String uriString) {
- URI uri = URI.create(uriString);
-
- if ("pgpid".equals(uri.getScheme())) {
- Log.e(Constants.TAG, "unknown uri scheme in (suspected) affirmation packet");
- return null;
- }
-
- if (!uri.isOpaque()) {
- Log.e(Constants.TAG, "non-opaque uri in (suspected) affirmation packet");
- return null;
- }
-
- String specific = uri.getSchemeSpecificPart();
- if (!specific.contains("@")) {
- Log.e(Constants.TAG, "unknown uri scheme in affirmation packet");
- return null;
- }
-
- String[] pieces = specific.split("@", 2);
- URI subUri = URI.create(pieces[1]);
-
- Set<String> flags = new HashSet<String>();
- HashMap<String,String> params = new HashMap<String,String>();
- {
- String[] rawParams = pieces[0].split(";");
- for (String param : rawParams) {
- String[] p = param.split("=", 2);
- if (p.length == 1) {
- flags.add(param);
- } else {
- params.put(p[0], p[1]);
- }
- }
- }
-
- return new Affirmation(nonce, flags, params, subUri);
-
- }
-
- public static String generateNonce() {
- // TODO make this actually random
- // byte[] data = new byte[96];
- // new SecureRandom().nextBytes(data);
- // return Hex.toHexString(data);
-
- // debug for now
- return "0123456789ABCDEF01234567";
- }
-
-}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/LinkedIdentity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/LinkedIdentity.java
index dcbaa1c1c..1e27b2c64 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/LinkedIdentity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/LinkedIdentity.java
@@ -6,6 +6,7 @@ import org.spongycastle.util.encoders.Hex;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.util.Log;
+import java.io.Serializable;
import java.net.URI;
import java.util.Arrays;
import java.util.HashMap;
@@ -14,7 +15,7 @@ import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
-public class LinkedIdentity {
+public class LinkedIdentity implements Serializable {
protected byte[] mData;
public final String mNonce;
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/GenericHttpsResource.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/GenericHttpsResource.java
index c8c3cbb4d..8f4d0c41b 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/GenericHttpsResource.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/GenericHttpsResource.java
@@ -6,21 +6,12 @@ import com.textuality.keybase.lib.Search;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
-import org.sufficientlysecure.keychain.operations.results.DecryptVerifyResult;
-import org.sufficientlysecure.keychain.operations.results.LinkedVerifyResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult.LogType;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
-import org.sufficientlysecure.keychain.pgp.PgpDecryptVerify;
-import org.sufficientlysecure.keychain.pgp.Progressable;
-import org.sufficientlysecure.keychain.pgp.affirmation.Affirmation;
import org.sufficientlysecure.keychain.pgp.affirmation.AffirmationResource;
-import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
-import org.sufficientlysecure.keychain.util.InputData;
import org.sufficientlysecure.keychain.util.Log;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;