Changeset 1323 for trunk/src/org/expeditee/auth/EncryptedExpWriter.java
- Timestamp:
- 04/17/19 14:23:09 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/auth/EncryptedExpWriter.java
r1243 r1323 6 6 import java.util.Arrays; 7 7 import java.util.Base64; 8 import java.util.Collection; 8 9 import java.util.List; 9 10 … … 15 16 import javax.crypto.spec.SecretKeySpec; 16 17 18 import org.expeditee.gui.Frame; 19 import org.expeditee.gui.FrameIO; 20 import org.expeditee.gui.MessageBay; 17 21 import org.expeditee.io.ExpWriter; 18 22 import org.expeditee.items.Text; 23 import org.expeditee.settings.UserSettings; 19 24 import org.expeditee.settings.identity.secrets.KeyList; 20 25 import org.ngikm.cryptography.CryptographyConstants; … … 36 41 label = "Profile"; 37 42 } else { 38 byte[] keyBytes = resolveKeyFromLabel(encryptionLabel );43 byte[] keyBytes = resolveKeyFromLabel(encryptionLabel, _framename); 39 44 key = new SecretKeySpec(keyBytes, SymmetricAlgorithm); 40 45 label = encryptionLabel; … … 67 72 } 68 73 69 private byte[] resolveKeyFromLabel(String label) { 70 return null; 74 protected static byte[] resolveKeyFromLabel(String label, String framename) { 75 String credentialsFrameName = UserSettings.ProfileName.get() + AuthenticatorBrowser.CREDENTIALS_FRAME; 76 Frame credentialsFrame = FrameIO.LoadFrame(credentialsFrameName); 77 Collection<Text> textItems = credentialsFrame.getTextItems(); 78 textItems.removeIf(t -> !t.getText().equals("Secrets")); 79 textItems.removeIf(t -> !t.hasLink()); 80 if (textItems.isEmpty()) { 81 MessageBay.errorMessage("Unable to find label " + label + " to encrypt frame " + framename + "."); 82 return null; 83 } else { 84 Text linkToSecretsFrame = textItems.iterator().next(); 85 Frame secretsFrame = FrameIO.LoadFrame(linkToSecretsFrame.getParent().getFramesetName() + linkToSecretsFrame.getLink()); 86 Collection<Text> labels = secretsFrame.getTextItems(); 87 labels.removeIf(lbl -> lbl.getText().equals(label)); 88 labels.removeIf(lbl -> lbl.getData() == null || lbl.getData().size() == 0); 89 if (labels.isEmpty()) { 90 MessageBay.errorMessage("Unable to find label " + label + " to encrypt frame " + framename + "."); 91 return null; 92 } 93 94 Text labelItem = labels.iterator().next(); 95 String data = labelItem.getData().get(0); 96 if (data.contains("{")) { 97 MessageBay.errorMessage("You only have a fraction of the required key to access " + framename + "."); 98 return null; 99 } else { 100 try { 101 return Base64.getDecoder().decode(data); 102 } catch (IllegalArgumentException e) { 103 MessageBay.errorMessage("Unable to create key out of data stored in label " + label + "."); 104 return null; 105 } 106 } 107 } 71 108 } 72 109
Note:
See TracChangeset
for help on using the changeset viewer.