protected boolean createDataSetKey() { XnatToolPanelController masterController = createDialog.getMasterController(); String sourceId = masterController.getDataSetSourceID(); DataSetConfig dataSetConfig = masterController.getDataSetConfig(); if (dataSetConfig == null) { masterController.showError("No DataSet Configuration Created. Create one first!"); return false; } String dataSetName = dataSetConfig.getDataSetName(); Secret passP1 = createDialog.getPassphraseSecret(); if ((passP1.getChars() == null) || (passP1.getChars().length < 8)) { masterController.showError("Passphrase is to short!"); return false; } SecretHolder valueH = new SecretHolder(); masterController.uiAskField( "Verify passphrase.", "Verify your passphrase Please for DataSet:" + dataSetName, valueH); if (valueH.value == null || valueH.value.isEmpty()) { masterController.logger.debugPrintf( "KeyCreateDialogController:doCreateNewKey(): Cancelled\n"); return false; } Secret secret2 = valueH.value; if (!passP1.equals(secret2)) { masterController.showError("Passphrases do not match!"); return false; } try { // Use passphrase both as key digest source and encryption password // for now. Secret keySourceText = secret2; Secret keyPassphrase = secret2; XnatTool xnatTool = masterController.getXnatTool(); xnatTool.initializeEncryptionKeyFromSourceText(sourceId, keySourceText, keyPassphrase); // authenticate and initalize encryption: xnatTool.authenticateEncryptionKeys(sourceId, keyPassphrase, false); byte rawKey[] = xnatTool.getCurrentDataSetConfig().getEncryptionKey(); this.createDialog.setKey(rawKey, this.createDialog.showRawKeyCB.isSelected()); this.createDialog.setPassphrase(secret2); // / update main panel as well: this.createDialog.getMasterController().updatePassphrase(keyPassphrase); return true; } catch (Exception e) { this.handle("Could not initialize new Encryption Key.", e); } return false; }
private void handle(String action, Exception ex) { if (createDialog.getMasterController() != null) { createDialog.getMasterController().handle(action, ex); } else { // stand alone: System.err.printf("Error:%s\n", action); System.err.printf("Exception:%s\n", ex); ex.printStackTrace(); } }
private void updatePassphrase() throws NoSuchAlgorithmException, UnsupportedEncodingException { char chars[] = createDialog.getPassphraseField().getPassword(); if (chars != null) { boolean result = createDataSetKey(); this.createDialog.okBut.setEnabled(result); } }
@Override public void actionPerformed(ActionEvent e) { Object source = e.getSource(); // String cmd=e.getActionCommand(); try { if (source == createDialog.passphraseTF) { updatePassphrase(); } else if (source == createDialog.getCreateKeyBut()) { updatePassphrase(); } else if (source == createDialog.showPPCB) { createDialog.togglePasswordField(createDialog.showPPCB.isSelected()); } else if (source == createDialog.showRawKeyCB) { createDialog.showKey(createDialog.showRawKeyCB.isSelected()); } } catch (Exception ex) { handle("Error", ex); } }