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

markt pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new f3997773d3 Refactor code using MD5Encoder to use HexUtils.toHexString()
f3997773d3 is described below

commit f3997773d34df4150b0991c04c2f473d69ccbbca
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Mar 3 14:35:31 2023 +0000

    Refactor code using MD5Encoder to use HexUtils.toHexString()
    
    Removes duplicate functionality.
---
 .../org/apache/catalina/authenticator/DigestAuthenticator.java |  8 ++++----
 java/org/apache/catalina/realm/RealmBase.java                  |  6 +++---
 java/org/apache/catalina/servlets/WebdavServlet.java           |  4 ++--
 java/org/apache/tomcat/util/security/MD5Encoder.java           |  5 +++++
 java/org/apache/tomcat/websocket/DigestAuthenticator.java      |  4 ++--
 .../apache/catalina/authenticator/TestDigestAuthenticator.java |  4 ++--
 .../authenticator/TestSSOnonLoginAndDigestAuthenticator.java   |  4 ++--
 .../authenticator/TesterDigestAuthenticatorPerformance.java    |  8 ++++----
 test/org/apache/catalina/realm/TestJNDIRealm.java              | 10 +++++-----
 webapps/docs/changelog.xml                                     |  4 ++++
 10 files changed, 33 insertions(+), 24 deletions(-)

diff --git a/java/org/apache/catalina/authenticator/DigestAuthenticator.java 
b/java/org/apache/catalina/authenticator/DigestAuthenticator.java
index 9ef3dd8b40..247ea05d8c 100644
--- a/java/org/apache/catalina/authenticator/DigestAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/DigestAuthenticator.java
@@ -31,10 +31,10 @@ import org.apache.catalina.Realm;
 import org.apache.catalina.connector.Request;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.buf.HexUtils;
 import org.apache.tomcat.util.buf.MessageBytes;
 import org.apache.tomcat.util.http.parser.Authorization;
 import org.apache.tomcat.util.security.ConcurrentMessageDigest;
-import org.apache.tomcat.util.security.MD5Encoder;
 
 
 /**
@@ -296,7 +296,7 @@ public class DigestAuthenticator extends AuthenticatorBase {
         String ipTimeKey = request.getRemoteAddr() + ":" + currentTime + ":" + 
getKey();
 
         byte[] buffer = 
ConcurrentMessageDigest.digestMD5(ipTimeKey.getBytes(StandardCharsets.ISO_8859_1));
-        String nonce = currentTime + ":" + MD5Encoder.encode(buffer);
+        String nonce = currentTime + ":" + HexUtils.toHexString(buffer);
 
         NonceInfo info = new NonceInfo(currentTime, getNonceCountWindowSize());
         synchronized (nonces) {
@@ -539,7 +539,7 @@ public class DigestAuthenticator extends AuthenticatorBase {
             }
             String serverIpTimeKey = request.getRemoteAddr() + ":" + nonceTime 
+ ":" + key;
             byte[] buffer = 
ConcurrentMessageDigest.digestMD5(serverIpTimeKey.getBytes(StandardCharsets.ISO_8859_1));
-            String md5ServerIpTimeKey = MD5Encoder.encode(buffer);
+            String md5ServerIpTimeKey = HexUtils.toHexString(buffer);
             if (!md5ServerIpTimeKey.equals(md5clientIpTimeKey)) {
                 return false;
             }
@@ -597,7 +597,7 @@ public class DigestAuthenticator extends AuthenticatorBase {
             String a2 = method + ":" + uri;
 
             byte[] buffer = 
ConcurrentMessageDigest.digestMD5(a2.getBytes(StandardCharsets.ISO_8859_1));
-            String md5a2 = MD5Encoder.encode(buffer);
+            String md5a2 = HexUtils.toHexString(buffer);
 
             return realm.authenticate(userName, response, nonce, nc, cnonce, 
qop, realmName, md5a2);
         }
diff --git a/java/org/apache/catalina/realm/RealmBase.java 
b/java/org/apache/catalina/realm/RealmBase.java
index 25149713ef..c55a64bc7c 100644
--- a/java/org/apache/catalina/realm/RealmBase.java
+++ b/java/org/apache/catalina/realm/RealmBase.java
@@ -52,11 +52,11 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.IntrospectionUtils;
 import org.apache.tomcat.util.buf.B2CConverter;
+import org.apache.tomcat.util.buf.HexUtils;
 import org.apache.tomcat.util.descriptor.web.SecurityCollection;
 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.security.ConcurrentMessageDigest;
-import org.apache.tomcat.util.security.MD5Encoder;
 import org.ietf.jgss.GSSContext;
 import org.ietf.jgss.GSSCredential;
 import org.ietf.jgss.GSSException;
@@ -399,7 +399,7 @@ public abstract class RealmBase extends LifecycleMBeanBase 
implements Realm {
                     uee);
         }
 
-        String serverDigest = 
MD5Encoder.encode(ConcurrentMessageDigest.digestMD5(valueBytes));
+        String serverDigest = 
HexUtils.toHexString(ConcurrentMessageDigest.digestMD5(valueBytes));
 
         if (log.isDebugEnabled()) {
             log.debug("Digest : " + clientDigest + " Username:" + username + " 
ClientDigest:" + clientDigest +
@@ -1131,7 +1131,7 @@ public abstract class RealmBase extends 
LifecycleMBeanBase implements Realm {
                     uee);
         }
 
-        return 
MD5Encoder.encode(ConcurrentMessageDigest.digestMD5(valueBytes));
+        return 
HexUtils.toHexString(ConcurrentMessageDigest.digestMD5(valueBytes));
     }
 
 
diff --git a/java/org/apache/catalina/servlets/WebdavServlet.java 
b/java/org/apache/catalina/servlets/WebdavServlet.java
index 876d804f41..096ed5a84f 100644
--- a/java/org/apache/catalina/servlets/WebdavServlet.java
+++ b/java/org/apache/catalina/servlets/WebdavServlet.java
@@ -54,11 +54,11 @@ import org.apache.catalina.connector.RequestFacade;
 import org.apache.catalina.util.DOMWriter;
 import org.apache.catalina.util.URLEncoder;
 import org.apache.catalina.util.XMLWriter;
+import org.apache.tomcat.util.buf.HexUtils;
 import org.apache.tomcat.util.http.ConcurrentDateFormat;
 import org.apache.tomcat.util.http.FastHttpDateFormat;
 import org.apache.tomcat.util.http.RequestUtil;
 import org.apache.tomcat.util.security.ConcurrentMessageDigest;
-import org.apache.tomcat.util.security.MD5Encoder;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -1070,7 +1070,7 @@ public class WebdavServlet extends DefaultServlet {
                     lock.depth + "-" + lock.owner + "-" + lock.tokens + "-" +
                     lock.expiresAt + "-" + System.currentTimeMillis() + "-" +
                     secret;
-            String lockToken = 
MD5Encoder.encode(ConcurrentMessageDigest.digestMD5(
+            String lockToken = 
HexUtils.toHexString(ConcurrentMessageDigest.digestMD5(
                     lockTokenStr.getBytes(StandardCharsets.ISO_8859_1)));
 
             if (resource.isDirectory() && lock.depth == maxDepth) {
diff --git a/java/org/apache/tomcat/util/security/MD5Encoder.java 
b/java/org/apache/tomcat/util/security/MD5Encoder.java
index 542dfd2010..c42f3e3403 100644
--- a/java/org/apache/tomcat/util/security/MD5Encoder.java
+++ b/java/org/apache/tomcat/util/security/MD5Encoder.java
@@ -16,6 +16,8 @@
  */
 package org.apache.tomcat.util.security;
 
+import org.apache.tomcat.util.buf.HexUtils;
+
 /**
  * Encode an MD5 digest into a String.
  * <p>
@@ -24,7 +26,10 @@ package org.apache.tomcat.util.security;
  * of the digest.
  *
  * @author Remy Maucherat
+ *
+ * @deprecated Unused. Use {@link HexUtils} instead. Will be removed in Tomcat 
11.
  */
+@Deprecated
 public final class MD5Encoder {
 
 
diff --git a/java/org/apache/tomcat/websocket/DigestAuthenticator.java 
b/java/org/apache/tomcat/websocket/DigestAuthenticator.java
index f9511537be..000f01e445 100644
--- a/java/org/apache/tomcat/websocket/DigestAuthenticator.java
+++ b/java/org/apache/tomcat/websocket/DigestAuthenticator.java
@@ -22,7 +22,7 @@ import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.util.Map;
 
-import org.apache.tomcat.util.security.MD5Encoder;
+import org.apache.tomcat.util.buf.HexUtils;
 
 /**
  * Authenticator supporting the DIGEST authentication method.
@@ -141,7 +141,7 @@ public class DigestAuthenticator extends Authenticator {
         MessageDigest md = MessageDigest.getInstance("MD5");
         byte[] thedigest = md.digest(bytesOfMessage);
 
-        return MD5Encoder.encode(thedigest);
+        return HexUtils.toHexString(thedigest);
     }
 
     @Override
diff --git 
a/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java 
b/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java
index b119b443d3..1e01229f9f 100644
--- a/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java
+++ b/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java
@@ -37,11 +37,11 @@ import org.apache.tomcat.unittest.TesterContext;
 import org.apache.tomcat.unittest.TesterRequest;
 import org.apache.tomcat.unittest.TesterServletContext;
 import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.HexUtils;
 import org.apache.tomcat.util.descriptor.web.LoginConfig;
 import org.apache.tomcat.util.descriptor.web.SecurityCollection;
 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 import org.apache.tomcat.util.security.ConcurrentMessageDigest;
-import org.apache.tomcat.util.security.MD5Encoder;
 
 public class TestDigestAuthenticator extends TomcatBaseTest {
 
@@ -383,6 +383,6 @@ public class TestDigestAuthenticator extends TomcatBaseTest 
{
     }
 
     private static String digest(String input) {
-        return 
MD5Encoder.encode(ConcurrentMessageDigest.digestMD5(input.getBytes()));
+        return 
HexUtils.toHexString(ConcurrentMessageDigest.digestMD5(input.getBytes()));
     }
 }
diff --git 
a/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
 
b/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
index fbf14fe209..539d7f12a3 100644
--- 
a/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
+++ 
b/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
@@ -30,11 +30,11 @@ import org.apache.catalina.startup.TesterServlet;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
 import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.HexUtils;
 import org.apache.tomcat.util.descriptor.web.LoginConfig;
 import org.apache.tomcat.util.descriptor.web.SecurityCollection;
 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 import org.apache.tomcat.util.security.ConcurrentMessageDigest;
-import org.apache.tomcat.util.security.MD5Encoder;
 
 /**
  * Test DigestAuthenticator and NonLoginAuthenticator when a
@@ -457,7 +457,7 @@ public class TestSSOnonLoginAndDigestAuthenticator extends 
TomcatBaseTest {
     }
 
     private static String digest(String input) {
-        return MD5Encoder.encode(ConcurrentMessageDigest.digestMD5(
+        return HexUtils.toHexString(ConcurrentMessageDigest.digestMD5(
                 input.getBytes(StandardCharsets.UTF_8)));
     }
 
diff --git 
a/test/org/apache/catalina/authenticator/TesterDigestAuthenticatorPerformance.java
 
b/test/org/apache/catalina/authenticator/TesterDigestAuthenticatorPerformance.java
index 7039263467..ce404a1f79 100644
--- 
a/test/org/apache/catalina/authenticator/TesterDigestAuthenticatorPerformance.java
+++ 
b/test/org/apache/catalina/authenticator/TesterDigestAuthenticatorPerformance.java
@@ -37,9 +37,9 @@ import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.core.StandardService;
 import org.apache.catalina.filters.TesterHttpServletResponse;
 import org.apache.catalina.startup.TesterMapRealm;
+import org.apache.tomcat.util.buf.HexUtils;
 import org.apache.tomcat.util.descriptor.web.LoginConfig;
 import org.apache.tomcat.util.security.ConcurrentMessageDigest;
-import org.apache.tomcat.util.security.MD5Encoder;
 
 public class TesterDigestAuthenticatorPerformance {
 
@@ -160,9 +160,9 @@ public class TesterDigestAuthenticatorPerformance {
         private static final String A1 = USER + ":" + REALM + ":" + PWD;
         private static final String A2 = METHOD + ":" + CONTEXT_PATH + URI;
 
-        private static final String MD5A1 = MD5Encoder.encode(
+        private static final String MD5A1 = HexUtils.toHexString(
                 ConcurrentMessageDigest.digest("MD5", 
A1.getBytes(StandardCharsets.UTF_8)));
-        private static final String MD5A2 = MD5Encoder.encode(
+        private static final String MD5A2 = HexUtils.toHexString(
                 ConcurrentMessageDigest.digest("MD5", 
A2.getBytes(StandardCharsets.UTF_8)));
 
 
@@ -215,7 +215,7 @@ public class TesterDigestAuthenticatorPerformance {
             String response = MD5A1 + ":" + nonce + ":" + ncString + ":" +
                     cnonce + ":" + QOP + ":" + MD5A2;
 
-            String md5response = 
MD5Encoder.encode(ConcurrentMessageDigest.digest(
+            String md5response = 
HexUtils.toHexString(ConcurrentMessageDigest.digest(
                     "MD5", response.getBytes(StandardCharsets.UTF_8)));
 
             StringBuilder auth = new StringBuilder();
diff --git a/test/org/apache/catalina/realm/TestJNDIRealm.java 
b/test/org/apache/catalina/realm/TestJNDIRealm.java
index 78412fac06..6b792fe2f0 100644
--- a/test/org/apache/catalina/realm/TestJNDIRealm.java
+++ b/test/org/apache/catalina/realm/TestJNDIRealm.java
@@ -42,7 +42,7 @@ import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
 import org.apache.naming.NameParserImpl;
 import org.apache.tomcat.unittest.TesterContext;
-import org.apache.tomcat.util.security.MD5Encoder;
+import org.apache.tomcat.util.buf.HexUtils;
 import org.easymock.EasyMock;
 
 public class TestJNDIRealm {
@@ -71,7 +71,7 @@ public class TestJNDIRealm {
 
         // WHEN
         String expectedResponse =
-                MD5Encoder.encode(md5Helper.digest((ha1() + ":" + NONCE + ":" 
+ HA2).getBytes()));
+                HexUtils.toHexString(md5Helper.digest((ha1() + ":" + NONCE + 
":" + HA2).getBytes()));
         Principal principal =
                 realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, HA2);
 
@@ -87,7 +87,7 @@ public class TestJNDIRealm {
 
         // WHEN
         String expectedResponse =
-                MD5Encoder.encode(md5Helper.digest((ha1() + ":" + NONCE + ":" 
+ HA2).getBytes()));
+                HexUtils.toHexString(md5Helper.digest((ha1() + ":" + NONCE + 
":" + HA2).getBytes()));
         Principal principal =
                 realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, HA2);
 
@@ -105,7 +105,7 @@ public class TestJNDIRealm {
 
         // WHEN
         String expectedResponse =
-                MD5Encoder.encode(md5Helper.digest((ha1() + ":" + NONCE + ":" 
+ HA2).getBytes()));
+                HexUtils.toHexString(md5Helper.digest((ha1() + ":" + NONCE + 
":" + HA2).getBytes()));
         Principal principal =
                 realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, HA2);
 
@@ -194,6 +194,6 @@ public class TestJNDIRealm {
 
     private String ha1() {
         String a1 = USER + ":" + REALM + ":" + PASSWORD;
-        return MD5Encoder.encode(md5Helper.digest(a1.getBytes()));
+        return HexUtils.toHexString(md5Helper.digest(a1.getBytes()));
     }
 }
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 146830d8d8..22a29ca59f 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -139,6 +139,10 @@
       <add>
         Improvements to Chinese translations. Contributed by totoo. (markt)
       </add>
+      <scode>
+        Refactor code using <code>MD5Encoder</code> to use
+        <code>HexUtils.toHexString()</code>. (markt)
+      </scode>
     </changelog>
   </subsection>
 </section>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to