aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/linked/UriAttribute.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-05-09 19:09:09 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-05-09 19:09:09 +0200
commit3600cda3bcf1797db60c870a5fa582a27856e666 (patch)
treea1497ce866c1dfcdab53e43fba2644507d36b690 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/linked/UriAttribute.java
parent57f72996e8e0db35e629ffd48f58cb5812f47788 (diff)
downloadopen-keychain-3600cda3bcf1797db60c870a5fa582a27856e666.tar.gz
open-keychain-3600cda3bcf1797db60c870a5fa582a27856e666.tar.bz2
open-keychain-3600cda3bcf1797db60c870a5fa582a27856e666.zip
linked-ids: rename RawLinkedIdentity to UriAttribute
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/linked/UriAttribute.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/linked/UriAttribute.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/linked/UriAttribute.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/linked/UriAttribute.java
new file mode 100644
index 000000000..9bcf84994
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/linked/UriAttribute.java
@@ -0,0 +1,79 @@
+package org.sufficientlysecure.keychain.linked;
+
+import org.spongycastle.util.Strings;
+import org.sufficientlysecure.keychain.Constants;
+import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.pgp.WrappedUserAttribute;
+import org.sufficientlysecure.keychain.util.Log;
+
+import java.io.IOException;
+import java.net.URI;
+
+import android.content.Context;
+import android.support.annotation.DrawableRes;
+
+/** The RawLinkedIdentity contains raw parsed data from a Linked Identity subpacket. */
+public class UriAttribute {
+
+ public final URI mUri;
+
+ protected UriAttribute(URI uri) {
+ mUri = uri;
+ }
+
+ public byte[] getEncoded() {
+ return Strings.toUTF8ByteArray(mUri.toASCIIString());
+ }
+
+ public static UriAttribute fromAttributeData(byte[] data) throws IOException {
+ WrappedUserAttribute att = WrappedUserAttribute.fromData(data);
+
+ byte[][] subpackets = att.getSubpackets();
+ if (subpackets.length >= 1) {
+ return fromSubpacketData(subpackets[0]);
+ }
+
+ throw new IOException("no subpacket data");
+ }
+
+ static UriAttribute fromSubpacketData(byte[] data) {
+
+ try {
+ String uriStr = Strings.fromUTF8ByteArray(data);
+ URI uri = URI.create(uriStr);
+
+ LinkedResource res = LinkedTokenResource.fromUri(uri);
+ if (res == null) {
+ return new UriAttribute(uri);
+ }
+
+ return new LinkedIdentity(uri, res);
+
+ } catch (IllegalArgumentException e) {
+ Log.e(Constants.TAG, "error parsing uri in (suspected) linked id packet");
+ return null;
+ }
+ }
+
+ public static UriAttribute fromResource (LinkedTokenResource res) {
+ return new UriAttribute(res.toUri());
+ }
+
+
+ public WrappedUserAttribute toUserAttribute () {
+ return WrappedUserAttribute.fromSubpacket(WrappedUserAttribute.UAT_URI_ATTRIBUTE, getEncoded());
+ }
+
+ public @DrawableRes int getDisplayIcon() {
+ return R.drawable.ic_warning_grey_24dp;
+ }
+
+ public String getDisplayTitle(Context context) {
+ return "unknown";
+ }
+
+ public String getDisplayComment(Context context) {
+ return null;
+ }
+
+}