affirmation -> linked identity

This commit is contained in:
Vincent Breitmoser
2015-01-15 16:59:11 +01:00
parent c03bcc2799
commit 92b8d874ed
29 changed files with 177 additions and 205 deletions

View File

@@ -39,6 +39,7 @@ public class WrappedUserAttribute implements Serializable {
public static final int UAT_NONE = 0;
public static final int UAT_IMAGE = UserAttributeSubpacketTags.IMAGE_ATTRIBUTE;
public static final int UAT_LINKED_ID = 100;
private PGPUserAttributeSubpacketVector mVector;

View File

@@ -1,7 +1,6 @@
package org.sufficientlysecure.keychain.pgp.affirmation;
package org.sufficientlysecure.keychain.pgp.linked;
import org.spongycastle.bcpg.UserAttributeSubpacket;
import org.spongycastle.openpgp.PGPUserAttributeSubpacketVector;
import org.spongycastle.util.Strings;
import org.spongycastle.util.encoders.Hex;
import org.sufficientlysecure.keychain.Constants;
@@ -92,10 +91,10 @@ public class LinkedIdentity {
return result;
}
/** This method parses an affirmation from a UserAttributeSubpacket, or returns null if the
* subpacket can not be parsed as a valid affirmation.
/** This method parses a linked id from a UserAttributeSubpacket, or returns null if the
* subpacket can not be parsed as a valid linked id.
*/
static LinkedIdentity parseAffirmation(UserAttributeSubpacket subpacket) {
static LinkedIdentity parseAttributeSubpacket(UserAttributeSubpacket subpacket) {
if (subpacket.getType() != 100) {
return null;
}
@@ -107,7 +106,7 @@ public class LinkedIdentity {
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");
Log.e(Constants.TAG, "error parsing uri in (suspected) linked id packet");
return null;
}
}
@@ -116,18 +115,18 @@ public class LinkedIdentity {
URI uri = URI.create(uriString);
if ("pgpid".equals(uri.getScheme())) {
Log.e(Constants.TAG, "unknown uri scheme in (suspected) affirmation packet");
Log.e(Constants.TAG, "unknown uri scheme in (suspected) linked id packet");
return null;
}
if (!uri.isOpaque()) {
Log.e(Constants.TAG, "non-opaque uri in (suspected) affirmation packet");
Log.e(Constants.TAG, "non-opaque uri in (suspected) linked id packet");
return null;
}
String specific = uri.getSchemeSpecificPart();
if (!specific.contains("@")) {
Log.e(Constants.TAG, "unknown uri scheme in affirmation packet");
Log.e(Constants.TAG, "unknown uri scheme in linked id packet");
return null;
}
@@ -152,7 +151,7 @@ public class LinkedIdentity {
}
public static LinkedIdentity fromResource (AffirmationResource res, String nonce) {
public static LinkedIdentity fromResource (LinkedResource res, String nonce) {
return new LinkedIdentity(nonce, res.getFlags(), res.getParams(), res.getSubUri());
}

View File

@@ -1,4 +1,4 @@
package org.sufficientlysecure.keychain.pgp.affirmation;
package org.sufficientlysecure.keychain.pgp.linked;
import android.content.Context;
@@ -6,8 +6,8 @@ import org.sufficientlysecure.keychain.Constants;
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.affirmation.resources.GenericHttpsResource;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.UnknownResource;
import org.sufficientlysecure.keychain.pgp.linked.resources.GenericHttpsResource;
import org.sufficientlysecure.keychain.pgp.linked.resources.UnknownResource;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.util.Log;
@@ -18,7 +18,7 @@ import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public abstract class AffirmationResource {
public abstract class LinkedResource {
protected final URI mSubUri;
protected final Set<String> mFlags;
@@ -27,7 +27,7 @@ public abstract class AffirmationResource {
static Pattern magicPattern =
Pattern.compile("\\[Verifying my PGP key: pgpid\\+cookie:([a-zA-Z0-9]+)#([a-zA-Z0-9]+)\\]");
protected AffirmationResource(Set<String> flags, HashMap<String,String> params, URI uri) {
protected LinkedResource(Set<String> flags, HashMap<String, String> params, URI uri) {
mFlags = flags;
mParams = params;
mSubUri = uri;
@@ -108,10 +108,10 @@ public abstract class AffirmationResource {
}
public static AffirmationResource findResourceType
public static LinkedResource findResourceType
(Set<String> flags, HashMap<String,String> params, URI uri) {
AffirmationResource res;
LinkedResource res;
res = GenericHttpsResource.create(flags, params, uri);
if (res != null) {

View File

@@ -1,9 +1,9 @@
package org.sufficientlysecure.keychain.pgp.affirmation.resources;
package org.sufficientlysecure.keychain.pgp.linked.resources;
import android.content.Context;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.pgp.affirmation.AffirmationResource;
import org.sufficientlysecure.keychain.pgp.linked.LinkedResource;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import java.net.URI;
@@ -20,7 +20,7 @@ import de.measite.minidns.Record;
import de.measite.minidns.Record.TYPE;
import de.measite.minidns.record.TXT;
public class DnsResource extends AffirmationResource {
public class DnsResource extends LinkedResource {
static Pattern magicPattern =
Pattern.compile("pgpid\\+cookie=([a-zA-Z0-9]+)(?:#|;)([a-zA-Z0-9]+)");

View File

@@ -1,4 +1,4 @@
package org.sufficientlysecure.keychain.pgp.affirmation.resources;
package org.sufficientlysecure.keychain.pgp.linked.resources;
import android.content.Context;
@@ -8,8 +8,7 @@ import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.OperationResult.LogType;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.pgp.affirmation.AffirmationResource;
import org.sufficientlysecure.keychain.pgp.affirmation.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.linked.LinkedResource;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.util.Log;
@@ -23,14 +22,14 @@ import java.util.Set;
import javax.net.ssl.HttpsURLConnection;
public class GenericHttpsResource extends AffirmationResource {
public class GenericHttpsResource extends LinkedResource {
GenericHttpsResource(Set<String> flags, HashMap<String,String> params, URI uri) {
super(flags, params, uri);
}
public static String generateText (Context context, byte[] fingerprint, String nonce) {
String cookie = AffirmationResource.generate(context, fingerprint, nonce);
String cookie = LinkedResource.generate(context, fingerprint, nonce);
return String.format(context.getResources().getString(R.string.linked_id_generic_text),
cookie, "0x" + KeyFormattingUtils.convertFingerprintToHex(fingerprint).substring(24));

View File

@@ -1,4 +1,4 @@
package org.sufficientlysecure.keychain.pgp.affirmation.resources;
package org.sufficientlysecure.keychain.pgp.linked.resources;
import android.content.Context;
import android.util.Base64;
@@ -17,7 +17,7 @@ import org.apache.http.params.BasicHttpParams;
import org.json.JSONException;
import org.json.JSONObject;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.pgp.affirmation.AffirmationResource;
import org.sufficientlysecure.keychain.pgp.linked.LinkedResource;
import java.io.BufferedReader;
import java.io.IOException;
@@ -29,7 +29,7 @@ import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Set;
public class TwitterResource extends AffirmationResource {
public class TwitterResource extends LinkedResource {
TwitterResource(Set<String> flags, HashMap<String,String> params, URI uri) {
super(flags, params, uri);
@@ -37,7 +37,7 @@ public class TwitterResource extends AffirmationResource {
public static String generateText (Context context, byte[] fingerprint, String nonce) {
// nothing special here for now, might change this later
return AffirmationResource.generate(context, fingerprint, nonce);
return LinkedResource.generate(context, fingerprint, nonce);
}
private String getTwitterStream(String screenName) {

View File

@@ -1,14 +1,13 @@
package org.sufficientlysecure.keychain.pgp.affirmation.resources;
package org.sufficientlysecure.keychain.pgp.linked.resources;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.pgp.affirmation.AffirmationResource;
import org.sufficientlysecure.keychain.pgp.linked.LinkedResource;
import java.io.IOException;
import java.net.URI;
import java.util.HashMap;
import java.util.Set;
public class UnknownResource extends AffirmationResource {
public class UnknownResource extends LinkedResource {
public UnknownResource(Set<String> flags, HashMap<String,String> params, URI uri) {
super(flags, params, uri);

View File

@@ -33,7 +33,6 @@ import org.sufficientlysecure.keychain.operations.EditKeyOperation;
import org.sufficientlysecure.keychain.operations.results.DeleteResult;
import org.sufficientlysecure.keychain.operations.results.EditKeyResult;
import org.sufficientlysecure.keychain.operations.results.ExportResult;
import org.sufficientlysecure.keychain.operations.results.PgpEditKeyResult;
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
import org.sufficientlysecure.keychain.operations.results.CertifyResult;
import org.sufficientlysecure.keychain.util.FileHelper;

View File

@@ -22,7 +22,6 @@ import android.os.Parcel;
import android.os.Parcelable;
import org.sufficientlysecure.keychain.pgp.WrappedUserAttribute;
import org.sufficientlysecure.keychain.pgp.affirmation.LinkedIdentity;
import java.io.Serializable;
import java.util.ArrayList;

View File

@@ -38,7 +38,7 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround;
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
import org.sufficientlysecure.keychain.provider.KeychainContract.UserPackets;
import org.sufficientlysecure.keychain.ui.affirmations.AffirmationWizard;
import org.sufficientlysecure.keychain.ui.linked.LinkedIdWizard;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
@@ -361,7 +361,7 @@ public class ViewKeyMainFragment extends LoaderFragment implements
}
private void linkKey(Uri dataUri) {
Intent editIntent = new Intent(getActivity(), AffirmationWizard.class);
Intent editIntent = new Intent(getActivity(), LinkedIdWizard.class);
editIntent.setData(KeyRings.buildUnifiedKeyRingUri(dataUri));
startActivityForResult(editIntent, 0);
}

View File

@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@@ -29,20 +29,20 @@ import android.view.ViewGroup;
import android.widget.EditText;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.affirmation.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.DnsResource;
import org.sufficientlysecure.keychain.pgp.linked.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.linked.resources.DnsResource;
public class AffirmationCreateDnsStep1Fragment extends Fragment {
public class LinkedIdCreateDnsStep1Fragment extends Fragment {
AffirmationWizard mAffirmationWizard;
LinkedIdWizard mLinkedIdWizard;
EditText mEditDns;
/**
* Creates new instance of this fragment
*/
public static AffirmationCreateDnsStep1Fragment newInstance() {
AffirmationCreateDnsStep1Fragment frag = new AffirmationCreateDnsStep1Fragment();
public static LinkedIdCreateDnsStep1Fragment newInstance() {
LinkedIdCreateDnsStep1Fragment frag = new LinkedIdCreateDnsStep1Fragment();
Bundle args = new Bundle();
frag.setArguments(args);
@@ -54,13 +54,13 @@ public class AffirmationCreateDnsStep1Fragment extends Fragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAffirmationWizard = (AffirmationWizard) getActivity();
mLinkedIdWizard = (LinkedIdWizard) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.affirmation_create_dns_fragment_step1, container, false);
final View view = inflater.inflate(R.layout.linked_create_dns_fragment_step1, container, false);
view.findViewById(R.id.next_button).setOnClickListener(new OnClickListener() {
@Override
@@ -75,12 +75,12 @@ public class AffirmationCreateDnsStep1Fragment extends Fragment {
String proofNonce = LinkedIdentity.generateNonce();
String proofText = DnsResource.generateText(getActivity(),
mAffirmationWizard.mFingerprint, proofNonce);
mLinkedIdWizard.mFingerprint, proofNonce);
AffirmationCreateDnsStep2Fragment frag =
AffirmationCreateDnsStep2Fragment.newInstance(uri, proofNonce, proofText);
LinkedIdCreateDnsStep2Fragment frag =
LinkedIdCreateDnsStep2Fragment.newInstance(uri, proofNonce, proofText);
mAffirmationWizard.loadFragment(null, frag, AffirmationWizard.FRAG_ACTION_TO_RIGHT);
mLinkedIdWizard.loadFragment(null, frag, LinkedIdWizard.FRAG_ACTION_TO_RIGHT);
}
});
@@ -88,11 +88,11 @@ public class AffirmationCreateDnsStep1Fragment extends Fragment {
view.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAffirmationWizard.loadFragment(null, null, AffirmationWizard.FRAG_ACTION_TO_LEFT);
mLinkedIdWizard.loadFragment(null, null, LinkedIdWizard.FRAG_ACTION_TO_LEFT);
}
});
mEditDns = (EditText) view.findViewById(R.id.affirmation_create_dns_domain);
mEditDns = (EditText) view.findViewById(R.id.linked_create_dns_domain);
mEditDns.addTextChangedListener(new TextWatcher() {
@Override

View File

@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.app.Activity;
import android.app.ProgressDialog;
@@ -42,8 +42,8 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.LinkedVerifyResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.pgp.WrappedUserAttribute;
import org.sufficientlysecure.keychain.pgp.affirmation.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.DnsResource;
import org.sufficientlysecure.keychain.pgp.linked.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.linked.resources.DnsResource;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
@@ -56,14 +56,14 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class AffirmationCreateDnsStep2Fragment extends Fragment {
public class LinkedIdCreateDnsStep2Fragment extends Fragment {
private static final int REQUEST_CODE_OUTPUT = 0x00007007;
private static final int REQUEST_CODE_PASSPHRASE = 0x00007008;
public static final String DOMAIN = "domain", NONCE = "nonce", TEXT = "text";
AffirmationWizard mAffirmationWizard;
LinkedIdWizard mLinkedIdWizard;
EditText mEditUri;
ImageView mVerifyImage;
@@ -79,10 +79,10 @@ public class AffirmationCreateDnsStep2Fragment extends Fragment {
/**
* Creates new instance of this fragment
*/
public static AffirmationCreateDnsStep2Fragment newInstance
public static LinkedIdCreateDnsStep2Fragment newInstance
(String uri, String proofNonce, String proofText) {
AffirmationCreateDnsStep2Fragment frag = new AffirmationCreateDnsStep2Fragment();
LinkedIdCreateDnsStep2Fragment frag = new LinkedIdCreateDnsStep2Fragment();
Bundle args = new Bundle();
args.putString(DOMAIN, uri);
@@ -95,7 +95,7 @@ public class AffirmationCreateDnsStep2Fragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.affirmation_create_dns_fragment_step2, container, false);
final View view = inflater.inflate(R.layout.linked_create_dns_fragment_step2, container, false);
mResourceDomain = getArguments().getString(DOMAIN);
mResourceNonce = getArguments().getString(NONCE);
@@ -111,7 +111,7 @@ public class AffirmationCreateDnsStep2Fragment extends Fragment {
view.findViewById(R.id.back_button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mAffirmationWizard.loadFragment(null, null, AffirmationWizard.FRAG_ACTION_TO_LEFT);
mLinkedIdWizard.loadFragment(null, null, LinkedIdWizard.FRAG_ACTION_TO_LEFT);
}
});
@@ -140,7 +140,7 @@ public class AffirmationCreateDnsStep2Fragment extends Fragment {
}
});
mEditUri = (EditText) view.findViewById(R.id.affirmation_create_dns_text);
mEditUri = (EditText) view.findViewById(R.id.linked_create_dns_text);
mEditUri.setText(mResourceString);
setVerifyProgress(false, null);
@@ -153,7 +153,7 @@ public class AffirmationCreateDnsStep2Fragment extends Fragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAffirmationWizard = (AffirmationWizard) getActivity();
mLinkedIdWizard = (LinkedIdWizard) getActivity();
}
public void setVerifyProgress(boolean on, Boolean success) {
@@ -226,7 +226,7 @@ public class AffirmationCreateDnsStep2Fragment extends Fragment {
@Override
protected LinkedVerifyResult doInBackground(Void... params) {
return resource.verify(mAffirmationWizard.mFingerprint, mResourceNonce);
return resource.verify(mLinkedIdWizard.mFingerprint, mResourceNonce);
}
@Override
@@ -253,7 +253,7 @@ public class AffirmationCreateDnsStep2Fragment extends Fragment {
}
Intent intent = new Intent(getActivity(), PassphraseDialogActivity.class);
intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, mAffirmationWizard.mMasterKeyId);
intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, mLinkedIdWizard.mMasterKeyId);
startActivityForResult(intent, REQUEST_CODE_PASSPHRASE);
}
@@ -305,7 +305,7 @@ public class AffirmationCreateDnsStep2Fragment extends Fragment {
};
SaveKeyringParcel skp =
new SaveKeyringParcel(mAffirmationWizard.mMasterKeyId, mAffirmationWizard.mFingerprint);
new SaveKeyringParcel(mLinkedIdWizard.mMasterKeyId, mLinkedIdWizard.mFingerprint);
WrappedUserAttribute ua =
LinkedIdentity.fromResource(mVerifiedResource, mResourceNonce).toUserAttribute();

View File

@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@@ -29,20 +29,20 @@ import android.view.ViewGroup;
import android.widget.EditText;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.affirmation.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.GenericHttpsResource;
import org.sufficientlysecure.keychain.pgp.linked.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.linked.resources.GenericHttpsResource;
public class AffirmationCreateHttpsStep1Fragment extends Fragment {
public class LinkedIdCreateHttpsStep1Fragment extends Fragment {
AffirmationWizard mAffirmationWizard;
LinkedIdWizard mLinkedIdWizard;
EditText mEditUri;
/**
* Creates new instance of this fragment
*/
public static AffirmationCreateHttpsStep1Fragment newInstance() {
AffirmationCreateHttpsStep1Fragment frag = new AffirmationCreateHttpsStep1Fragment();
public static LinkedIdCreateHttpsStep1Fragment newInstance() {
LinkedIdCreateHttpsStep1Fragment frag = new LinkedIdCreateHttpsStep1Fragment();
Bundle args = new Bundle();
frag.setArguments(args);
@@ -54,13 +54,13 @@ public class AffirmationCreateHttpsStep1Fragment extends Fragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAffirmationWizard = (AffirmationWizard) getActivity();
mLinkedIdWizard = (LinkedIdWizard) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.affirmation_create_https_fragment_step1, container, false);
final View view = inflater.inflate(R.layout.linked_create_https_fragment_step1, container, false);
view.findViewById(R.id.next_button).setOnClickListener(new OnClickListener() {
@Override
@@ -74,12 +74,12 @@ public class AffirmationCreateHttpsStep1Fragment extends Fragment {
String proofNonce = LinkedIdentity.generateNonce();
String proofText = GenericHttpsResource.generateText(getActivity(),
mAffirmationWizard.mFingerprint, proofNonce);
mLinkedIdWizard.mFingerprint, proofNonce);
AffirmationCreateHttpsStep2Fragment frag =
AffirmationCreateHttpsStep2Fragment.newInstance(uri, proofNonce, proofText);
LinkedIdCreateHttpsStep2Fragment frag =
LinkedIdCreateHttpsStep2Fragment.newInstance(uri, proofNonce, proofText);
mAffirmationWizard.loadFragment(null, frag, AffirmationWizard.FRAG_ACTION_TO_RIGHT);
mLinkedIdWizard.loadFragment(null, frag, LinkedIdWizard.FRAG_ACTION_TO_RIGHT);
}
});
@@ -87,11 +87,11 @@ public class AffirmationCreateHttpsStep1Fragment extends Fragment {
view.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAffirmationWizard.loadFragment(null, null, AffirmationWizard.FRAG_ACTION_TO_LEFT);
mLinkedIdWizard.loadFragment(null, null, LinkedIdWizard.FRAG_ACTION_TO_LEFT);
}
});
mEditUri = (EditText) view.findViewById(R.id.affirmation_create_https_uri);
mEditUri = (EditText) view.findViewById(R.id.linked_create_https_uri);
mEditUri.addTextChangedListener(new TextWatcher() {
@Override

View File

@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.app.Activity;
import android.app.ProgressDialog;
@@ -42,13 +42,11 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.LinkedVerifyResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.pgp.WrappedUserAttribute;
import org.sufficientlysecure.keychain.pgp.affirmation.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.GenericHttpsResource;
import org.sufficientlysecure.keychain.pgp.linked.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.linked.resources.GenericHttpsResource;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
import org.sufficientlysecure.keychain.service.PassphraseCacheService;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
import org.sufficientlysecure.keychain.ui.EditKeyActivity;
import org.sufficientlysecure.keychain.ui.PassphraseDialogActivity;
import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.ui.util.Notify.Style;
@@ -60,14 +58,14 @@ import java.io.PrintWriter;
import java.net.URI;
import java.net.URISyntaxException;
public class AffirmationCreateHttpsStep2Fragment extends Fragment {
public class LinkedIdCreateHttpsStep2Fragment extends Fragment {
private static final int REQUEST_CODE_OUTPUT = 0x00007007;
private static final int REQUEST_CODE_PASSPHRASE = 0x00007008;
public static final String URI = "uri", NONCE = "nonce", TEXT = "text";
AffirmationWizard mAffirmationWizard;
LinkedIdWizard mLinkedIdWizard;
EditText mEditUri;
ImageView mVerifyImage;
@@ -83,10 +81,10 @@ public class AffirmationCreateHttpsStep2Fragment extends Fragment {
/**
* Creates new instance of this fragment
*/
public static AffirmationCreateHttpsStep2Fragment newInstance
public static LinkedIdCreateHttpsStep2Fragment newInstance
(String uri, String proofNonce, String proofText) {
AffirmationCreateHttpsStep2Fragment frag = new AffirmationCreateHttpsStep2Fragment();
LinkedIdCreateHttpsStep2Fragment frag = new LinkedIdCreateHttpsStep2Fragment();
Bundle args = new Bundle();
args.putString(URI, uri);
@@ -99,7 +97,7 @@ public class AffirmationCreateHttpsStep2Fragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.affirmation_create_https_fragment_step2, container, false);
final View view = inflater.inflate(R.layout.linked_create_https_fragment_step2, container, false);
mResourceUri = getArguments().getString(URI);
mResourceNonce = getArguments().getString(NONCE);
@@ -115,7 +113,7 @@ public class AffirmationCreateHttpsStep2Fragment extends Fragment {
view.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAffirmationWizard.loadFragment(null, null, AffirmationWizard.FRAG_ACTION_TO_LEFT);
mLinkedIdWizard.loadFragment(null, null, LinkedIdWizard.FRAG_ACTION_TO_LEFT);
}
});
@@ -144,7 +142,7 @@ public class AffirmationCreateHttpsStep2Fragment extends Fragment {
}
});
mEditUri = (EditText) view.findViewById(R.id.affirmation_create_https_uri);
mEditUri = (EditText) view.findViewById(R.id.linked_create_https_uri);
mEditUri.setText(mResourceUri);
setVerifyProgress(false, null);
@@ -157,7 +155,7 @@ public class AffirmationCreateHttpsStep2Fragment extends Fragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAffirmationWizard = (AffirmationWizard) getActivity();
mLinkedIdWizard = (LinkedIdWizard) getActivity();
}
public void setVerifyProgress(boolean on, Boolean success) {
@@ -231,7 +229,7 @@ public class AffirmationCreateHttpsStep2Fragment extends Fragment {
@Override
protected LinkedVerifyResult doInBackground(Void... params) {
return resource.verify(mAffirmationWizard.mFingerprint, mResourceNonce);
return resource.verify(mLinkedIdWizard.mFingerprint, mResourceNonce);
}
@Override
@@ -261,7 +259,7 @@ public class AffirmationCreateHttpsStep2Fragment extends Fragment {
}
Intent intent = new Intent(getActivity(), PassphraseDialogActivity.class);
intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, mAffirmationWizard.mMasterKeyId);
intent.putExtra(PassphraseDialogActivity.EXTRA_SUBKEY_ID, mLinkedIdWizard.mMasterKeyId);
startActivityForResult(intent, REQUEST_CODE_PASSPHRASE);
}
@@ -313,7 +311,7 @@ public class AffirmationCreateHttpsStep2Fragment extends Fragment {
};
SaveKeyringParcel skp =
new SaveKeyringParcel(mAffirmationWizard.mMasterKeyId, mAffirmationWizard.mFingerprint);
new SaveKeyringParcel(mLinkedIdWizard.mMasterKeyId, mLinkedIdWizard.mFingerprint);
WrappedUserAttribute ua =
LinkedIdentity.fromResource(mVerifiedResource, mResourceNonce).toUserAttribute();

View File

@@ -15,14 +15,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -30,28 +27,25 @@ import android.view.ViewGroup;
import android.widget.EditText;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.affirmation.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.GenericHttpsResource;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.TwitterResource;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity;
import org.sufficientlysecure.keychain.pgp.linked.LinkedIdentity;
import org.sufficientlysecure.keychain.pgp.linked.resources.TwitterResource;
import org.sufficientlysecure.keychain.ui.util.Notify;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class AffirmationCreateTwitterStep1Fragment extends Fragment {
public class LinkedIdCreateTwitterStep1Fragment extends Fragment {
AffirmationWizard mAffirmationWizard;
LinkedIdWizard mLinkedIdWizard;
EditText mEditHandle;
/**
* Creates new instance of this fragment
*/
public static AffirmationCreateTwitterStep1Fragment newInstance() {
AffirmationCreateTwitterStep1Fragment frag = new AffirmationCreateTwitterStep1Fragment();
public static LinkedIdCreateTwitterStep1Fragment newInstance() {
LinkedIdCreateTwitterStep1Fragment frag = new LinkedIdCreateTwitterStep1Fragment();
Bundle args = new Bundle();
frag.setArguments(args);
@@ -63,13 +57,13 @@ public class AffirmationCreateTwitterStep1Fragment extends Fragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAffirmationWizard = (AffirmationWizard) getActivity();
mLinkedIdWizard = (LinkedIdWizard) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.affirmation_create_twitter_fragment_step1, container, false);
final View view = inflater.inflate(R.layout.linked_create_twitter_fragment_step1, container, false);
view.findViewById(R.id.next_button).setOnClickListener(new OnClickListener() {
@Override
@@ -100,12 +94,12 @@ public class AffirmationCreateTwitterStep1Fragment extends Fragment {
String proofNonce = LinkedIdentity.generateNonce();
String proofText = TwitterResource.generateText(getActivity(),
mAffirmationWizard.mFingerprint, proofNonce);
mLinkedIdWizard.mFingerprint, proofNonce);
AffirmationCreateTwitterStep2Fragment frag =
AffirmationCreateTwitterStep2Fragment.newInstance(handle, proofNonce, proofText);
LinkedIdCreateTwitterStep2Fragment frag =
LinkedIdCreateTwitterStep2Fragment.newInstance(handle, proofNonce, proofText);
mAffirmationWizard.loadFragment(null, frag, AffirmationWizard.FRAG_ACTION_TO_RIGHT);
mLinkedIdWizard.loadFragment(null, frag, LinkedIdWizard.FRAG_ACTION_TO_RIGHT);
}
}.execute();
@@ -115,7 +109,7 @@ public class AffirmationCreateTwitterStep1Fragment extends Fragment {
view.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAffirmationWizard.loadFragment(null, null, AffirmationWizard.FRAG_ACTION_TO_LEFT);
mLinkedIdWizard.loadFragment(null, null, LinkedIdWizard.FRAG_ACTION_TO_LEFT);
}
});

View File

@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@@ -31,15 +31,14 @@ import android.widget.ImageView;
import android.widget.TextView;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity;
public class AffirmationCreateTwitterStep2Fragment extends Fragment {
public class LinkedIdCreateTwitterStep2Fragment extends Fragment {
private static final int REQUEST_CODE_OUTPUT = 0x00007007;
public static final String HANDLE = "uri", NONCE = "nonce", TEXT = "text";
AffirmationWizard mAffirmationWizard;
LinkedIdWizard mLinkedIdWizard;
EditText mEditTweetCustom, mEditTweetPreview;
ImageView mVerifyImage;
@@ -52,10 +51,10 @@ public class AffirmationCreateTwitterStep2Fragment extends Fragment {
/**
* Creates new instance of this fragment
*/
public static AffirmationCreateTwitterStep2Fragment newInstance
public static LinkedIdCreateTwitterStep2Fragment newInstance
(String handle, String proofNonce, String proofText) {
AffirmationCreateTwitterStep2Fragment frag = new AffirmationCreateTwitterStep2Fragment();
LinkedIdCreateTwitterStep2Fragment frag = new LinkedIdCreateTwitterStep2Fragment();
Bundle args = new Bundle();
args.putString(HANDLE, handle);
@@ -68,7 +67,7 @@ public class AffirmationCreateTwitterStep2Fragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.affirmation_create_twitter_fragment_step2, container, false);
final View view = inflater.inflate(R.layout.linked_create_twitter_fragment_step2, container, false);
mResourceHandle = getArguments().getString(HANDLE);
mResourceNonce = getArguments().getString(NONCE);
@@ -78,19 +77,19 @@ public class AffirmationCreateTwitterStep2Fragment extends Fragment {
@Override
public void onClick(View v) {
AffirmationCreateTwitterStep3Fragment frag =
AffirmationCreateTwitterStep3Fragment.newInstance(mResourceHandle,
LinkedIdCreateTwitterStep3Fragment frag =
LinkedIdCreateTwitterStep3Fragment.newInstance(mResourceHandle,
mResourceNonce, mResourceString,
mEditTweetCustom.getText().toString());
mAffirmationWizard.loadFragment(null, frag, AffirmationWizard.FRAG_ACTION_TO_RIGHT);
mLinkedIdWizard.loadFragment(null, frag, LinkedIdWizard.FRAG_ACTION_TO_RIGHT);
}
});
view.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAffirmationWizard.loadFragment(null, null, AffirmationWizard.FRAG_ACTION_TO_LEFT);
mLinkedIdWizard.loadFragment(null, null, LinkedIdWizard.FRAG_ACTION_TO_LEFT);
}
});
@@ -144,7 +143,7 @@ public class AffirmationCreateTwitterStep2Fragment extends Fragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAffirmationWizard = (AffirmationWizard) getActivity();
mLinkedIdWizard = (LinkedIdWizard) getActivity();
}
}

View File

@@ -15,17 +15,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
@@ -35,27 +31,16 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.LinkedVerifyResult;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.GenericHttpsResource;
import org.sufficientlysecure.keychain.pgp.affirmation.resources.TwitterResource;
import org.sufficientlysecure.keychain.ui.util.Notify;
import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.util.FileHelper;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
public class AffirmationCreateTwitterStep3Fragment extends Fragment {
public class LinkedIdCreateTwitterStep3Fragment extends Fragment {
public static final String HANDLE = "uri", NONCE = "nonce", TEXT = "text", CUSTOM = "custom";
AffirmationWizard mAffirmationWizard;
LinkedIdWizard mLinkedIdWizard;
EditText mEditTweetPreview;
ImageView mVerifyImage;
@@ -68,10 +53,10 @@ public class AffirmationCreateTwitterStep3Fragment extends Fragment {
/**
* Creates new instance of this fragment
*/
public static AffirmationCreateTwitterStep3Fragment newInstance
public static LinkedIdCreateTwitterStep3Fragment newInstance
(String handle, String proofNonce, String proofText, String customText) {
AffirmationCreateTwitterStep3Fragment frag = new AffirmationCreateTwitterStep3Fragment();
LinkedIdCreateTwitterStep3Fragment frag = new LinkedIdCreateTwitterStep3Fragment();
Bundle args = new Bundle();
args.putString(HANDLE, handle);
@@ -85,7 +70,7 @@ public class AffirmationCreateTwitterStep3Fragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.affirmation_create_twitter_fragment_step3, container, false);
final View view = inflater.inflate(R.layout.linked_create_twitter_fragment_step3, container, false);
mResourceHandle = getArguments().getString(HANDLE);
mResourceNonce = getArguments().getString(NONCE);
@@ -104,7 +89,7 @@ public class AffirmationCreateTwitterStep3Fragment extends Fragment {
view.findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAffirmationWizard.loadFragment(null, null, AffirmationWizard.FRAG_ACTION_TO_LEFT);
mLinkedIdWizard.loadFragment(null, null, LinkedIdWizard.FRAG_ACTION_TO_LEFT);
}
});
@@ -151,7 +136,7 @@ public class AffirmationCreateTwitterStep3Fragment extends Fragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAffirmationWizard = (AffirmationWizard) getActivity();
mLinkedIdWizard = (LinkedIdWizard) getActivity();
}
public void setVerifyProgress(boolean on, Boolean success) {

View File

@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@@ -25,15 +25,15 @@ import android.view.ViewGroup;
import org.sufficientlysecure.keychain.R;
public class AffirmationSelectFragment extends Fragment {
public class LinkedIdSelectFragment extends Fragment {
AffirmationWizard mAffirmationWizard;
LinkedIdWizard mLinkedIdWizard;
/**
* Creates new instance of this fragment
*/
public static AffirmationSelectFragment newInstance() {
AffirmationSelectFragment frag = new AffirmationSelectFragment();
public static LinkedIdSelectFragment newInstance() {
LinkedIdSelectFragment frag = new LinkedIdSelectFragment();
Bundle args = new Bundle();
frag.setArguments(args);
@@ -43,38 +43,38 @@ public class AffirmationSelectFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.affirmation_select_fragment, container, false);
View view = inflater.inflate(R.layout.linked_select_fragment, container, false);
view.findViewById(R.id.affirmation_create_https_button)
view.findViewById(R.id.linked_create_https_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AffirmationCreateHttpsStep1Fragment frag =
AffirmationCreateHttpsStep1Fragment.newInstance();
LinkedIdCreateHttpsStep1Fragment frag =
LinkedIdCreateHttpsStep1Fragment.newInstance();
mAffirmationWizard.loadFragment(null, frag, AffirmationWizard.FRAG_ACTION_TO_RIGHT);
mLinkedIdWizard.loadFragment(null, frag, LinkedIdWizard.FRAG_ACTION_TO_RIGHT);
}
});
view.findViewById(R.id.affirmation_create_dns_button)
view.findViewById(R.id.linked_create_dns_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AffirmationCreateDnsStep1Fragment frag =
AffirmationCreateDnsStep1Fragment.newInstance();
LinkedIdCreateDnsStep1Fragment frag =
LinkedIdCreateDnsStep1Fragment.newInstance();
mAffirmationWizard.loadFragment(null, frag, AffirmationWizard.FRAG_ACTION_TO_RIGHT);
mLinkedIdWizard.loadFragment(null, frag, LinkedIdWizard.FRAG_ACTION_TO_RIGHT);
}
});
view.findViewById(R.id.affirmation_create_twitter_button)
view.findViewById(R.id.linked_create_twitter_button)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AffirmationCreateTwitterStep1Fragment frag =
AffirmationCreateTwitterStep1Fragment.newInstance();
LinkedIdCreateTwitterStep1Fragment frag =
LinkedIdCreateTwitterStep1Fragment.newInstance();
mAffirmationWizard.loadFragment(null, frag, AffirmationWizard.FRAG_ACTION_TO_RIGHT);
mLinkedIdWizard.loadFragment(null, frag, LinkedIdWizard.FRAG_ACTION_TO_RIGHT);
}
});
@@ -85,7 +85,7 @@ public class AffirmationSelectFragment extends Fragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAffirmationWizard = (AffirmationWizard) getActivity();
mLinkedIdWizard = (LinkedIdWizard) getActivity();
}
}

View File

@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui.affirmations;
package org.sufficientlysecure.keychain.ui.linked;
import android.net.Uri;
import android.os.Bundle;
@@ -30,7 +30,7 @@ import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.util.Log;
public class AffirmationWizard extends ActionBarActivity {
public class LinkedIdWizard extends ActionBarActivity {
public static final int FRAG_ACTION_START = 0;
public static final int FRAG_ACTION_TO_RIGHT = 1;
@@ -57,7 +57,7 @@ public class AffirmationWizard extends ActionBarActivity {
}
// pass extras into fragment
AffirmationSelectFragment frag = AffirmationSelectFragment.newInstance();
LinkedIdSelectFragment frag = LinkedIdSelectFragment.newInstance();
loadFragment(null, frag, FRAG_ACTION_START);
}