Changeset 1461 for trunk


Ignore:
Timestamp:
11/29/19 15:33:47 (4 years ago)
Author:
bnemhaus
Message:

You cannot load an encrypted frame if you do not have the associated key.

Location:
trunk/src/org/expeditee
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/encryption/io/EncryptedExpReader.java

    r1431 r1461  
    4646        private static final String labelProfile = "Profile";
    4747        private static final String labelNone = "None";
    48         private SecretKey personalKey;
     48        private SecretKey key;
    4949        private boolean accessDenied = false;
    5050        private boolean _readingSurrogates;
     
    5757                if (firstLine == null) return false;
    5858                return firstLine.startsWith(ENCRYPTED_EXP_FLAG);
     59        }
     60       
     61        public static boolean isAccessibleExpediteeFile(final String path) throws IOException {
     62                BufferedReader in = new BufferedReader(new FileReader(path));
     63                String firstLine = in.readLine();
     64                in.close();
     65                if (firstLine == null) return false;
     66               
     67                if (firstLine.startsWith(ENCRYPTED_EXP_FLAG)) {
     68                        String labelName = firstLine.replace(ENCRYPTED_EXP_FLAG, "");
     69                        LabelInfo label = Label.getLabel(labelName);
     70                        if (labelName.equals(labelProfile) || labelName.equals(labelNone) || label.type == Label.LabelResult.SuccessResolveLabelToKey) {
     71                                return true;
     72                        } else {
     73                                return false;
     74                        }
     75                } else {
     76                        // Not encrypted.
     77                        return true;
     78                }
    5979        }
    6080       
     
    340360                                        Text text = KeyList.PersonalKey.get();
    341361                                        byte[] keyBytes = Base64.getDecoder().decode(text.getData().get(0));
    342                                         personalKey = new SecretKeySpec(keyBytes, SymmetricAlgorithm);
     362                                        key = new SecretKeySpec(keyBytes, SymmetricAlgorithm);
    343363                                        return readLine();
    344364                                } else if (label.equals(labelNone)) {
     
    346366                                        return readLine();
    347367                                } else {
    348                                         personalKey = resolveLabel(label);
    349                                         if (personalKey == null) {
     368                                        key = resolveLabel(label);
     369                                        if (key == null) {
    350370                                                return null;
    351371                                        } else {
     
    357377                        // decrypt line and return result
    358378                        byte[] toDecrypt = Base64.getDecoder().decode(line);
    359                         byte[] decrypted = DecryptSymmetric(toDecrypt, personalKey);
     379                        byte[] decrypted = DecryptSymmetric(toDecrypt, key);
    360380                        if (decrypted == null) {
    361381                                accessDenied = true;
  • trunk/src/org/expeditee/gui/FrameIO.java

    r1442 r1461  
    598598                        if (fullPath.endsWith(ExpReader.EXTENTION)) {
    599599                                if (EncryptedExpReader.isEncryptedExpediteeFile(fullPath)) {
    600                                         reader = new EncryptedExpReader(frameName);
     600                                        if (EncryptedExpReader.isAccessibleExpediteeFile(fullPath)) {
     601                                                reader = new EncryptedExpReader(frameName);
     602                                        } else {
     603                                                String message = "Cannot load frame " + frameName + ".  It is encrypted and you do not have the associated key.";
     604                                                System.err.println(message);
     605                                                MessageBay.errorMessage(message);
     606                                                return null;
     607                                        }
    601608                                } else {
    602609                                        reader = new ExpReader(frameName);
     
    17541761                ResumeCache();
    17551762
     1763                // 0 frame
    17561764                base.reset();
    17571765                base.resetDateCreated();
    17581766                base.setFrameset(frameset);
    17591767                base.setFrameNumber(0);
     1768                base.setOwner(UserSettings.UserName.get());
    17601769                base.setTitle(base.getFramesetName() + "0");
    17611770                base.setPath(path);
    17621771                base.change();
    1763                 base.setOwner(UserSettings.UserName.get());
    17641772                SaveFrame(base, false);
    17651773
     1774                // 1 frame
    17661775                base.reset();
    17671776                base.resetDateCreated();
    17681777                base.setFrameNumber(1);
     1778                base.setOwner(UserSettings.UserName.get());
    17691779                base.setTitle(frameset);
    17701780                base.change();
    1771                 base.setOwner(UserSettings.UserName.get());
    17721781                SaveFrame(base, true);
    17731782               
Note: See TracChangeset for help on using the changeset viewer.