source: trunk/src/org/expeditee/encryption/Label.java@ 1401

Last change on this file since 1401 was 1401, checked in by bln4, 5 years ago

Refactoring on how labels are resolved.

File size: 2.8 KB
Line 
1package org.expeditee.encryption;
2
3import java.util.Base64;
4import java.util.Collection;
5
6import org.expeditee.auth.AuthenticatorBrowser;
7import org.expeditee.gui.Frame;
8import org.expeditee.gui.FrameIO;
9import org.expeditee.items.Text;
10import org.expeditee.settings.UserSettings;
11
12public class Label {
13
14 public static LabelResult resolveKey(String label) {
15 String credentialsFrameName = UserSettings.ProfileName.get() +
16 AuthenticatorBrowser.CREDENTIALS_FRAME;
17 Frame credentialsFrame = FrameIO.LoadFrame(credentialsFrameName);
18 Collection<Text> textItems = credentialsFrame.getTextItems();
19 textItems.removeIf(t -> !t.getText().equals("Secrets"));
20 textItems.removeIf(t -> !t.hasLink());
21 if (textItems.isEmpty()) {
22 return LabelResult.ErrorUnableToFindSecretsFrame;
23 }
24 Text linkToSecretsFrame = textItems.iterator().next();
25 if (!linkToSecretsFrame.hasLink()) {
26 return LabelResult.ErrorUnableToFindSecretsFrame;
27 }
28 Frame secretsFrame = FrameIO.LoadFrame(linkToSecretsFrame.getParent().getFramesetName() + linkToSecretsFrame.getLink());
29 Collection<Text> labels = secretsFrame.getTextItems();
30 labels.removeIf(lbl -> !lbl.getText().equals(label));
31 labels.removeIf(lbl -> lbl.getData() == null || lbl.getData().size() == 0);
32 if (labels.isEmpty()) {
33 return LabelResult.ErrorUnableToFindLabel;
34 }
35 Text labelItem = labels.iterator().next();
36 String data = labelItem.getData().get(0);
37 if (data.contains("{")) {
38 data = data.substring(data.indexOf('}') + 1).trim();
39 LabelResult res = LabelResult.SuccessResolveLabelToPartialKey;
40 res.key = Base64.getDecoder().decode(data);
41 return res;
42 } else {
43 try {
44 LabelResult res = LabelResult.SuccessResolveLabelToKey;
45 res.key = Base64.getDecoder().decode(data);
46 return res;
47 } catch (IllegalArgumentException e) {
48 return LabelResult.ErrorUnableToFindLabel;
49 }
50 }
51 }
52
53 public enum LabelResult {
54 SuccessResolveLabelToKey,
55 SuccessResolveLabelToPartialKey,
56 ErrorUnableToFindSecretsFrame,
57 ErrorUnableToFindLabel;
58
59 public byte[] key;
60
61 @Override
62 public String toString() {
63 switch (this) {
64 case SuccessResolveLabelToKey:
65 return "Resolved label to key: " + Base64.getEncoder().encodeToString(key);
66 case SuccessResolveLabelToPartialKey:
67 return "Resolved label to slice of a key: " + Base64.getEncoder().encodeToString(key);
68 case ErrorUnableToFindSecretsFrame:
69 return "Unable to find your Secrets Frame.";
70 case ErrorUnableToFindLabel:
71 return "Unable to resolve label to encrypt/decrypt frame. Label: ";
72 }
73
74 String message = "Was the list of possible enum results updated without nessasary changes to the toString() function?";
75 throw new IllegalArgumentException(message);
76 }
77 }
78}
Note: See TracBrowser for help on using the repository browser.