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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org