This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new 149aa95a01 Rename digests to remove reference to specific algorithm
149aa95a01 is described below
commit 149aa95a016d84e260a4739aa29ee92eda72e7b2
Author: Mark Thomas <[email protected]>
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 8003ba1d2f..1d6b35839b 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 bb2504a9df..74ffdbee67 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 023c4d0d98..c1b6b863a6 100644
--- a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
+++ b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
@@ -246,7 +246,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
@@ -257,7 +257,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 {
@@ -269,7 +269,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()));
@@ -280,7 +280,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 6fdb36dfad..6a4cf5710c 100644
--- a/java/org/apache/catalina/realm/JAASRealm.java
+++ b/java/org/apache/catalina/realm/JAASRealm.java
@@ -315,9 +315,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 d9b238f06b..7f8cd95a33 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 ccb833fd0c..28d44e25d2 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 377929996d..c9ead2ca0b 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 d30fa89108..c5006b5317 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 fb3b42db98..0760c0ed30 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: [email protected]
For additional commands, e-mail: [email protected]