From 1e85a74a76419fd304d233f5e8876815df5a050d Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 10 May 2010 07:05:31 +0000 Subject: [PATCH] store passwords in encrypted form SVN: 15849 --- .../openbis/knime/query/QueryNodeDialog.java | 4 +-- .../openbis/knime/query/QueryNodeModel.java | 4 +-- .../cisd/openbis/knime/query/Util.java | 28 +++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/QueryNodeDialog.java b/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/QueryNodeDialog.java index 91cc59b6340..91f4e7502ae 100644 --- a/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/QueryNodeDialog.java +++ b/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/QueryNodeDialog.java @@ -137,7 +137,7 @@ public class QueryNodeDialog extends NodeDialogPane { urlField.setText(settings.getString(URL_KEY, "")); userField.setText(settings.getString(USER_KEY, "")); - passwordField.setText(settings.getString(PASSWORD_KEY, "")); + passwordField.setText(Util.getDecryptedPassword(settings)); byte[] bytes = settings.getByteArray(QUERY_DESCRIPTION_KEY, null); QueryDescription queryDescriptionOrNull = Util.deserializeQueryDescription(bytes); parameterBindings.loadValidatedSettingsFrom(settings); @@ -153,7 +153,7 @@ public class QueryNodeDialog extends NodeDialogPane { settings.addString(URL_KEY, urlField.getText().trim()); settings.addString(USER_KEY, userField.getText().trim()); - settings.addString(PASSWORD_KEY, passwordField.getText().trim()); + settings.addString(PASSWORD_KEY, Util.getEncryptedPassword(passwordField.getPassword())); byte[] bytes = Util.serializeQueryDescription(getSelectedQueryDescriptionOrNull()); settings.addByteArray(QUERY_DESCRIPTION_KEY, bytes); parameterBindings.removeAllBindings(); diff --git a/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/QueryNodeModel.java b/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/QueryNodeModel.java index e6f04afb28d..89c82719fa2 100644 --- a/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/QueryNodeModel.java +++ b/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/QueryNodeModel.java @@ -83,7 +83,7 @@ public class QueryNodeModel extends NodeModel { url = settings.getString(URL_KEY); userID = settings.getString(USER_KEY); - password = settings.getString(PASSWORD_KEY); + password = Util.getDecryptedPassword(settings); queryDescription = Util.deserializeQueryDescription(settings.getByteArray(QUERY_DESCRIPTION_KEY)); parameterBindings.loadValidatedSettingsFrom(settings); } @@ -93,7 +93,7 @@ public class QueryNodeModel extends NodeModel { settings.addString(URL_KEY, url); settings.addString(USER_KEY, userID); - settings.addString(PASSWORD_KEY, password); + settings.addString(PASSWORD_KEY, Util.getEncryptedPassword(password.toCharArray())); settings.addByteArray(QUERY_DESCRIPTION_KEY, Util .serializeQueryDescription(queryDescription)); parameterBindings.saveSettingsTo(settings); diff --git a/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/Util.java b/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/Util.java index 5159c51cd2c..56d4710107e 100644 --- a/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/Util.java +++ b/openbis_knime/source/java/ch/systemsx/cisd/openbis/knime/query/Util.java @@ -16,12 +16,18 @@ package ch.systemsx.cisd.openbis.knime.query; +import static ch.systemsx.cisd.openbis.knime.query.QueryNodeModel.PASSWORD_KEY; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import org.knime.core.node.NodeSettingsRO; +import org.knime.core.util.KnimeEncryption; + +import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.dto.QueryDescription; import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.dto.QueryTableColumnDataType; @@ -74,4 +80,26 @@ class Util default: return ColumnType.STRING; } } + + static String getDecryptedPassword(NodeSettingsRO settings) + { + try + { + return KnimeEncryption.decrypt(settings.getString(PASSWORD_KEY, "")); + } catch (Exception ex) + { + throw CheckedExceptionTunnel.wrapIfNecessary(ex); + } + } + + static String getEncryptedPassword(char[] bytes) + { + try + { + return KnimeEncryption.encrypt(bytes); + } catch (Exception ex) + { + throw CheckedExceptionTunnel.wrapIfNecessary(ex); + } + } } -- GitLab