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 e46f1f79d4 Rename digests to remove reference to specific algorithm
e46f1f79d4 is described below

commit e46f1f79d4cda70b6678be66520afa2e7dae5dff
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Mar 9 15:29:10 2023 +0000

    Rename digests to remove reference to specific algorithm
    
    This is in preparation for implementing RFC 7616
---
 java/org/apache/catalina/Realm.java                   |  5 ++---
 .../catalina/authenticator/DigestAuthenticator.java   |  4 ++--
 java/org/apache/catalina/realm/CombinedRealm.java     |  4 ++--
 .../apache/catalina/realm/JAASCallbackHandler.java    | 14 +++++++-------
 .../apache/catalina/realm/JAASMemoryLoginModule.java  |  8 ++++----
 java/org/apache/catalina/realm/JAASRealm.java         |  4 ++--
 java/org/apache/catalina/realm/JNDIRealm.java         |  4 ++--
 java/org/apache/catalina/realm/LockOutRealm.java      |  4 ++--
 java/org/apache/catalina/realm/RealmBase.java         | 14 +++++++-------
 .../authenticator/TestDigestAuthenticator.java        | 10 +++++-----
 .../TestSSOnonLoginAndDigestAuthenticator.java        | 10 +++++-----
 .../TesterDigestAuthenticatorPerformance.java         |  8 ++++----
 test/org/apache/catalina/realm/TestJNDIRealm.java     | 19 ++++++++++---------
 13 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/java/org/apache/catalina/Realm.java 
b/java/org/apache/catalina/Realm.java
index 09a7f8925d..cb27fdd487 100644
--- a/java/org/apache/catalina/Realm.java
+++ b/java/org/apache/catalina/Realm.java
@@ -98,15 +98,14 @@ public interface Realm extends Contained {
      * @param qop the "quality of protection" ({@code nc} and {@code cnonce}
      *        will only be used, if {@code qop} is not {@code null}).
      * @param realm Realm name
-     * @param md5a2 Second MD5 digest used to calculate the digest :
-     * MD5(Method + ":" + uri)
+     * @param digestA2 Second digest calculated as digest(Method + ":" + uri)
      *
      * @return the associated principal, or {@code null} if there is none.
      */
     Principal authenticate(String username, String digest,
                                   String nonce, String nc, String cnonce,
                                   String qop, String realm,
-                                  String md5a2);
+                                  String digestA2);
 
 
     /**
diff --git a/java/org/apache/catalina/authenticator/DigestAuthenticator.java 
b/java/org/apache/catalina/authenticator/DigestAuthenticator.java
index 247ea05d8c..0d5e681a3f 100644
--- a/java/org/apache/catalina/authenticator/DigestAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/DigestAuthenticator.java
@@ -597,9 +597,9 @@ public class DigestAuthenticator extends AuthenticatorBase {
             String a2 = method + ":" + uri;
 
             byte[] buffer = 
ConcurrentMessageDigest.digestMD5(a2.getBytes(StandardCharsets.ISO_8859_1));
-            String md5a2 = HexUtils.toHexString(buffer);
+            String digestA2 = HexUtils.toHexString(buffer);
 
-            return realm.authenticate(userName, response, nonce, nc, cnonce, 
qop, realmName, md5a2);
+            return realm.authenticate(userName, response, nonce, nc, cnonce, 
qop, realmName, digestA2);
         }
 
     }
diff --git a/java/org/apache/catalina/realm/CombinedRealm.java 
b/java/org/apache/catalina/realm/CombinedRealm.java
index 0b942a78e7..08804a29ac 100644
--- a/java/org/apache/catalina/realm/CombinedRealm.java
+++ b/java/org/apache/catalina/realm/CombinedRealm.java
@@ -89,7 +89,7 @@ public class CombinedRealm extends RealmBase {
 
     @Override
     public Principal authenticate(String username, String clientDigest, String 
nonce, String nc, String cnonce,
-            String qop, String realmName, String md5a2) {
+            String qop, String realmName, String digestA2) {
         Principal authenticatedUser = null;
 
         for (Realm realm : realms) {
@@ -97,7 +97,7 @@ public class CombinedRealm extends RealmBase {
                 log.debug(sm.getString("combinedRealm.authStart", username, 
realm.getClass().getName()));
             }
 
-            authenticatedUser = realm.authenticate(username, clientDigest, 
nonce, nc, cnonce, qop, realmName, md5a2);
+            authenticatedUser = realm.authenticate(username, clientDigest, 
nonce, nc, cnonce, qop, realmName, digestA2);
 
             if (authenticatedUser == null) {
                 if (log.isDebugEnabled()) {
diff --git a/java/org/apache/catalina/realm/JAASCallbackHandler.java 
b/java/org/apache/catalina/realm/JAASCallbackHandler.java
index bf0205e9b1..a708befc0a 100644
--- a/java/org/apache/catalina/realm/JAASCallbackHandler.java
+++ b/java/org/apache/catalina/realm/JAASCallbackHandler.java
@@ -76,11 +76,11 @@ public class JAASCallbackHandler implements CallbackHandler 
{
      * @param cnonce     Client generated nonce
      * @param qop        Quality of protection applied to the message
      * @param realmName  Realm name
-     * @param md5a2      Second MD5 digest used to calculate the digest 
MD5(Method + ":" + uri)
+     * @param digestA2   Second digest calculated as digest(Method + ":" + uri)
      * @param authMethod The authentication method in use
      */
     public JAASCallbackHandler(JAASRealm realm, String username, String 
password, String nonce, String nc,
-            String cnonce, String qop, String realmName, String md5a2, String 
authMethod) {
+            String cnonce, String qop, String realmName, String digestA2, 
String authMethod) {
         this.realm = realm;
         this.username = username;
 
@@ -94,7 +94,7 @@ public class JAASCallbackHandler implements CallbackHandler {
         this.cnonce = cnonce;
         this.qop = qop;
         this.realmName = realmName;
-        this.md5a2 = md5a2;
+        this.digestA2 = digestA2;
         this.authMethod = authMethod;
     }
 
@@ -147,9 +147,9 @@ public class JAASCallbackHandler implements CallbackHandler 
{
     protected final String realmName;
 
     /**
-     * Second MD5 digest.
+     * Second digest.
      */
-    protected final String md5a2;
+    protected final String digestA2;
 
     /**
      * The authentication method to be used. If null, assume BASIC/FORM.
@@ -199,8 +199,8 @@ public class JAASCallbackHandler implements CallbackHandler 
{
                     cb.setText(qop);
                 } else if (cb.getPrompt().equals("realmName")) {
                     cb.setText(realmName);
-                } else if (cb.getPrompt().equals("md5a2")) {
-                    cb.setText(md5a2);
+                } else if (cb.getPrompt().equals("digestA2")) {
+                    cb.setText(digestA2);
                 } else if (cb.getPrompt().equals("authMethod")) {
                     cb.setText(authMethod);
                 } else if (cb.getPrompt().equals("catalinaBase")) {
diff --git a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java 
b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
index 1958e90a02..b5b99467d1 100644
--- a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
+++ b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
@@ -247,7 +247,7 @@ public class JAASMemoryLoginModule extends MemoryRealm 
implements LoginModule {
         callbacks[4] = new TextInputCallback("cnonce");
         callbacks[5] = new TextInputCallback("qop");
         callbacks[6] = new TextInputCallback("realmName");
-        callbacks[7] = new TextInputCallback("md5a2");
+        callbacks[7] = new TextInputCallback("digestA2");
         callbacks[8] = new TextInputCallback("authMethod");
 
         // Interact with the user to retrieve the username and password
@@ -258,7 +258,7 @@ public class JAASMemoryLoginModule extends MemoryRealm 
implements LoginModule {
         String cnonce = null;
         String qop = null;
         String realmName = null;
-        String md5a2 = null;
+        String digestA2 = null;
         String authMethod = null;
 
         try {
@@ -270,7 +270,7 @@ public class JAASMemoryLoginModule extends MemoryRealm 
implements LoginModule {
             cnonce = ((TextInputCallback) callbacks[4]).getText();
             qop = ((TextInputCallback) callbacks[5]).getText();
             realmName = ((TextInputCallback) callbacks[6]).getText();
-            md5a2 = ((TextInputCallback) callbacks[7]).getText();
+            digestA2 = ((TextInputCallback) callbacks[7]).getText();
             authMethod = ((TextInputCallback) callbacks[8]).getText();
         } catch (IOException | UnsupportedCallbackException e) {
             throw new 
LoginException(sm.getString("jaasMemoryLoginModule.callbackHandlerError", 
e.toString()));
@@ -281,7 +281,7 @@ public class JAASMemoryLoginModule extends MemoryRealm 
implements LoginModule {
             // BASIC or FORM
             principal = super.authenticate(username, password);
         } else if (authMethod.equals(HttpServletRequest.DIGEST_AUTH)) {
-            principal = super.authenticate(username, password, nonce, nc, 
cnonce, qop, realmName, md5a2);
+            principal = super.authenticate(username, password, nonce, nc, 
cnonce, qop, realmName, digestA2);
         } else if (authMethod.equals(HttpServletRequest.CLIENT_CERT_AUTH)) {
             principal = super.getPrincipal(username);
         } else {
diff --git a/java/org/apache/catalina/realm/JAASRealm.java 
b/java/org/apache/catalina/realm/JAASRealm.java
index 5158628251..4b14bc7fd9 100644
--- a/java/org/apache/catalina/realm/JAASRealm.java
+++ b/java/org/apache/catalina/realm/JAASRealm.java
@@ -316,9 +316,9 @@ public class JAASRealm extends RealmBase {
 
     @Override
     public Principal authenticate(String username, String clientDigest, String 
nonce, String nc, String cnonce,
-            String qop, String realmName, String md5a2) {
+            String qop, String realmName, String digestA2) {
         return authenticate(username, new JAASCallbackHandler(this, username, 
clientDigest, nonce, nc, cnonce, qop,
-                realmName, md5a2, HttpServletRequest.DIGEST_AUTH));
+                realmName, digestA2, HttpServletRequest.DIGEST_AUTH));
     }
 
 
diff --git a/java/org/apache/catalina/realm/JNDIRealm.java 
b/java/org/apache/catalina/realm/JNDIRealm.java
index b002854a02..49c7488871 100644
--- a/java/org/apache/catalina/realm/JNDIRealm.java
+++ b/java/org/apache/catalina/realm/JNDIRealm.java
@@ -1332,7 +1332,7 @@ public class JNDIRealm extends RealmBase {
      */
     @Override
     public Principal authenticate(String username, String clientDigest, String 
nonce, String nc, String cnonce,
-            String qop, String realm, String md5a2) {
+            String qop, String realm, String digestA2) {
         ClassLoader ocl = null;
         Thread currentThread = null;
         try {
@@ -1341,7 +1341,7 @@ public class JNDIRealm extends RealmBase {
                 ocl = currentThread.getContextClassLoader();
                 
currentThread.setContextClassLoader(this.getClass().getClassLoader());
             }
-            return super.authenticate(username, clientDigest, nonce, nc, 
cnonce, qop, realm, md5a2);
+            return super.authenticate(username, clientDigest, nonce, nc, 
cnonce, qop, realm, digestA2);
         } finally {
             if (currentThread != null) {
                 currentThread.setContextClassLoader(ocl);
diff --git a/java/org/apache/catalina/realm/LockOutRealm.java 
b/java/org/apache/catalina/realm/LockOutRealm.java
index 88cc18df36..e229712f0f 100644
--- a/java/org/apache/catalina/realm/LockOutRealm.java
+++ b/java/org/apache/catalina/realm/LockOutRealm.java
@@ -104,10 +104,10 @@ public class LockOutRealm extends CombinedRealm {
 
     @Override
     public Principal authenticate(String username, String clientDigest, String 
nonce, String nc, String cnonce,
-            String qop, String realmName, String md5a2) {
+            String qop, String realmName, String digestA2) {
 
         Principal authenticatedUser = super.authenticate(username, 
clientDigest, nonce, nc, cnonce, qop, realmName,
-                md5a2);
+                digestA2);
         return filterLockedAccounts(username, authenticatedUser);
     }
 
diff --git a/java/org/apache/catalina/realm/RealmBase.java 
b/java/org/apache/catalina/realm/RealmBase.java
index 221da3f718..26b706326a 100644
--- a/java/org/apache/catalina/realm/RealmBase.java
+++ b/java/org/apache/catalina/realm/RealmBase.java
@@ -330,19 +330,19 @@ public abstract class RealmBase extends 
LifecycleMBeanBase implements Realm {
 
     @Override
     public Principal authenticate(String username, String clientDigest, String 
nonce, String nc, String cnonce,
-            String qop, String realm, String md5a2) {
+            String qop, String realm, String digestA2) {
 
         // In digest auth, digests are always lower case
-        String md5a1 = getDigest(username, realm);
-        if (md5a1 == null) {
+        String digestA1 = getDigest(username, realm);
+        if (digestA1 == null) {
             return null;
         }
-        md5a1 = md5a1.toLowerCase(Locale.ENGLISH);
+        digestA1 = digestA1.toLowerCase(Locale.ENGLISH);
         String serverDigestValue;
         if (qop == null) {
-            serverDigestValue = md5a1 + ":" + nonce + ":" + md5a2;
+            serverDigestValue = digestA1 + ":" + nonce + ":" + digestA2;
         } else {
-            serverDigestValue = md5a1 + ":" + nonce + ":" + nc + ":" + cnonce 
+ ":" + qop + ":" + md5a2;
+            serverDigestValue = digestA1 + ":" + nonce + ":" + nc + ":" + 
cnonce + ":" + qop + ":" + digestA2;
         }
 
         byte[] valueBytes = null;
@@ -358,7 +358,7 @@ public abstract class RealmBase extends LifecycleMBeanBase 
implements Realm {
         if (log.isDebugEnabled()) {
             log.debug("Digest : " + clientDigest + " Username:" + username + " 
ClientDigest:" + clientDigest +
                     " nonce:" + nonce + " nc:" + nc + " cnonce:" + cnonce + " 
qop:" + qop + " realm:" + realm +
-                    "md5a2:" + md5a2 + " Server digest:" + serverDigest);
+                    "digestA2:" + digestA2 + " Server digest:" + serverDigest);
         }
 
         if (serverDigest.equals(clientDigest)) {
diff --git 
a/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java 
b/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java
index 1e01229f9f..60cf849854 100644
--- a/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java
+++ b/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java
@@ -337,15 +337,15 @@ public class TestDigestAuthenticator extends 
TomcatBaseTest {
         String a1 = user + ":" + realm + ":" + pwd;
         String a2 = "GET:" + uri;
 
-        String md5a1 = digest(a1);
-        String md5a2 = digest(a2);
+        String digestA1 = digest(a1);
+        String digestA2 = digest(a2);
 
         String response;
         if (qop == null) {
-            response = md5a1 + ":" + nonce + ":" + md5a2;
+            response = digestA1 + ":" + nonce + ":" + digestA2;
         } else {
-            response = md5a1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" +
-                    qop + ":" + md5a2;
+            response = digestA1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" +
+                    qop + ":" + digestA2;
         }
 
         String md5response = digest(response);
diff --git 
a/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
 
b/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
index 539d7f12a3..0a51b08ab2 100644
--- 
a/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
+++ 
b/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
@@ -412,15 +412,15 @@ public class TestSSOnonLoginAndDigestAuthenticator 
extends TomcatBaseTest {
         String a1 = user + ":" + realm + ":" + pwd;
         String a2 = "GET:" + uri;
 
-        String md5a1 = digest(a1);
-        String md5a2 = digest(a2);
+        String digestA1 = digest(a1);
+        String digestA2 = digest(a2);
 
         String response;
         if (qop == null) {
-            response = md5a1 + ":" + nonce + ":" + md5a2;
+            response = digestA1 + ":" + nonce + ":" + digestA2;
         } else {
-            response = md5a1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" +
-                    qop + ":" + md5a2;
+            response = digestA1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" +
+                    qop + ":" + digestA2;
         }
 
         String md5response = digest(response);
diff --git 
a/test/org/apache/catalina/authenticator/TesterDigestAuthenticatorPerformance.java
 
b/test/org/apache/catalina/authenticator/TesterDigestAuthenticatorPerformance.java
index ce404a1f79..ae66487ec0 100644
--- 
a/test/org/apache/catalina/authenticator/TesterDigestAuthenticatorPerformance.java
+++ 
b/test/org/apache/catalina/authenticator/TesterDigestAuthenticatorPerformance.java
@@ -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 = HexUtils.toHexString(
+        private static final String DIGEST_A1 = HexUtils.toHexString(
                 ConcurrentMessageDigest.digest("MD5", 
A1.getBytes(StandardCharsets.UTF_8)));
-        private static final String MD5A2 = HexUtils.toHexString(
+        private static final String DIGEST_A2 = HexUtils.toHexString(
                 ConcurrentMessageDigest.digest("MD5", 
A2.getBytes(StandardCharsets.UTF_8)));
 
 
@@ -212,8 +212,8 @@ public class TesterDigestAuthenticatorPerformance {
                     Integer.valueOf(nonceCount.incrementAndGet()));
             String cnonce = "cnonce";
 
-            String response = MD5A1 + ":" + nonce + ":" + ncString + ":" +
-                    cnonce + ":" + QOP + ":" + MD5A2;
+            String response = DIGEST_A1 + ":" + nonce + ":" + ncString + ":" +
+                    cnonce + ":" + QOP + ":" + DIGEST_A2;
 
             String md5response = 
HexUtils.toHexString(ConcurrentMessageDigest.digest(
                     "MD5", response.getBytes(StandardCharsets.UTF_8)));
diff --git a/test/org/apache/catalina/realm/TestJNDIRealm.java 
b/test/org/apache/catalina/realm/TestJNDIRealm.java
index 6b792fe2f0..472863300e 100644
--- a/test/org/apache/catalina/realm/TestJNDIRealm.java
+++ b/test/org/apache/catalina/realm/TestJNDIRealm.java
@@ -54,7 +54,8 @@ public class TestJNDIRealm {
     private static final String REALM = "test-realm";
 
     private static final String NONCE = "test-nonce";
-    private static final String HA2 = "test-md5a2";
+    // Not digested but doesn't matter for the purposes of the test
+    private static final String DIGEST_A2 = "method:request-uri";
     public static final String USER_PASSWORD_ATTR = "test-pwd";
 
     private static MessageDigest md5Helper;
@@ -71,9 +72,9 @@ public class TestJNDIRealm {
 
         // WHEN
         String expectedResponse =
-                HexUtils.toHexString(md5Helper.digest((ha1() + ":" + NONCE + 
":" + HA2).getBytes()));
+                HexUtils.toHexString(md5Helper.digest((digestA1() + ":" + 
NONCE + ":" + DIGEST_A2).getBytes()));
         Principal principal =
-                realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, HA2);
+                realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, DIGEST_A2);
 
         // THEN
         Assert.assertNull(principal);
@@ -87,9 +88,9 @@ public class TestJNDIRealm {
 
         // WHEN
         String expectedResponse =
-                HexUtils.toHexString(md5Helper.digest((ha1() + ":" + NONCE + 
":" + HA2).getBytes()));
+                HexUtils.toHexString(md5Helper.digest((digestA1() + ":" + 
NONCE + ":" + DIGEST_A2).getBytes()));
         Principal principal =
-                realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, HA2);
+                realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, DIGEST_A2);
 
         // THEN
         assertThat(principal, instanceOf(GenericPrincipal.class));
@@ -99,15 +100,15 @@ public class TestJNDIRealm {
     @Test
     public void testAuthenticateWithUserPasswordAndCredentialHandler() throws 
Exception {
         // GIVEN
-        JNDIRealm realm = buildRealm(ha1());
+        JNDIRealm realm = buildRealm(digestA1());
         realm.setCredentialHandler(buildCredentialHandler());
         realm.setUserPassword(USER_PASSWORD_ATTR);
 
         // WHEN
         String expectedResponse =
-                HexUtils.toHexString(md5Helper.digest((ha1() + ":" + NONCE + 
":" + HA2).getBytes()));
+                HexUtils.toHexString(md5Helper.digest((digestA1() + ":" + 
NONCE + ":" + DIGEST_A2).getBytes()));
         Principal principal =
-                realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, HA2);
+                realm.authenticate(USER, expectedResponse, NONCE, null, null, 
null, REALM, DIGEST_A2);
 
         // THEN
         assertThat(principal, instanceOf(GenericPrincipal.class));
@@ -192,7 +193,7 @@ public class TestJNDIRealm {
         return dirContext;
     }
 
-    private String ha1() {
+    private String digestA1() {
         String a1 = USER + ":" + REALM + ":" + PASSWORD;
         return HexUtils.toHexString(md5Helper.digest(a1.getBytes()));
     }


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

Reply via email to