aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-01-14 18:32:50 +0100
committerVincent Breitmoser <valodim@mugenguild.com>2015-01-14 18:32:50 +0100
commitc03bcc2799774cef4ac5f35ca6225059a13f45c8 (patch)
tree31203131f1088a8e3577994453f8bedc4bf25d18 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp
parent55ea957644820cc56c71295f50bb04f1108236b0 (diff)
downloadopen-keychain-c03bcc2799774cef4ac5f35ca6225059a13f45c8.tar.gz
open-keychain-c03bcc2799774cef4ac5f35ca6225059a13f45c8.tar.bz2
open-keychain-c03bcc2799774cef4ac5f35ca6225059a13f45c8.zip
work on dns resource, working (dummy) verification
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/AffirmationResource.java12
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/LinkedIdentity.java2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/DnsResouce.java47
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/DnsResource.java70
4 files changed, 79 insertions, 52 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/AffirmationResource.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/AffirmationResource.java
index ffe89931a..80398396e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/AffirmationResource.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/AffirmationResource.java
@@ -64,7 +64,7 @@ public abstract class AffirmationResource {
return new LinkedVerifyResult(LinkedVerifyResult.RESULT_ERROR, log);
}
- Log.d(Constants.TAG, res);
+ Log.d(Constants.TAG, "Resource data: '" + res + "'");
return verifyString(log, 1, res, nonce, fingerprint);
@@ -72,19 +72,23 @@ public abstract class AffirmationResource {
protected abstract String fetchResource (OperationLog log, int indent);
+ protected Matcher matchResource (OperationLog log, int indent, String res) {
+ return magicPattern.matcher(res);
+ }
+
protected LinkedVerifyResult verifyString (OperationLog log, int indent,
String res,
String nonce, byte[] fingerprint) {
log.add(LogType.MSG_LV_MATCH, indent);
- Matcher match = magicPattern.matcher(res);
+ Matcher match = matchResource(log, indent+1, res);
if (!match.find()) {
log.add(LogType.MSG_LV_MATCH_ERROR, 2);
return new LinkedVerifyResult(LinkedVerifyResult.RESULT_ERROR, log);
}
- String candidateFp = match.group(1);
- String nonceCandidate = match.group(2);
+ String candidateFp = match.group(1).toLowerCase();
+ String nonceCandidate = match.group(2).toLowerCase();
String fp = KeyFormattingUtils.convertFingerprintToHex(fingerprint);
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 ee9933da3..00d898df9 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
@@ -167,7 +167,7 @@ public class LinkedIdentity {
// return Hex.toHexString(data);
// debug for now
- return "0123456789ABCDEF01234567";
+ return "0123456789abcdef01234567";
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/DnsResouce.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/DnsResouce.java
deleted file mode 100644
index 20216972a..000000000
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/DnsResouce.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.sufficientlysecure.keychain.pgp.affirmation.resources;
-
-import android.content.Context;
-
-import org.sufficientlysecure.keychain.Constants;
-import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
-import org.sufficientlysecure.keychain.pgp.affirmation.AffirmationResource;
-import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
-import org.sufficientlysecure.keychain.util.Log;
-
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Set;
-
-import de.measite.minidns.Client;
-import de.measite.minidns.DNSMessage;
-import de.measite.minidns.Question;
-import de.measite.minidns.Record;
-import de.measite.minidns.Record.TYPE;
-import de.measite.minidns.record.TXT;
-
-public class DnsResouce extends AffirmationResource {
-
- DnsResouce(Set<String> flags, HashMap<String,String> params, URI uri) {
- super(flags, params, uri);
- }
-
- public static String generate (Context context, byte[] fingerprint, String nonce) {
-
- return "pgpid+cookie:"
- + KeyFormattingUtils.convertFingerprintToHex(fingerprint) + ";" + nonce + "";
-
- }
-
- @Override
- protected String fetchResource (OperationLog log, int indent) {
-
- Client c = new Client();
- DNSMessage msg = c.query(new Question("mugenguild.com", TYPE.TXT));
- Record aw = msg.getAnswers()[0];
- TXT txt = (TXT) aw.getPayload();
- Log.d(Constants.TAG, txt.getText());
- return txt.getText();
-
- }
-
-}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/DnsResource.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/DnsResource.java
new file mode 100644
index 000000000..272aa5dcd
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/affirmation/resources/DnsResource.java
@@ -0,0 +1,70 @@
+package org.sufficientlysecure.keychain.pgp.affirmation.resources;
+
+import android.content.Context;
+
+import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
+import org.sufficientlysecure.keychain.pgp.affirmation.AffirmationResource;
+import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import de.measite.minidns.Client;
+import de.measite.minidns.DNSMessage;
+import de.measite.minidns.Question;
+import de.measite.minidns.Record;
+import de.measite.minidns.Record.TYPE;
+import de.measite.minidns.record.TXT;
+
+public class DnsResource extends AffirmationResource {
+
+ static Pattern magicPattern =
+ Pattern.compile("pgpid\\+cookie=([a-zA-Z0-9]+)(?:#|;)([a-zA-Z0-9]+)");
+
+ DnsResource(Set<String> flags, HashMap<String, String> params, URI uri) {
+ super(flags, params, uri);
+ }
+
+ public static String generateText (Context context, byte[] fingerprint, String nonce) {
+
+ return "pgpid+cookie="
+ + KeyFormattingUtils.convertFingerprintToHex(fingerprint) + ";" + nonce + "";
+
+ }
+
+ public static DnsResource createNew (String domain) {
+ HashSet<String> flags = new HashSet<String>();
+ HashMap<String,String> params = new HashMap<String,String>();
+ URI uri = URI.create("dns:" + domain);
+ return create(flags, params, uri);
+ }
+
+ public static DnsResource create(Set<String> flags, HashMap<String,String> params, URI uri) {
+ if ( ! ("dns".equals(uri.getScheme())
+ && (flags == null || flags.isEmpty())
+ && (params == null || params.isEmpty()))) {
+ return null;
+ }
+ return new DnsResource(flags, params, uri);
+ }
+
+ @Override
+ protected String fetchResource (OperationLog log, int indent) {
+
+ Client c = new Client();
+ DNSMessage msg = c.query(new Question("mugenguild.com", TYPE.TXT));
+ Record aw = msg.getAnswers()[0];
+ TXT txt = (TXT) aw.getPayload();
+ return txt.getText().toLowerCase();
+
+ }
+
+ @Override
+ protected Matcher matchResource(OperationLog log, int indent, String res) {
+ return magicPattern.matcher(res);
+ }
+}