This is an automated email from the ASF dual-hosted git repository.

jbertram pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new c3f1e09e88 ARTEMIS-5101 Deprecate default codec two-way algorithm
c3f1e09e88 is described below

commit c3f1e09e880464a3295e1ccb4d5cacb3a4e202e7
Author: Domenico Francesco Bruscino <[email protected]>
AuthorDate: Fri Oct 11 16:15:03 2024 +0200

    ARTEMIS-5101 Deprecate default codec two-way algorithm
    
    Throughout the years, the standard mechanism for storing passwords has 
evolved.
    In the beginning, passwords were stored in plaintext. Developers are now
    encouraged to leverage adaptive one-way functions to store a password. 
Using a
    two-way function by default for storing passwords without a warning could 
lead
    users to a false sense of security.
---
 .../apache/activemq/artemis/cli/commands/Mask.java |  3 +-
 .../cli/commands/etc/log4j2-utility.properties     |  2 +-
 .../activemq/artemis/logs/ActiveMQUtilLogger.java  |  3 +
 .../artemis/utils/DefaultSensitiveStringCodec.java | 14 ++++-
 .../artemis/utils/PasswordMaskingUtil.java         | 26 ++++++---
 .../utils/DefaultSensitiveStringCodecTest.java     | 67 ++++++++++++++--------
 .../config/impl/FileConfigurationParserTest.java   |  4 +-
 docs/user-manual/masking-passwords.adoc            | 26 +++++----
 docs/user-manual/versions.adoc                     |  8 +++
 .../tests/integration/ra/ResourceAdapterTest.java  |  4 +-
 .../ssl/CoreClientOverOneWaySSLTest.java           |  4 --
 .../remoting/impl/netty/NettyConnectorTest.java    | 10 ++--
 12 files changed, 111 insertions(+), 60 deletions(-)

diff --git 
a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Mask.java 
b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Mask.java
index aefb5c0b3f..81eec64847 100644
--- 
a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Mask.java
+++ 
b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Mask.java
@@ -64,8 +64,7 @@ public class Mask extends ActionAbstract {
          Configuration brokerConfiguration = getBrokerConfiguration();
          codec = 
PasswordMaskingUtil.getCodec(brokerConfiguration.getPasswordCodec());
       } else {
-         codec = PasswordMaskingUtil.getDefaultCodec();
-         codec.init(params);
+         codec = PasswordMaskingUtil.getDefaultCodec(params);
       }
 
       String masked = codec.encode(password);
diff --git 
a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/log4j2-utility.properties
 
b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/log4j2-utility.properties
index d0a9114059..78ac1ca55d 100644
--- 
a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/log4j2-utility.properties
+++ 
b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/log4j2-utility.properties
@@ -18,7 +18,7 @@
 # Monitor config file every X seconds for updates
 monitorInterval = 5
 
-rootLogger.level = ERROR
+rootLogger.level = WARN
 rootLogger.appenderRef.console.ref = console
 
 # Console appender
diff --git 
a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/ActiveMQUtilLogger.java
 
b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/ActiveMQUtilLogger.java
index 51fbc468b5..188234a8da 100644
--- 
a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/ActiveMQUtilLogger.java
+++ 
b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/ActiveMQUtilLogger.java
@@ -83,4 +83,7 @@ public interface ActiveMQUtilLogger {
 
    @LogMessage(id = 202016, value = "Could not list files to clean up in {}", 
level = LogMessage.Level.WARN)
    void failedListFilesToCleanup(String path);
+
+   @LogMessage(id = 202017, value = "Algorithm two-way is deprecated and will 
be removed from the default codec in a future version. Use a custom codec 
instead. Consult the manual for details.", level = LogMessage.Level.WARN)
+   void deprecatedDefaultCodecTwoWayAlgorithm();
 }
diff --git 
a/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/DefaultSensitiveStringCodec.java
 
b/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/DefaultSensitiveStringCodec.java
index 9a9c756060..00cf463a1e 100644
--- 
a/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/DefaultSensitiveStringCodec.java
+++ 
b/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/DefaultSensitiveStringCodec.java
@@ -26,13 +26,13 @@ import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.security.spec.InvalidKeySpecException;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Properties;
 
+import org.apache.activemq.artemis.logs.ActiveMQUtilLogger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import java.lang.invoke.MethodHandles;
@@ -59,15 +59,23 @@ public class DefaultSensitiveStringCodec implements 
SensitiveDataCodec<String> {
    public static final String TWO_WAY = "two-way";
    public static final String KEY_SYSTEM_PROPERTY = 
"artemis.default.sensitive.string.codec.key";
 
-   private CodecAlgorithm algorithm = new 
BlowfishAlgorithm(Collections.EMPTY_MAP);
+   private CodecAlgorithm algorithm;
 
    @Override
    public String decode(Object secret) throws Exception {
+      if (algorithm == null) {
+         throw new IllegalStateException("Algorithm not initialized");
+      }
+
       return algorithm.decode((String) secret);
    }
 
    @Override
    public String encode(Object secret) throws Exception {
+      if (algorithm == null) {
+         throw new IllegalStateException("Algorithm not initialized");
+      }
+
       return algorithm.encode((String) secret);
    }
 
@@ -76,6 +84,7 @@ public class DefaultSensitiveStringCodec implements 
SensitiveDataCodec<String> {
       String algorithm = params.get(ALGORITHM);
       if (algorithm == null || algorithm.equals(TWO_WAY)) {
          //two way
+         ActiveMQUtilLogger.LOGGER.deprecatedDefaultCodecTwoWayAlgorithm();
          this.algorithm = new BlowfishAlgorithm(params);
       } else if (algorithm.equals(ONE_WAY)) {
          this.algorithm = new PBKDF2Algorithm(params);
@@ -131,6 +140,7 @@ public class DefaultSensitiveStringCodec implements 
SensitiveDataCodec<String> {
       }
    }
 
+   @Deprecated
    private class BlowfishAlgorithm extends CodecAlgorithm {
 
       private byte[] internalKey = "clusterpassword".getBytes();
diff --git 
a/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/PasswordMaskingUtil.java
 
b/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/PasswordMaskingUtil.java
index 9602b5838d..ed668f97d2 100644
--- 
a/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/PasswordMaskingUtil.java
+++ 
b/artemis-commons/src/main/java/org/apache/activemq/artemis/utils/PasswordMaskingUtil.java
@@ -18,6 +18,7 @@ package org.apache.activemq.artemis.utils;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.ServiceLoader;
@@ -203,27 +204,36 @@ public final class PasswordMaskingUtil {
          }
       });
 
+      Map<String, String> props = new HashMap<>();
       if (parts.length > 1) {
-         Map<String, String> props = new HashMap<>();
-
          for (int i = 1; i < parts.length; i++) {
             String[] keyVal = parts[i].split("=");
             if (keyVal.length != 2)
                throw ActiveMQUtilBundle.BUNDLE.invalidProperty(parts[i]);
             props.put(keyVal[0], keyVal[1]);
          }
-         try {
-            codecInstance.init(props);
-         } catch (Exception e) {
-            throw new ActiveMQException("Fail to init codec", e, 
ActiveMQExceptionType.SECURITY_EXCEPTION);
-         }
+      }
+      try {
+         codecInstance.init(props);
+      } catch (Exception e) {
+         throw new ActiveMQException("Fail to init codec", e, 
ActiveMQExceptionType.SECURITY_EXCEPTION);
       }
 
       return codecInstance;
    }
 
    public static DefaultSensitiveStringCodec getDefaultCodec() {
-      return new DefaultSensitiveStringCodec();
+      return getDefaultCodec(Collections.emptyMap());
+   }
+
+   public static DefaultSensitiveStringCodec getDefaultCodec(Map<String, 
String> params) {
+      DefaultSensitiveStringCodec defaultCodec = new 
DefaultSensitiveStringCodec();
+      try {
+         defaultCodec.init(params);
+      } catch (Exception e) {
+         throw 
ActiveMQUtilBundle.BUNDLE.errorCreatingCodec(DefaultSensitiveStringCodec.class.getName(),
 e);
+      }
+      return defaultCodec;
    }
 
 }
diff --git 
a/artemis-commons/src/test/java/org/apache/activemq/artemis/utils/DefaultSensitiveStringCodecTest.java
 
b/artemis-commons/src/test/java/org/apache/activemq/artemis/utils/DefaultSensitiveStringCodecTest.java
index 080db1e529..e469115348 100644
--- 
a/artemis-commons/src/test/java/org/apache/activemq/artemis/utils/DefaultSensitiveStringCodecTest.java
+++ 
b/artemis-commons/src/test/java/org/apache/activemq/artemis/utils/DefaultSensitiveStringCodecTest.java
@@ -22,11 +22,13 @@ import static 
org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
+import org.apache.activemq.artemis.logs.AssertionLoggerHandler;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import java.lang.invoke.MethodHandles;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -35,29 +37,53 @@ public class DefaultSensitiveStringCodecTest {
    private static final Logger logger = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
    @Test
-   public void testDefaultAlgorithm() throws Exception {
+   public void testDefaultCodec() {
       SensitiveDataCodec<String> codec = PasswordMaskingUtil.getDefaultCodec();
       assertTrue(codec instanceof DefaultSensitiveStringCodec);
    }
 
    @Test
-   public void testOnewayAlgorithm() throws Exception {
-      testAlgorithm(DefaultSensitiveStringCodec.ONE_WAY);
+   public void testDefaultAlgorithm() throws Exception {
+      testAlgorithm(Collections.emptyMap());
+
+      testAlgorithm(Map.of(DefaultSensitiveStringCodec.BLOWFISH_KEY, 
"my-key"));
+
+      System.setProperty(DefaultSensitiveStringCodec.KEY_SYSTEM_PROPERTY, 
"my-key");
+      try {
+         testAlgorithm(Collections.emptyMap());
+      } finally {
+         System.clearProperty(DefaultSensitiveStringCodec.KEY_SYSTEM_PROPERTY);
+      }
+   }
+
+   @Test
+   public void testOneWayAlgorithm() throws Exception {
+      testAlgorithm(Map.of(DefaultSensitiveStringCodec.ALGORITHM, 
DefaultSensitiveStringCodec.ONE_WAY));
    }
 
    @Test
-   public void testTwowayAlgorithm() throws Exception {
-      testAlgorithm(DefaultSensitiveStringCodec.TWO_WAY);
+   public void testTwoWayAlgorithm() throws Exception {
+      try (AssertionLoggerHandler loggerHandler = new 
AssertionLoggerHandler()) {
+         testAlgorithm(Map.of(DefaultSensitiveStringCodec.ALGORITHM,
+            DefaultSensitiveStringCodec.TWO_WAY));
+         assertTrue(loggerHandler.findText("AMQ202017"));
+      }
+
+      try (AssertionLoggerHandler loggerHandler = new 
AssertionLoggerHandler()) {
+         testAlgorithm(Map.of(DefaultSensitiveStringCodec.ALGORITHM, 
DefaultSensitiveStringCodec.TWO_WAY,
+            DefaultSensitiveStringCodec.BLOWFISH_KEY, "my-key"));
+         assertTrue(loggerHandler.findText("AMQ202017"));
+      }
    }
 
-   private void testAlgorithm(String algorithm) throws Exception {
-      DefaultSensitiveStringCodec codec = 
getDefaultSensitiveStringCodec(algorithm);
+   private void testAlgorithm(Map<String, String> params) throws Exception {
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec(params);
 
       String plainText = "some_password";
       String maskedText = codec.encode(plainText);
       logger.debug("encoded value: {}", maskedText);
 
-      if (algorithm.equals(DefaultSensitiveStringCodec.ONE_WAY)) {
+      if 
(DefaultSensitiveStringCodec.ONE_WAY.equals(params.get(DefaultSensitiveStringCodec.ALGORITHM)))
 {
          //one way can't decode
          try {
             codec.decode(maskedText);
@@ -92,21 +118,23 @@ public class DefaultSensitiveStringCodecTest {
       Map<String, String> params = new HashMap<>();
       codecFromEnvVarConfig.init(params);
       String blaVersion = codecFromEnvVarConfig.encode(someString);
-      assertNotEquals(blaVersion,  
getDefaultSensitiveStringCodec(DefaultSensitiveStringCodec.TWO_WAY).encode(someString));
+      Map<String, String> twoWayParams = 
Map.of(DefaultSensitiveStringCodec.ALGORITHM, 
DefaultSensitiveStringCodec.TWO_WAY);
+      assertNotEquals(blaVersion,  
PasswordMaskingUtil.getDefaultCodec(twoWayParams).encode(someString));
    }
 
    @Test
-   public void testCompareWithOnewayAlgorithm() throws Exception {
-      testCompareWithAlgorithm(DefaultSensitiveStringCodec.ONE_WAY);
+   public void testCompareWithOneWayAlgorithm() throws Exception {
+      testCompareWithAlgorithm(Map.of(DefaultSensitiveStringCodec.ALGORITHM, 
DefaultSensitiveStringCodec.ONE_WAY));
    }
 
    @Test
-   public void testCompareWithTwowayAlgorithm() throws Exception {
-      testCompareWithAlgorithm(DefaultSensitiveStringCodec.TWO_WAY);
+   public void testCompareWithTwoWayAlgorithm() throws Exception {
+      testCompareWithAlgorithm(Map.of(DefaultSensitiveStringCodec.ALGORITHM, 
DefaultSensitiveStringCodec.TWO_WAY));
    }
 
-   private void testCompareWithAlgorithm(String algorithm) throws Exception {
-      DefaultSensitiveStringCodec codec = 
getDefaultSensitiveStringCodec(algorithm);
+
+   private void testCompareWithAlgorithm(Map<String, String> params) throws 
Exception {
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec(params);
 
       String plainText = "some_password";
       String maskedText = codec.encode(plainText);
@@ -117,13 +145,4 @@ public class DefaultSensitiveStringCodecTest {
       String otherPassword = "some_other_password";
       assertFalse(codec.verify(otherPassword.toCharArray(), maskedText));
    }
-
-   private DefaultSensitiveStringCodec getDefaultSensitiveStringCodec(String 
algorithm) throws Exception {
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
-      Map<String, String> params = new HashMap<>();
-      params.put(DefaultSensitiveStringCodec.ALGORITHM, algorithm);
-      codec.init(params);
-
-      return codec;
-   }
 }
diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java
index 161c4d9630..ba1c1e6244 100644
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java
+++ 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationParserTest.java
@@ -211,7 +211,7 @@ public class FileConfigurationParserTest extends 
ServerTestBase {
       assertEquals("helloworld", config.getClusterPassword());
 
       //if we add mask, it should be able to decode correctly
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
       String mask = codec.encode("helloworld");
 
       String maskPasswordPart = "<mask-password>true</mask-password>";
@@ -266,7 +266,7 @@ public class FileConfigurationParserTest extends 
ServerTestBase {
       assertEquals("helloworld", config.getClusterPassword());
 
       //if we add mask, it should be able to decode correctly
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
       String mask = codec.encode("helloworld");
 
       clusterPasswordPart = "<cluster-password>" + 
PasswordMaskingUtil.wrap(mask) + "</cluster-password>";
diff --git a/docs/user-manual/masking-passwords.adoc 
b/docs/user-manual/masking-passwords.adoc
index ca0ede82be..803d23c617 100644
--- a/docs/user-manual/masking-passwords.adoc
+++ b/docs/user-manual/masking-passwords.adoc
@@ -26,7 +26,7 @@ The above indicates that the password is masked and the 
masked value is `xyz`.
 
 The `ENC()` syntax is the *preferred way* of masking a password and is 
universally supported in every password configuration in Artemis.
 
-The other, legacy way is to use a `mask-password` attribute to tell that a  
password in a configuration file should be treated as 'masked'.
+The other, legacy way is to use a `mask-password` attribute to tell that a 
password in a configuration file should be treated as 'masked'.
 For example:
 
 [,xml]
@@ -43,7 +43,10 @@ Newer configurations may not support it.
 To mask a password use the `mask` command from the `bin` directory of your 
Artemis _instance_.
 This command will not work from the Artemis home.
 
-The `mask` command uses <<the-default-codec,the default codec>> unless 
<<using-a-custom-codec,a custom codec>> is defined in `broker.xml` and the 
`--password-codec` option is `true`.
+By default, the `mask` command uses the legacy two-way algorithm of 
<<the-default-codec,the default codec>>
+unless <<using-a-custom-codec,a custom codec>> is defined in `broker.xml` and 
the `--password-codec` option is `true`.
+The legacy `two-way` algorithm is now *deprecated* and exists only to maintain 
backward-compatibility,
+use <<using-a-custom-codec,a custom codec>> instead.
 Here's a simple example:
 
 [,sh]
@@ -104,7 +107,7 @@ For example:
 ./artemis user add --user-command-user guest --user-command-password guest 
--role admin
 ----
 
-This will use the default codec to perform a "one-way" hash of the password 
and alter both the `artemis-users.properties` and `artemis-roles.properties` 
files with the specified values.
+This will use the default codec to perform a `one-way` hash of the password 
and alter both the `artemis-users.properties` and `artemis-roles.properties` 
files with the specified values.
 
 Passwords in `artemis-users.properties` are automatically detected as hashed 
or not by looking for the syntax `ENC(<hash>)`.
 The `mask-password` parameter does not need to be `true` to use hashed 
passwords here.
@@ -366,13 +369,16 @@ However, a user can implement their own if they wish.
 
 Whenever no codec is specified in the configuration, the default codec is used.
 The class name for the default codec is 
`org.apache.activemq.artemis.utils.DefaultSensitiveStringCodec`.
-It has hashing, encoding, and decoding capabilities.
-It uses `java.crypto.Cipher` utilities to hash or encode a plaintext password 
and also to decode a masked string using the same algorithm and "key."
-
-The "key" used here is important since the _same_ key *must* be used to both 
mask and unmask the password.
-The key is just a string of characters which the codec feeds to the underlying 
algorithm.
-There is a default key in 
`org.apache.activemq.artemis.utils.DefaultSensitiveStringCodec`, but using the 
default key leaves open the possibility that nefarious actors could also use 
that key to unmask the password(s).
-Therefore, it is possible to supply your _own_ key, and there are a few ways 
to do this.
+It provides 2 algorithms: `one-way` and `two-way`.
+The `one-way` algorithm can hash a string and is the default algorithm used by 
<<propertiesloginmodule,PropertiesLoginModule>>.
+The `two-way` algorithm can encode/decode a string by using a `key`.
+The `two-way` algorithm has a default key in 
`org.apache.activemq.artemis.utils.DefaultSensitiveStringCodec`,
+but using the default key leaves open the possibility that nefarious actors 
could also use that key to unmask the password(s).
+It is now *deprecated* and exists only to maintain backward-compatibility,
+use <<using-a-custom-codec,a custom codec>> instead.
+The `key` used here is important since the _same_ key *must* be used to both 
mask and unmask the password.
+It is just a string of characters which the codec feeds to the underlying 
algorithm.
+There are a few ways to to supply your _own_ key:
 
 . Specify the key in the codec configuration using the `key=value` syntax.
 Depending on which password you're trying to mask the configuration specifics 
will differ slightly, but this can be done, for example, in `broker.xml` with 
`<password-codec>`:
diff --git a/docs/user-manual/versions.adoc b/docs/user-manual/versions.adoc
index eca503e63b..a2bda2f1e9 100644
--- a/docs/user-manual/versions.adoc
+++ b/docs/user-manual/versions.adoc
@@ -12,6 +12,14 @@ NOTE: If the upgrade spans multiple versions then the steps 
from *each* version
 
 NOTE: Follow the general upgrade procedure outlined in the 
xref:upgrading.adoc#upgrading-the-broker[Upgrading the Broker]  chapter in 
addition to any version-specific upgrade instructions outlined here.
 
+== 2.38.0
+
+https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12355013[Full
 release notes]
+
+=== Highlights
+
+* The `two-way` algorithm of the default codec is deprecated, use a custom 
codec instead.
+
 == 2.37.0
 
 
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&version=12354977[Full
 release notes]
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ra/ResourceAdapterTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ra/ResourceAdapterTest.java
index 2931bc0f6f..2f5b9f522e 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ra/ResourceAdapterTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ra/ResourceAdapterTest.java
@@ -694,7 +694,7 @@ public class ResourceAdapterTest extends ActiveMQRATestBase 
{
       qResourceAdapter.setConnectorClassName(INVM_CONNECTOR_FACTORY);
       ActiveMQRATestBase.MyBootstrapContext ctx = new 
ActiveMQRATestBase.MyBootstrapContext();
 
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
       String mask = codec.encode("helloworld");
 
       qResourceAdapter.setUseMaskedPassword(true);
@@ -730,7 +730,7 @@ public class ResourceAdapterTest extends ActiveMQRATestBase 
{
       qResourceAdapter.setConnectorClassName(INVM_CONNECTOR_FACTORY);
       ActiveMQRATestBase.MyBootstrapContext ctx = new 
ActiveMQRATestBase.MyBootstrapContext();
 
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
       String mask = codec.encode("helloworld");
 
       qResourceAdapter.setPassword(PasswordMaskingUtil.wrap(mask));
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
index ae0323fc38..66627c5dfe 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ssl/CoreClientOverOneWaySSLTest.java
@@ -355,8 +355,6 @@ public class CoreClientOverOneWaySSLTest extends 
ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
-      Map<String, String> params = new HashMap<>();
-      codec.init(params);
 
       String masked = codec.encode(PASSWORD);
       String url = "tcp://127.0.0.1:61616?sslEnabled=true;trustStorePath=" + 
CLIENT_SIDE_TRUSTSTORE + ";trustStorePassword=" + masked + 
";activemq.usemaskedpassword=true";
@@ -389,8 +387,6 @@ public class CoreClientOverOneWaySSLTest extends 
ActiveMQTestBase {
       String text = RandomUtil.randomString();
 
       DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
-      Map<String, String> params = new HashMap<>();
-      codec.init(params);
 
       String masked = codec.encode(PASSWORD);
 
diff --git 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/netty/NettyConnectorTest.java
 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/netty/NettyConnectorTest.java
index c0a4e0f7e9..24f84e0cb4 100644
--- 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/netty/NettyConnectorTest.java
+++ 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/remoting/impl/netty/NettyConnectorTest.java
@@ -179,7 +179,7 @@ public class NettyConnectorTest extends ActiveMQTestBase {
       BufferHandler handler = (connectionID, buffer) -> {
       };
 
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
 
       System.setProperty(NettyConnector.JAVAX_KEYSTORE_PATH_PROP_NAME, 
"client-keystore.jks");
       System.setProperty(NettyConnector.JAVAX_KEYSTORE_PASSWORD_PROP_NAME, 
PasswordMaskingUtil.wrap(codec.encode("securepass")));
@@ -209,7 +209,7 @@ public class NettyConnectorTest extends ActiveMQTestBase {
       BufferHandler handler = (connectionID, buffer) -> {
       };
 
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
 
       System.setProperty(NettyConnector.JAVAX_KEYSTORE_PATH_PROP_NAME, 
"client-keystore.jks");
       System.setProperty(NettyConnector.JAVAX_KEYSTORE_PASSWORD_PROP_NAME, 
PasswordMaskingUtil.wrap(codec.encode("bad password")));
@@ -386,7 +386,7 @@ public class NettyConnectorTest extends ActiveMQTestBase {
 
       NettyConnector connector = new NettyConnector(params, handler, listener, 
executorService, 
Executors.newCachedThreadPool(ActiveMQThreadFactory.defaultThreadFactory(getClass().getName())),
 Executors.newScheduledThreadPool(5, 
ActiveMQThreadFactory.defaultThreadFactory(getClass().getName())));
 
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
 
       System.setProperty(NettyConnector.ACTIVEMQ_KEYSTORE_PATH_PROP_NAME, 
"client-keystore.jks");
       System.setProperty(NettyConnector.ACTIVEMQ_KEYSTORE_PASSWORD_PROP_NAME, 
PasswordMaskingUtil.wrap(codec.encode("securepass")));
@@ -410,7 +410,7 @@ public class NettyConnectorTest extends ActiveMQTestBase {
 
       NettyConnector connector = new NettyConnector(params, handler, listener, 
executorService, 
Executors.newCachedThreadPool(ActiveMQThreadFactory.defaultThreadFactory(getClass().getName())),
 Executors.newScheduledThreadPool(5, 
ActiveMQThreadFactory.defaultThreadFactory(getClass().getName())));
 
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
 
       System.setProperty(NettyConnector.ACTIVEMQ_KEYSTORE_PATH_PROP_NAME, 
"client-keystore.jks");
       System.setProperty(NettyConnector.ACTIVEMQ_KEYSTORE_PASSWORD_PROP_NAME, 
PasswordMaskingUtil.wrap(codec.encode("bad password")));
@@ -503,7 +503,7 @@ public class NettyConnectorTest extends ActiveMQTestBase {
 
       NettyConnector connector = new NettyConnector(params, handler, listener, 
executorService, 
Executors.newCachedThreadPool(ActiveMQThreadFactory.defaultThreadFactory(getClass().getName())),
 Executors.newScheduledThreadPool(5, 
ActiveMQThreadFactory.defaultThreadFactory(getClass().getName())));
 
-      DefaultSensitiveStringCodec codec = new DefaultSensitiveStringCodec();
+      DefaultSensitiveStringCodec codec = 
PasswordMaskingUtil.getDefaultCodec();
 
       
System.setProperty(NettyConnector.ACTIVEMQ_SSL_PASSWORD_CODEC_CLASS_PROP_NAME, 
NettyConnectorTestPasswordCodec.class.getName());
       System.setProperty(NettyConnector.ACTIVEMQ_KEYSTORE_PATH_PROP_NAME, 
"client-keystore.jks");


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to