- Timestamp:
- 04/17/19 14:23:09 (5 years ago)
- Location:
- trunk/src/org/expeditee
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/auth/Actions.java
r1321 r1323 452 452 notifiers.put(Constants.SETTINGS_AUTH, frame -> { 453 453 AuthenticatorBrowser.CREDENTIALS_FRAME = frame.getNumber(); 454 frame.addToData("MultiuserCredentials"); 454 455 Collection<Text> textItems = frame.getTextItems(); 455 456 for (Text t: textItems) { -
trunk/src/org/expeditee/auth/EncryptedExpReader.java
r1243 r1323 25 25 import org.expeditee.settings.identity.secrets.KeyList; 26 26 import org.ngikm.cryptography.CryptographyConstants; 27 28 import sun.reflect.generics.reflectiveObjects.NotImplementedException;29 27 30 28 public class EncryptedExpReader extends ExpReader implements CryptographyConstants { … … 123 121 return readLine(); 124 122 } else { 125 // TODO: resolve encryption label, what does this mean?126 123 personalKey = resolveLabel(label); 127 return readLine(); 124 if (personalKey == null) { 125 return null; 126 } else { 127 return readLine(); 128 } 128 129 } 129 130 } … … 146 147 147 148 private SecretKeySpec resolveLabel(String label) { 148 throw new NotImplementedException(); 149 byte[] keyBytes = EncryptedExpWriter.resolveKeyFromLabel(label, ""); 150 return new SecretKeySpec(keyBytes, SymmetricAlgorithm); 149 151 } 150 152 } 151 152 // private class EncryptedProfileLineReader extends BufferedReader {153 //154 // public EncryptedProfileLineReader(final Reader in) {155 // super(in);156 // }157 //158 // @Override159 // /**160 // * Reads a line from an encrypted exp file that uses profile encryption (single key; personal key)161 // * Returns that line to process, null if the currently logged in users personal key is not the appropriate one (access denied).162 // */163 // public String readLine() throws IOException {164 // // read encrypted line165 // final String line = super.readLine();166 //167 // if (line.isEmpty()) { return ""; }168 // if (line.startsWith(ENCRYPTED_EXP_FLAG)) {169 // // record/overwrite previous personal key then ignore this line by recursing170 // final Text text = KeyList.PersonalKey.get();171 // final byte[] keyBytes = Base64.getDecoder().decode(text.getData().get(0));172 // personalKey = new SecretKeySpec(keyBytes, SymmetricAlgorithm);173 // return readLine();174 // }175 //176 // // decrypt line and return result177 // final byte[] toDecrypt = Base64.getDecoder().decode(line);178 // final byte[] decrypted = DecryptSymmetric(toDecrypt, personalKey);179 // if (decrypted == null) {180 // accessDenied = true;181 // return null; // access denied182 // } else {183 // final String decryptedLine = new String(decrypted);184 // if (decryptedLine.startsWith("Z")) { return decryptedLine.trim(); }185 // else { return decryptedLine; }186 // }187 // }188 // }189 //190 // private class EncryptedLineReader extends BufferedReader {191 //192 // public EncryptedLineReader(final Reader in) {193 // super(in);194 // }195 //196 // @Override197 // /**198 // * Reads a line from an encrypted exp file that uses (potentially multiple) labeled keys199 // * Returns that line to process, null if the ...200 // */201 // public String readLine() throws IOException {202 // // read encrypted line203 // final String line = super.readLine();204 //205 // if (line.isEmpty()) { return ""; }206 // if (line.startsWith(ENCRYPTED_EXP_FLAG)) {207 // // resolve labels to secret keys208 // final List<String> labels = Arrays.asList(line.split(" ")).stream().skip(1).collect(Collectors.toList());209 // final ThrowingFunction<String, SecretKey, Exception> worker = new ThrowingFunction<String, SecretKey, Exception>() {210 // @Override211 // public SecretKey applyThrows(final String label) throws Exception {212 // return Authenticator.getInstance().getSecretKey(label, System.getProperty("password"));213 // }214 // };215 // multiKey = labels.stream().map(l -> {216 // try {217 // return worker.apply(l);218 // } catch (final Exception e) {219 // return null;220 // }221 // }).collect(Collectors.toList());222 //223 // // confirm you have all the keys necessary for decryption224 // if (multiKey.contains(null)) {225 // return null;226 // }227 //228 // // move onto the next line229 // return readLine();230 // }231 //232 // // decrypt line and return result233 // final byte[] toDecrypt = Base64.getDecoder().decode(line);234 // byte[] decryptedBytes = null;235 // for (final SecretKey key: multiKey) {236 // decryptedBytes = DecryptSymmetric(toDecrypt, key);237 // if (decryptedBytes == null) { return null; }238 // }239 // final String decrypted = new String(decryptedBytes);240 // if (decrypted.startsWith("Z")) { return decrypted.trim(); }241 // else { return decrypted; }242 // }243 // }244 153 } -
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 -
trunk/src/org/expeditee/io/ExpWriter.java
r1321 r1323 51 51 protected StringBuilder _stringWriter = null; 52 52 53 protected String _framename; 54 53 55 private static final char TERMINATOR = 'Z'; 54 56 … … 59 61 @Override 60 62 public void initialise(Frame start, Writer writer) throws IOException { 63 _framename = start.getName(); 61 64 String name = start.getFramesetName().toLowerCase(); 62 65
Note:
See TracChangeset
for help on using the changeset viewer.