Author: markt
Date: Thu Mar 21 13:10:08 2013
New Revision: 1459289
URL: http://svn.apache.org/r1459289
Log:
Switch to Base64 encoder/decoder from Commons Codec
Modified:
tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java
tomcat/trunk/java/org/apache/catalina/authenticator/BasicAuthenticator.java
tomcat/trunk/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java
tomcat/trunk/java/org/apache/tomcat/util/http/fileupload/util/mime/MimeUtility.java
tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java
tomcat/trunk/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java
tomcat/trunk/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java
Modified: tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java Thu Mar
21 13:10:08 2013
@@ -27,9 +27,8 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
-import javax.xml.bind.DatatypeConverter;
-
import org.apache.tomcat.util.buf.B2CConverter;
+import org.apache.tomcat.util.codec.binary.Base64;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
@@ -202,7 +201,7 @@ public abstract class AbstractCatalinaTa
// Set up an authorization header with our credentials
String input = username + ":" + password;
- String output = DatatypeConverter.printBase64Binary(
+ String output = Base64.encodeBase64String(
input.getBytes(B2CConverter.ISO_8859_1));
hconn.setRequestProperty("Authorization",
"Basic " + output);
Modified:
tomcat/trunk/java/org/apache/catalina/authenticator/BasicAuthenticator.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/BasicAuthenticator.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/authenticator/BasicAuthenticator.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/authenticator/BasicAuthenticator.java
Thu Mar 21 13:10:08 2013
@@ -24,7 +24,6 @@ import java.security.Principal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.xml.bind.DatatypeConverter;
import org.apache.catalina.connector.Request;
import org.apache.juli.logging.Log;
@@ -32,6 +31,7 @@ import org.apache.juli.logging.LogFactor
import org.apache.tomcat.util.buf.B2CConverter;
import org.apache.tomcat.util.buf.ByteChunk;
import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.codec.binary.Base64;
@@ -111,10 +111,10 @@ public class BasicAuthenticator
if (authorizationBC.startsWithIgnoreCase("basic ", 0)) {
authorizationBC.setOffset(authorizationBC.getOffset() + 6);
- // Use the StringCache as these will be the same between
- // requests
- String encoded = authorizationBC.toStringInternal();
- byte[] decoded = DatatypeConverter.parseBase64Binary(encoded);
+ byte[] decoded = Base64.decodeBase64(
+ authorizationBC.getBuffer(),
+ authorizationBC.getOffset(),
+ authorizationBC.getLength());
// Get username and password
int colon = -1;
Modified:
tomcat/trunk/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
(original)
+++
tomcat/trunk/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
Thu Mar 21 13:10:08 2013
@@ -27,15 +27,14 @@ import javax.security.auth.Subject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import javax.servlet.http.HttpServletResponse;
-import javax.xml.bind.DatatypeConverter;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Request;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.util.buf.B2CConverter;
import org.apache.tomcat.util.buf.ByteChunk;
import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.codec.binary.Base64;
import org.ietf.jgss.GSSContext;
import org.ietf.jgss.GSSCredential;
import org.ietf.jgss.GSSException;
@@ -188,13 +187,9 @@ public class SpnegoAuthenticator extends
authorizationBC.setOffset(authorizationBC.getOffset() + 10);
- // Create the String directly as this will change on each request and
we
- // don't want to use the StringCache
- String encoded = new String(authorizationBC.getBuffer(),
+ byte[] decoded = Base64.decodeBase64(authorizationBC.getBuffer(),
authorizationBC.getOffset(),
- authorizationBC.getLength(), B2CConverter.ISO_8859_1);
-
- byte[] decoded = DatatypeConverter.parseBase64Binary(encoded);
+ authorizationBC.getLength());
if (decoded.length == 0) {
if (log.isDebugEnabled()) {
@@ -282,7 +277,7 @@ public class SpnegoAuthenticator extends
// Send response token on success and failure
response.setHeader("WWW-Authenticate", "Negotiate "
- + DatatypeConverter.printBase64Binary(outToken));
+ + Base64.encodeBase64String(outToken));
if (principal != null) {
register(request, response, principal, Constants.SPNEGO_METHOD,
Modified: tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java (original)
+++ tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java Thu Mar 21
13:10:08 2013
@@ -50,10 +50,10 @@ import javax.naming.directory.DirContext
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
-import javax.xml.bind.DatatypeConverter;
import org.apache.catalina.LifecycleException;
import org.apache.tomcat.util.buf.B2CConverter;
+import org.apache.tomcat.util.codec.binary.Base64;
import org.ietf.jgss.GSSCredential;
/**
@@ -1553,8 +1553,9 @@ public class JNDIRealm extends RealmBase
password = password.substring(5);
md.reset();
md.update(credentials.getBytes(B2CConverter.ISO_8859_1));
+ byte[] decoded = Base64.decodeBase64(md.digest());
String digestedPassword =
- DatatypeConverter.printBase64Binary(md.digest());
+ new String(decoded, B2CConverter.ISO_8859_1);
validated = password.equals(digestedPassword);
}
} else if (password.startsWith("{SSHA}")) {
@@ -1567,17 +1568,15 @@ public class JNDIRealm extends RealmBase
md.update(credentials.getBytes(B2CConverter.ISO_8859_1));
// Decode stored password.
- byte[] decoded =
- DatatypeConverter.parseBase64Binary(password);
+ byte[] decoded = Base64.decodeBase64(password);
// Split decoded password into hash and salt.
final int saltpos = 20;
byte[] hash = new byte[saltpos];
System.arraycopy(decoded, 0, hash, 0, saltpos);
- byte[] salt = new byte[decoded.length - saltpos];
- System.arraycopy(decoded, saltpos, salt, 0, salt.length);
- md.update(salt);
+ md.update(decoded, saltpos, decoded.length - saltpos);
+
byte[] dp = md.digest();
validated = Arrays.equals(dp, hash);
Modified:
tomcat/trunk/java/org/apache/tomcat/util/http/fileupload/util/mime/MimeUtility.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/fileupload/util/mime/MimeUtility.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/util/http/fileupload/util/mime/MimeUtility.java
(original)
+++
tomcat/trunk/java/org/apache/tomcat/util/http/fileupload/util/mime/MimeUtility.java
Thu Mar 21 13:10:08 2013
@@ -23,7 +23,7 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
-import javax.xml.bind.DatatypeConverter;
+import org.apache.tomcat.util.codec.binary.Base64;
/**
* Utility class to decode MIME texts.
@@ -244,7 +244,7 @@ public final class MimeUtility {
byte[] decodedData;
// Base64 encoded?
if (encoding.equals(BASE64_ENCODING_MARKER)) {
- decodedData = DatatypeConverter.parseBase64Binary(encodedText);
+ decodedData = Base64.decodeBase64(encodedText);
} else if (encoding.equals(QUOTEDPRINTABLE_ENCODING_MARKER)) { //
maybe quoted printable.
byte[] encodedData = encodedText.getBytes(US_ASCII_CHARSET);
QuotedPrintableDecoder.decode(encodedData, out);
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Thu
Mar 21 13:10:08 2013
@@ -46,10 +46,10 @@ import javax.websocket.Extension;
import javax.websocket.HandshakeResponse;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
-import javax.xml.bind.DatatypeConverter;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.codec.binary.Base64;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.websocket.pojo.PojoEndpointClient;
@@ -345,7 +345,7 @@ public class WsWebSocketContainer
private String generateWsKeyValue() {
byte[] keyBytes = new byte[16];
random.nextBytes(keyBytes);
- return DatatypeConverter.printBase64Binary(keyBytes);
+ return Base64.encodeBase64String(keyBytes);
}
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java Thu Mar
21 13:10:08 2013
@@ -37,8 +37,8 @@ import javax.servlet.http.HttpServletRes
import javax.websocket.Endpoint;
import javax.websocket.Extension;
import javax.websocket.server.ServerEndpointConfig;
-import javax.xml.bind.DatatypeConverter;
+import org.apache.tomcat.util.codec.binary.Base64;
import org.apache.tomcat.websocket.Constants;
import org.apache.tomcat.websocket.WsHandshakeResponse;
import org.apache.tomcat.websocket.pojo.PojoEndpointServer;
@@ -211,7 +211,7 @@ public class WsServlet extends HttpServl
}
sha1Helper.reset();
sha1Helper.update(key.getBytes(ISO_8859_1));
- String result =
DatatypeConverter.printBase64Binary(sha1Helper.digest(WS_ACCEPT));
+ String result =
Base64.encodeBase64String(sha1Helper.digest(WS_ACCEPT));
sha1Helpers.add(sha1Helper);
return result;
}
Modified:
tomcat/trunk/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
---
tomcat/trunk/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java
(original)
+++
tomcat/trunk/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java
Thu Mar 21 13:10:08 2013
@@ -22,7 +22,6 @@ import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
-import javax.xml.bind.DatatypeConverter;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -37,7 +36,9 @@ import org.apache.catalina.session.Manag
import org.apache.catalina.startup.TesterServlet;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.util.buf.B2CConverter;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.codec.binary.Base64;
/**
* Test BasicAuthenticator and NonLoginAuthenticator when a
@@ -609,9 +610,9 @@ public class TestNonLoginAndBasicAuthent
username = aUsername;
password = aPassword;
String userCredentials = username + ":" + password;
- byte[] credentialsBytes =
ByteChunk.convertToBytes(userCredentials);
- String base64auth =
- DatatypeConverter.printBase64Binary(credentialsBytes);
+ byte[] credentialsBytes =
+ userCredentials.getBytes(B2CConverter.ISO_8859_1);
+ String base64auth = Base64.encodeBase64String(credentialsBytes);
credentials= method + " " + base64auth;
}
Modified:
tomcat/trunk/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java?rev=1459289&r1=1459288&r2=1459289&view=diff
==============================================================================
---
tomcat/trunk/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java
(original)
+++
tomcat/trunk/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java
Thu Mar 21 13:10:08 2013
@@ -21,8 +21,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.xml.bind.DatatypeConverter;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -36,7 +34,9 @@ import org.apache.catalina.deploy.Securi
import org.apache.catalina.startup.TesterServlet;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.util.buf.B2CConverter;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.codec.binary.Base64;
/**
* Test BasicAuthenticator and NonLoginAuthenticator when a
@@ -233,11 +233,11 @@ public class TestSSOnonLoginAndBasicAuth
return;
}
- // the second access attempt should be sucessful
+ // the second access attempt should be successful
String credentials = user + ":" + pwd;
- byte[] credentialsBytes = ByteChunk.convertToBytes(credentials);
- String base64auth =
- DatatypeConverter.printBase64Binary(credentialsBytes);
+
+ String base64auth = Base64.encodeBase64String(
+ credentials.getBytes(B2CConverter.ISO_8859_1));
String authLine = "Basic " + base64auth;
List<String> auth = new ArrayList<>();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]