• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

FinalCrypt - The No¹ One-Time Pad Encryption


Commit MetaInfo

Revisióne41fb320a27befb10e43ae5c390602e8f85f2164 (tree)
Tiempo2019-11-25 13:26:54
Autorron <ronuitzaandam@gmai...>
Commiterron

Log Message

Date: 2019-11-25 Version: 5.6.6

Improved Apple OSX stability FinalCrypt User Interface
Support Window now closes on Home / Share button click
No longer printing keypaths on statusbar creating keys

Cambiar Resumen

Diferencia incremental

--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,9 @@
1+Date: 2019-11-25 Version: 5.6.6
2+
3+Improved Apple OSX stability FinalCrypt User Interface
4+Support Window now closes on Home / Share button click
5+No longer printing keypaths on statusbar creating keys
6+
17 Date: 2019-11-24 Version: 5.6.5
28
39 Fixed Brute Force Dict-Size, Heap-Mem & Performance
--- a/manpage.txt
+++ b/manpage.txt
@@ -62,4 +62,4 @@ Parameters:
6262 <[-t "file/dir"]> Target items (files or directories) you want to encrypt (recursive).
6363 <[-b "batchfile"]> Batchfile with targetfiles you want to encrypt (only files).
6464
65-FinalCrypt 5.6.5 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019
\ No newline at end of file
65+FinalCrypt 5.6.6 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019
\ No newline at end of file
--- a/manpage_examples.txt
+++ b/manpage_examples.txt
@@ -76,4 +76,4 @@ Key Device Examples (Linux):
7676 java -cp finalcrypt.jar rdj/CLUI --encrypt -k /dev/sdc1 -t myfile
7777 java -cp finalcrypt.jar rdj/CLUI --decrypt -k /dev/sdc1 -t myfile
7878
79-FinalCrypt 5.6.5 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019
\ No newline at end of file
79+FinalCrypt 5.6.6 - Author: Ron de Jong <info@finalcrypt.org> - Copyright: © 2017-2019
\ No newline at end of file
--- a/nbproject/project.properties
+++ b/nbproject/project.properties
@@ -8,7 +8,7 @@ application.homepage=http://www.finalcrypt.org/
88 application.splash=
99 application.title=FinalCrypt
1010 application.vendor=FinalCrypt
11-application.implementation.version=5.6.5
11+application.implementation.version=5.6.6
1212 auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=false
1313 auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=4
1414 auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=4
--- a/src/rdj/Audio.java
+++ b/src/rdj/Audio.java
@@ -65,6 +65,8 @@ public class Audio
6565 public static final String VOI_ENCRYPT_FILES = "/rdj/audio/voice/encrypt_files";
6666 public static final String VOI_ENCRYPTING_FILES = "/rdj/audio/voice/encrypting_files";
6767 public static final String VOI_ENCRYPT_OR_DECRYPT_FILES = "/rdj/audio/voice/encrypt_or_decrypt_files";
68+ public static final String VOI_FINISHED_DECRYPTING = "/rdj/audio/voice/finished_decrypting";
69+ public static final String VOI_FINISHED_ENCRYPTING = "/rdj/audio/voice/finished_encrypting";
6870 public static final String VOI_SCANNING_FILES = "/rdj/audio/voice/scanning_files";
6971 public static final String VOI_SELECT_FILES = "/rdj/audio/voice/select_files";
7072 public static final String VOI_SELECT_KEY = "/rdj/audio/voice/select_key";
--- a/src/rdj/FinalCrypt.java
+++ b/src/rdj/FinalCrypt.java
@@ -446,7 +446,8 @@ public class FinalCrypt extends Thread
446446
447447 ByteBuffer randomBuffer = ByteBuffer.allocate(bufferSize); randomBuffer.clear();
448448
449- ui.log(UTF8_CREATE_SYMBOL + UTF8_KEY_SYMBOL + " \"" + dynamicKeyFCPath.path.toAbsolutePath() + "\" ", true, false, false, false, false);
449+// ui.log(UTF8_CREATE_SYMBOL + UTF8_KEY_SYMBOL + " \"" + dynamicKeyFCPath.path.toAbsolutePath() + "\" ", true, false, false, false, false);
450+ ui.log(UTF8_CREATE_SYMBOL + UTF8_KEY_SYMBOL + " \"" + targetDestinPath.toAbsolutePath().toString() + "\" ", true, false, false, false, false);
450451 ui.log(UTF8_CREATE_SYMBOL + UTF8_KEY_SYMBOL, false, true, true, false, false);
451452
452453 write1loop: while ( (totalTranfered < ( newTargetSourceFCPath.size + FCPath.MAC_SIZE )) && (! inputEnded ))
--- a/src/rdj/GUIFX.java
+++ b/src/rdj/GUIFX.java
@@ -255,6 +255,9 @@ public class GUIFX extends Application implements UI, Initializable
255255 private final String ENCRYPTING_FILES = "Encrypting Files";
256256 private final String DECRYPTING_FILES = "Decrypting Files";
257257
258+ private final String FINISHED_ENCRYPTING = "Finished Encrypting";
259+ private final String FINISHED_DECRYPTING = "Finished Decrypting";
260+
258261 private final String USER_GUID_TEXT_FILL_BASE = "#706050";// #5A2D0C #663B1B
259262 private final String USER_GUID_TEXT_FILL_HIGH = "#BBBBBB";
260263
@@ -1082,7 +1085,14 @@ public class GUIFX extends Application implements UI, Initializable
10821085 // ============================================================================================================================
10831086
10841087
1085- disableFileChoosers(false, true);
1088+ if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Again due to Mac OSX
1089+ {
1090+ disableFileChoosers(false, true, true);
1091+ }
1092+ else
1093+ {
1094+ disableFileChoosers(false, true, true);
1095+ }
10861096
10871097 FadeTransition sysmonFadeTransition = new FadeTransition(Duration.millis(2000), sysMonCanvas);
10881098 sysmonFadeTransition.setFromValue(0.0f);
@@ -1181,48 +1191,70 @@ public class GUIFX extends Application implements UI, Initializable
11811191 // alert.showAndWait();
11821192 }
11831193
1184- private void disableFileChoosers(boolean param, boolean firsttime)
1194+ private void disableFileChoosers(boolean param, boolean firsttime, boolean animated)
11851195 {
1186- if (param) // disable filechoosers
1196+ if (! animated)
11871197 {
1188- keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param);
1189-
1190- Timeline disableTimeline = new Timeline
1191- (
1192- new KeyFrame(Duration.ZERO,
1193- new KeyValue(keyFileFoil.opacityProperty(), 0.1),
1194- new KeyValue(targetFileFoil.opacityProperty(), 0.1)),
1195- new KeyFrame(Duration.seconds(1),
1196- new KeyValue(keyFileFoil.opacityProperty(), 0.5),
1197- new KeyValue(targetFileFoil.opacityProperty(), 0.5))
1198- );
1199- disableTimeline.setAutoReverse(false);
1200- disableTimeline.setOnFinished((ActionEvent actionEvent) -> { });
1201- disableTimeline.play();
1202- }
1203- else // enable filechoosers
1204- {
1205- Timeline enableTimeline = new Timeline
1206- (
1207- new KeyFrame(Duration.ZERO,
1208- new KeyValue(keyFileFoil.opacityProperty(), 0.5),
1209- new KeyValue(targetFileFoil.opacityProperty(), 0.5)),
1210- new KeyFrame(Duration.seconds(1),
1211- new KeyValue(keyFileFoil.opacityProperty(), 0.1),
1212- new KeyValue(targetFileFoil.opacityProperty(), 0.1))
1213- );
1214- enableTimeline.setAutoReverse(false);
1215- enableTimeline.setOnFinished((ActionEvent actionEvent) ->
1198+ if (param) // disable filechoosers
12161199 {
12171200 keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param);
1218-
1201+ keyFileFoil.setOpacity(0.5);
1202+ targetFileFoil.setOpacity(0.5);
1203+ }
1204+ else // enable filechoosers
1205+ {
1206+ keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param);
1207+ keyFileFoil.setOpacity(0.1);
1208+ targetFileFoil.setOpacity(0.1);
12191209 if (firsttime)
12201210 {
12211211 // keyFileChooserPropertyCheck();
12221212 }
1223- });
1224- enableTimeline.play();
1213+ }
12251214 }
1215+ else
1216+ {
1217+ if (param) // disable filechoosers
1218+ {
1219+ keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param);
1220+
1221+ Timeline disableTimeline = new Timeline
1222+ (
1223+ new KeyFrame(Duration.ZERO,
1224+ new KeyValue(keyFileFoil.opacityProperty(), 0.1),
1225+ new KeyValue(targetFileFoil.opacityProperty(), 0.1)),
1226+ new KeyFrame(Duration.seconds(1),
1227+ new KeyValue(keyFileFoil.opacityProperty(), 0.5),
1228+ new KeyValue(targetFileFoil.opacityProperty(), 0.5))
1229+ );
1230+ disableTimeline.setAutoReverse(false);
1231+ disableTimeline.setOnFinished((ActionEvent actionEvent) -> { });
1232+ disableTimeline.play();
1233+ }
1234+ else // enable filechoosers
1235+ {
1236+ Timeline enableTimeline = new Timeline
1237+ (
1238+ new KeyFrame(Duration.ZERO,
1239+ new KeyValue(keyFileFoil.opacityProperty(), 0.5),
1240+ new KeyValue(targetFileFoil.opacityProperty(), 0.5)),
1241+ new KeyFrame(Duration.seconds(1),
1242+ new KeyValue(keyFileFoil.opacityProperty(), 0.1),
1243+ new KeyValue(targetFileFoil.opacityProperty(), 0.1))
1244+ );
1245+ enableTimeline.setAutoReverse(false);
1246+ enableTimeline.setOnFinished((ActionEvent actionEvent) ->
1247+ {
1248+ keyFileSwingNode.setMouseTransparent(param); targetFileSwingNode.setMouseTransparent(param);
1249+
1250+ if (firsttime)
1251+ {
1252+ // keyFileChooserPropertyCheck();
1253+ }
1254+ });
1255+ enableTimeline.play();
1256+ }
1257+ }
12261258 }
12271259
12281260 synchronized public void userGuidanceMessage(String message, int fontsize, boolean bottomleft, boolean topleft, boolean topright, boolean bottomright, String audio, int media_Delay)
@@ -1908,7 +1940,7 @@ public class GUIFX extends Application implements UI, Initializable
19081940 finalCrypt.setPwd(pwdField.getText()); finalCrypt.setPwdBytes(pwdField.getText()); finalCrypt.resetPwdPos(); finalCrypt.resetPwdBytesPos();
19091941
19101942 keyImageView.setOpacity(0.8);
1911- filesProgressBar.setVisible(true); filesProgressBar.setProgress(ProgressBar.INDETERMINATE_PROGRESS);
1943+ if ((targetPathList != null) && (targetPathList.size() > 0)) { filesProgressBar.setVisible(true); filesProgressBar.setProgress(ProgressBar.INDETERMINATE_PROGRESS); }
19121944
19131945 new Sound().play(this, Audio.SND_READY,Audio.AUDIO_CODEC);
19141946 userGuidanceMessage(SCANNING_FILES, 64, false, false, false, false, Voice.VOI_SCANNING_FILES, 0);
@@ -2943,7 +2975,15 @@ public class GUIFX extends Application implements UI, Initializable
29432975
29442976 processRunning = true;
29452977
2946- disableFileChoosers(true, false);
2978+ if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Again due to Mac OSX
2979+ {
2980+ disableFileChoosers(true, false, true);
2981+ }
2982+ else
2983+ {
2984+ disableFileChoosers(true, false, true);
2985+ }
2986+
29472987
29482988 encryptButton.setDisable(true);
29492989 decryptButton.setDisable(true);
@@ -3049,94 +3089,108 @@ public class GUIFX extends Application implements UI, Initializable
30493089
30503090 @Override public void processFinished(FCPathList<FCPath> openFCPathList, boolean open)
30513091 {
3052- Platform.runLater(() ->
3092+ Platform.runLater(() ->
30533093 {
3054- new Sound().play(this, Audio.SND_SHUTDOWN,Audio.AUDIO_CODEC);
3094+ fileProgressBar.setProgress(100.0); filesProgressBar.setProgress(100.0);
30553095
3056- megaBytesPerSecond = 0;
3057- updateSystemMonitor();
3058-
3059- // Clocks
3060-// if ((processRunningMode == ENCRYPT_MODE) || (processRunningMode == DECRYPT_MODE)) { UPDATE_CLOCKS_TIMELINE.stop(); }
3061- UPDATE_CLOCKS_TIMELINE.stop();
3062-
3063- targetFCPathList = new FCPathList<FCPath>();
3096+ if ( processRunningMode == ENCRYPT_MODE ) { userGuidanceMessage(FINISHED_ENCRYPTING, 64, false, false, false, false, Voice.VOI_FINISHED_ENCRYPTING, 0); }
3097+ if ( processRunningMode == DECRYPT_MODE ) { userGuidanceMessage(FINISHED_DECRYPTING, 64, false, false, false, false, Voice.VOI_FINISHED_DECRYPTING, 0); }
30643098
3065- updateDashboard(targetFCPathList);
3066-
3067- disableFileChoosers(false, false);
3068-
3069- encryptButton.setDisable(true);
3070- decryptButton.setDisable(true);
3071- if ( keyFCPath.isValidKey )
3099+ Timeline timeline = new Timeline(new KeyFrame( Duration.millis(2000), ae ->
30723100 {
3073- pwdField.setDisable(false);
3074- if ((showPasswordCheckBox.isVisible()) && (pwdField.getText().length() == 0)) { passwordHeaderLabel.setText(PASSWORD_OPTIONAL); } else { passwordHeaderLabel.setText(PASSWORD_SET); }
3075- pwdtxtField.setDisable(false);
3076- keyImageView.setImage(KEY_FILE_IMAGE);
3077- keyImageView.setOpacity(0.8);
3078- }
3079- pauseToggleButton.setDisable(true);
3080- stopButton.setDisable(true);
3081-
3082-// keyButton.setDisable(false);
3083-
3084- fileProgressBar.setProgress(0); fileProgressBar.setVisible(false);
3085- filesProgressBar.setProgress(0); filesProgressBar.setVisible(false);
3086-
3087-// encryptionModeToggleButton.setMouseTransparent(!encryptionModeToggleButton.isMouseTransparent());
3088-// encryptionModeAnchorPane.setMouseTransparent(!encryptionModeAnchorPane.isMouseTransparent());
3089-
3090-// if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Due to Mac OSX // to 2
3091-// {
3092- if ( keyFCPath.isValidKeyDir ) { updateFileChoosers(true, true); } else { updateFileChoosers(true, false); } // if keyfile selected then NO update keyFileChooser keeping key file selected; processFinished()
3093-// }
3094-
3095- processRunningMode = NONE;
3096- processRunning = false;
3101+ fileProgressBar.setVisible(false);filesProgressBar.setVisible(false);
3102+
3103+ megaBytesPerSecond = 0;
3104+ updateSystemMonitor();
30973105
3098- targetFCPathList = new FCPathList<FCPath>();
3099- buildReady(targetFCPathList, false);
3106+ // Clocks
3107+ // if ((processRunningMode == ENCRYPT_MODE) || (processRunningMode == DECRYPT_MODE)) { UPDATE_CLOCKS_TIMELINE.stop(); }
3108+ UPDATE_CLOCKS_TIMELINE.stop();
31003109
3101-// if (clockUpdated)
3102-// {
3103- remainingTimeLabel.setText("00:00:00");
3104- totalTimeLabel.setText(elapsedTimeLabel.getText());
3105-// }
3110+ targetFCPathList = new FCPathList<FCPath>();
3111+ updateDashboard(targetFCPathList);
3112+
3113+ encryptButton.setDisable(true);
3114+ decryptButton.setDisable(true);
3115+ if ( keyFCPath.isValidKey )
3116+ {
3117+ pwdField.setDisable(false);
3118+ if ((showPasswordCheckBox.isVisible()) && (pwdField.getText().length() == 0)) { passwordHeaderLabel.setText(PASSWORD_OPTIONAL); } else { passwordHeaderLabel.setText(PASSWORD_SET); }
3119+ pwdtxtField.setDisable(false);
3120+ keyImageView.setImage(KEY_FILE_IMAGE);
3121+ keyImageView.setOpacity(0.8);
3122+ }
3123+ pauseToggleButton.setDisable(true);
3124+ stopButton.setDisable(true);
31063125
3107-// The Open selected file when finished section
3126+ // keyButton.setDisable(false);
31083127
3109- Thread openThread;
3110- openThread = new Thread(() ->
3111- {
3112- try { Thread.sleep(1000); } catch (InterruptedException ex) { }
3113- if (open)
3128+
3129+ // encryptionModeToggleButton.setMouseTransparent(!encryptionModeToggleButton.isMouseTransparent());
3130+ // encryptionModeAnchorPane.setMouseTransparent(!encryptionModeAnchorPane.isMouseTransparent());
3131+
3132+ // if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Due to Mac OSX // to 2
3133+ // {
3134+ if ( keyFCPath.isValidKeyDir ) { updateFileChoosers(true, true); } else { updateFileChoosers(true, false); } // if keyfile selected then NO update keyFileChooser keeping key file selected; processFinished()
3135+ // }
3136+
3137+ processRunningMode = NONE;
3138+ processRunning = false;
3139+
3140+ targetFCPathList = new FCPathList<FCPath>();
3141+ buildReady(targetFCPathList, false);
3142+
3143+ // if (clockUpdated)
3144+ // {
3145+ remainingTimeLabel.setText("00:00:00");
3146+ totalTimeLabel.setText(elapsedTimeLabel.getText());
3147+ // }
3148+
3149+ // The Open selected file when finished section
3150+
3151+ Thread openThread;
3152+ openThread = new Thread(() ->
31143153 {
3115- for (Iterator fcPathIterator = openFCPathList.iterator(); fcPathIterator.hasNext();)
3154+ try { Thread.sleep(1000); } catch (InterruptedException ex) { }
3155+ if (open)
31163156 {
3117- FCPath openFCPath = (FCPath) fcPathIterator.next();
3118- Path newPath = Paths.get(openFCPath.path.toAbsolutePath().toString().substring(0, openFCPath.path.toAbsolutePath().toString().lastIndexOf('.')));
3157+ for (Iterator fcPathIterator = openFCPathList.iterator(); fcPathIterator.hasNext();)
3158+ {
3159+ FCPath openFCPath = (FCPath) fcPathIterator.next();
3160+ Path newPath = Paths.get(openFCPath.path.toAbsolutePath().toString().substring(0, openFCPath.path.toAbsolutePath().toString().lastIndexOf('.')));
31193161
3120- new Sound().play(this, Audio.SND_OPEN,Audio.AUDIO_CODEC);
3121- try { Desktop.getDesktop().open(newPath.toFile()); }
3122- catch (IOException ex) { log("Error: Desktop.getDesktop().open(" + newPath.toFile().getAbsolutePath().toString() + "); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
3162+ new Sound().play(this, Audio.SND_OPEN,Audio.AUDIO_CODEC);
3163+ try { Desktop.getDesktop().open(newPath.toFile()); }
3164+ catch (IOException ex) { log("Error: Desktop.getDesktop().open(" + newPath.toFile().getAbsolutePath().toString() + "); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
31233165
3124- targetFCPathList = new FCPathList<FCPath>(); updateDashboard(targetFCPathList);
3125- Platform.runLater(new Runnable()
3126- {
3127- @Override public void run()
3166+ targetFCPathList = new FCPathList<FCPath>(); updateDashboard(targetFCPathList);
3167+ Platform.runLater(new Runnable()
31283168 {
3129- encryptButton.setDisable(true);
3130- decryptButton.setDisable(true);
3131-// keyButton.setDisable(true); keyButton.setTextFill(Color.GREY); keyButton.setText(CREATE_KEY); keyButton.setVisible(false);
3132- }
3133- });
3169+ @Override public void run()
3170+ {
3171+ encryptButton.setDisable(true);
3172+ decryptButton.setDisable(true);
3173+ // keyButton.setDisable(true); keyButton.setTextFill(Color.GREY); keyButton.setText(CREATE_KEY); keyButton.setVisible(false);
3174+ }
3175+ });
3176+ }
31343177 }
3178+ });
3179+ openThread.setName("openThread");
3180+ openThread.setDaemon(true);
3181+ openThread.start();
3182+
3183+ new Sound().play(this, Audio.SND_SHUTDOWN,Audio.AUDIO_CODEC);
3184+
3185+ if (System.getProperty("os.name").toLowerCase().indexOf("mac") == -1) // Again due to Mac OSX
3186+ {
3187+ disableFileChoosers(false, false, true);
31353188 }
3136- });
3137- openThread.setName("openThread");
3138- openThread.setDaemon(true);
3139- openThread.start();
3189+ else
3190+ {
3191+ disableFileChoosers(false, false, true);
3192+ }
3193+ })); timeline.play();
31403194 });
31413195 }
31423196
@@ -3148,7 +3202,7 @@ public class GUIFX extends Application implements UI, Initializable
31483202 {
31493203 if (updateTargetFC)
31503204 {
3151- Timeline timeline = new Timeline(new KeyFrame( Duration.millis(100), ae ->
3205+ Timeline timeline = new Timeline(new KeyFrame( Duration.millis(500), ae ->
31523206 {
31533207 // tgtFileChooser.rescanCurrentDirectory();
31543208 tgtFileChooser.setFileFilter(keyFileChooser.getAcceptAllFileFilter());
@@ -3297,7 +3351,7 @@ public class GUIFX extends Application implements UI, Initializable
32973351 String platform = System.getProperty("os.name").toLowerCase(); // Due to a nasty JFileChooser focus issue on Mac
32983352 if ( platform.indexOf("mac") != -1 ) // if it is a mac
32993353 {
3300- Timeline timeline = new Timeline(new KeyFrame( Duration.millis(100), ae ->
3354+ Timeline timeline = new Timeline(new KeyFrame( Duration.millis(200), ae ->
33013355 {
33023356 targetFileSwingNode.setContent(tgtFileChooser); // Delay setting this JFileChooser avoiding a simultanious key and target JFileChooser focus conflict causing focus to endlessly flipflop between the two JFileChoosers
33033357 tgtFileChooser.setVisible(false); tgtFileChooser.setVisible(true); keyFileChooser.setVisible(false); keyFileChooser.setVisible(true); // Reldraw FileChoosers
--- a/src/rdj/Sound.java
+++ b/src/rdj/Sound.java
@@ -46,8 +46,15 @@ public class Sound extends Audio
4646 case MP3: media = new Media(ui.getClass().getResource(audio + ".mp3").toExternalForm()); break;
4747 default: media = new Media(ui.getClass().getResource(audio + ".wav").toExternalForm()); break;
4848 }
49-// playJavaX(ui, media, audio_codec); // Stops playing spontaniously on all OSes
50- playJavaFX(ui, media, audio_codec); // Plays fast, but crashes often on Linux (libld.so native player issue)
49+
50+ if (
51+ ((media.getSource().contains("sounds")) && ((sound_Is_Enabled)))
52+ || ((media.getSource().contains("voice")) && ((voice_Is_Enabled)))
53+ )
54+ {
55+// playJavaX(ui, media, audio_codec); // Stops playing spontaniously on all OSes
56+ playJavaFX(ui, media, audio_codec); // Plays fast, but crashes often on Linux (libld.so native player issue)
57+ }
5158 }
5259
5360 synchronized public void playJavaX(UI ui, Media media, int audio_codec) // javax.sound.sampled.AudioSystem
--- a/src/rdj/Support.java
+++ b/src/rdj/Support.java
@@ -84,7 +84,10 @@ public class Support extends Application implements Initializable
8484
8585 private void closeWindow()
8686 {
87- Stage stage = (Stage) facebookImageView.getScene().getWindow(); stage.close();
87+ Platform.runLater(() ->
88+ {
89+ Stage stage = (Stage) facebookImageView.getScene().getWindow(); stage.close();
90+ });
8891 }
8992
9093 public static void main(String[] args)
@@ -102,6 +105,7 @@ public class Support extends Application implements Initializable
102105 try { Desktop.getDesktop().browse(new URI("https://www.facebook.com/share.php?u=http://www.finalcrypt.org/")); prefs.put("Shared", "Yes"); }
103106 catch (URISyntaxException ex) { guifx.log("Error: URISyntaxException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
104107 catch (IOException ex) { guifx.log("Error: IOException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
108+ closeWindow();
105109 });
106110 shareThread.setName("shareThread");
107111 shareThread.setDaemon(true);
@@ -117,6 +121,7 @@ public class Support extends Application implements Initializable
117121 try { Desktop.getDesktop().browse(new URI("https://twitter.com/share?original_referer=/&amp;text=FinalCrypt%20-%20THE%20WORLD'S%20MOST%20UNBREAKABLE%20ENCRYPTION&amp;url=http://www.finalcrypt.org/")); prefs.put("Shared", "Yes"); }
118122 catch (URISyntaxException ex) { guifx.log("Error: URISyntaxException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
119123 catch (IOException ex) { guifx.log("Error: IOException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
124+ closeWindow();
120125 });
121126 shareThread.setName("shareThread");
122127 shareThread.setDaemon(true);
@@ -132,6 +137,7 @@ public class Support extends Application implements Initializable
132137 try { Desktop.getDesktop().browse(new URI("https://www.linkedin.com/cws/share?url=http://www.finalcrypt.org/")); prefs.put("Shared", "Yes"); }
133138 catch (URISyntaxException ex) { guifx.log("Error: URISyntaxException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
134139 catch (IOException ex) { guifx.log("Error: IOException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
140+ closeWindow();
135141 });
136142 shareThread.setName("shareThread");
137143 shareThread.setDaemon(true);
@@ -147,6 +153,7 @@ public class Support extends Application implements Initializable
147153 try { Desktop.getDesktop().browse(new URI("http://pinterest.com/pin/create/button/?url=http://www.finalcrypt.org/&amp;media=http://www.finalcrypt.org/FinalCrypt_Encrypt.png&amp;description=Free%20File%20Encryption")); prefs.put("Shared", "Yes"); }
148154 catch (URISyntaxException ex) { guifx.log("Error: URISyntaxException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
149155 catch (IOException ex) { guifx.log("Error: IOException: Desktop.getDesktop().open(file); " + ex.getMessage() + "\r\n", true, true, true, true, false); }
156+ closeWindow();
150157 });
151158 shareThread.setName("shareThread");
152159 shareThread.setDaemon(true);
@@ -160,6 +167,7 @@ public class Support extends Application implements Initializable
160167 Thread shareThread; shareThread = new Thread(() ->
161168 {
162169 Version.openWebSite(guifx);
170+ closeWindow();
163171 });
164172 shareThread.setName("shareThread");
165173 shareThread.setDaemon(true);
--- a/src/rdj/VERSION
+++ b/src/rdj/VERSION
@@ -1 +1 @@
1-5.6.5
\ No newline at end of file
1+5.6.6
\ No newline at end of file
--- a/src/rdj/VERSION2
+++ b/src/rdj/VERSION2
@@ -1,4 +1,4 @@
1-[Version] = {5.6.5}
1+[Version] = {5.6.6}
22 [] = {} ================================================================
33 [Release Notes] = {You are using a very old version of FinalCrypt}
44 [Release Message] = {Please visit the website and download the latest}
@@ -19,15 +19,11 @@
1919 [Upgrade Notes] = {Brute Force only works on the Command Line Interface}
2020 [Upgrade Notes] = {}
2121 [] = {} ----------------------------------------------------------------
22-[Update Notes] = {Update 5}
22+[Update Notes] = {Update 6}
2323 [Update Notes] = {}
24-[Update Notes] = {Fixed Brute Force Dict-Size, Heap-Mem & Performance}
25-[Update Notes] = {}
26-[Update Notes] = {This update provides:}
27-[Update Notes] = {}
28-[Update Notes] = {Out of heapmem bugfix using a large dictionary file}
29-[Update Notes] = {Buffered loading of limitless sized dictionary file}
30-[Update Notes] = {Better Multitasking with sliced up dictionary files}
24+[Update Notes] = {Improved Apple OSX stability FinalCrypt User Interface}
25+[Update Notes] = {Support Window now closes on Home / Share button click}
26+[Update Notes] = {No longer printing keypaths on statusbar creating keys}
3127 [] = {} --------------------------------------------------------------------------------------------------------
3228 [Alert Subject_] = {}
3329 [Alert Notes_] = {}
Binary files /dev/null and b/src/rdj/audio/voice/finished_decrypting.aiff differ
Binary files /dev/null and b/src/rdj/audio/voice/finished_encrypting.aiff differ