Index: /trunk/src/org/expeditee/actions/Misc.java
===================================================================
--- /trunk/src/org/expeditee/actions/Misc.java	(revision 1476)
+++ /trunk/src/org/expeditee/actions/Misc.java	(revision 1477)
@@ -86,9 +86,4 @@
 public class Misc {
 	
-	
-	public static String keyCharacter() {
-		return "\uD83D\uDD11";
-	}
-	
 	/**
 	 * Causes the system to beep
Index: /trunk/src/org/expeditee/encryption/items/KeyType.java
===================================================================
--- /trunk/src/org/expeditee/encryption/items/KeyType.java	(revision 1477)
+++ /trunk/src/org/expeditee/encryption/items/KeyType.java	(revision 1477)
@@ -0,0 +1,7 @@
+package org.expeditee.encryption.items;
+
+public enum KeyType {
+	NotAKey,
+	PartialKey,
+	FullKey;
+}
Index: /trunk/src/org/expeditee/gui/AttributeUtils.java
===================================================================
--- /trunk/src/org/expeditee/gui/AttributeUtils.java	(revision 1476)
+++ /trunk/src/org/expeditee/gui/AttributeUtils.java	(revision 1477)
@@ -336,4 +336,6 @@
 			_Attrib.put("EnterClick", 			Item.class.getMethod("acceptsKeyboardEnter"), 
 												Item.class.getMethod("setAcceptsEnter", pBool));
+			_Attrib.put("KeyImage", 			Item.class.getMethod("keyType"), 
+												Item.class.getMethod("setKeyType", pString));
 			
 			// Aliases for attribute setting
Index: /trunk/src/org/expeditee/gui/Frame.java
===================================================================
--- /trunk/src/org/expeditee/gui/Frame.java	(revision 1476)
+++ /trunk/src/org/expeditee/gui/Frame.java	(revision 1477)
@@ -47,4 +47,6 @@
 import org.expeditee.encryption.items.EncryptionPermissionTriple;
 import org.expeditee.encryption.items.surrogates.Label;
+import org.expeditee.encryption.items.surrogates.Label.LabelInfo;
+import org.expeditee.encryption.items.surrogates.Label.LabelResult;
 import org.expeditee.gio.EcosystemManager;
 import org.expeditee.gio.gesture.Gesture;
@@ -2986,4 +2988,12 @@
 	
 	public void setEncryptionLabel(String label) {
+		LabelInfo labelResult = Label.getLabel(label);
+		boolean isProfileOrNone = label.equals("Profile") || label.equals("None");
+		if (!isProfileOrNone && !labelResult.is(LabelResult.SuccessResolveLabelToKey)) {
+			MessageBay.displayMessage(labelResult.toString());
+			this._encryptionLabel = null;
+			return;
+		}
+		
 		this.setChanged(true);
 		_encryptionLabel = label;
Index: /trunk/src/org/expeditee/items/Item.java
===================================================================
--- /trunk/src/org/expeditee/items/Item.java	(revision 1476)
+++ /trunk/src/org/expeditee/items/Item.java	(revision 1477)
@@ -40,4 +40,5 @@
 import org.expeditee.core.Dimension;
 import org.expeditee.core.Fill;
+import org.expeditee.core.Font;
 import org.expeditee.core.GradientFill;
 import org.expeditee.core.Point;
@@ -48,4 +49,5 @@
 import org.expeditee.core.bounds.PolygonBounds;
 import org.expeditee.encryption.core.EncryptedImage;
+import org.expeditee.encryption.items.KeyType;
 import org.expeditee.encryption.items.surrogates.EncryptionDetail;
 import org.expeditee.encryption.items.surrogates.EncryptionDetail.Type;
@@ -332,4 +334,6 @@
 	protected Map<String, EncryptionDetail> primaryPropertyEncryption = new HashMap<String, EncryptionDetail>(primaryPropertyEncryptionDefault);
 	protected Map<String, Boolean> surrogatePropertyInheritance = new HashMap<String, Boolean>(surrogatePropertyInheritanceDefault);
+
+	private KeyType keyType = KeyType.NotAKey;
 	
 	{
@@ -3116,4 +3120,6 @@
 	protected void paintLink() {
 		paintLinkGraphic(getX() - LEFT_MARGIN, getY() + getLinkYOffset());
+		paintKeyGraphic(getX() - LEFT_MARGIN, getY() + getLinkYOffset());
+		paintPadlockGraphic(getX() - LEFT_MARGIN, getY() + getLinkYOffset());
 	}
 
@@ -3175,4 +3181,47 @@
 			
 			g.setAntialiasing(false);
+		}
+	}
+
+	protected void paintKeyGraphic(int x, int y) {
+		Colour fontColour = null;
+		switch (this.keyType()) {
+		case PartialKey:
+			fontColour = Colour.LIGHT_GRAY;
+			break;
+		case FullKey:
+			fontColour = Colour.BLACK;
+			break;
+		default:
+			return;
+		}
+		
+		GraphicsManager g = EcosystemManager.getGraphicsManager();
+		g.setAntialiasing(true);
+		Font font = new Font();
+		g.drawString("\uD83D\uDD11", new Point(x,y), font, fontColour);
+		g.setAntialiasing(false);
+	}
+	
+	protected void paintPadlockGraphic(int x, int y) {
+		String encryptionLabel = this.getEncryptionLabel();
+		if (encryptionLabel != null && encryptionLabel.length() > 0) {
+			GraphicsManager g = EcosystemManager.getGraphicsManager();
+			g.setAntialiasing(true);
+			Font font = new Font();
+			g.drawString("\uD83D\uDD12", new Point(x,y), font, Colour.BLACK);
+			g.setAntialiasing(false);
+		}
+	}
+	
+	public KeyType keyType() {
+		return keyType;
+	}
+	
+	public void setKeyType(String s) {
+		try {
+			keyType = KeyType.valueOf(s);
+		} catch (IllegalArgumentException e) {
+			keyType = KeyType.NotAKey;
 		}
 	}
