You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2014/06/05 21:21:30 UTC
svn commit: r1600731 - in /jspwiki/trunk/jspwiki-war/src:
main/java/org/apache/catalina/ main/java/org/apache/wiki/auth/user/
main/java/org/apache/wiki/util/ test/java/org/apache/wiki/util/
Author: juanpablo
Date: Thu Jun 5 19:21:29 2014
New Revision: 1600731
URL: http://svn.apache.org/r1600731
Log:
Applied Ichiro's patch, which fixes JSPWIKI-844 - Replace org.apache.catalina dependency - thanks!
Added:
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/util/ByteUtils.java
jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/ByteUtilsTest.java
Removed:
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/catalina/
Modified:
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/auth/user/AbstractUserDatabase.java
jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java
Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/auth/user/AbstractUserDatabase.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/auth/user/AbstractUserDatabase.java?rev=1600731&r1=1600730&r2=1600731&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/auth/user/AbstractUserDatabase.java (original)
+++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/auth/user/AbstractUserDatabase.java Thu Jun 5 19:21:29 2014
@@ -18,19 +18,21 @@
*/
package org.apache.wiki.auth.user;
-import java.io.*;
+import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Principal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Properties;
+import java.util.UUID;
-import org.apache.catalina.util.HexUtils;
import org.apache.log4j.Logger;
import org.apache.wiki.WikiEngine;
import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
import org.apache.wiki.auth.NoSuchPrincipalException;
import org.apache.wiki.auth.WikiPrincipal;
import org.apache.wiki.auth.WikiSecurityException;
+import org.apache.wiki.util.ByteUtils;
import org.apache.wiki.util.CryptoUtil;
/**
@@ -54,7 +56,6 @@ public abstract class AbstractUserDataba
* @deprecated there is no need to call this method because the save, rename and
* delete methods contain their own commit logic
*/
- @SuppressWarnings("deprecation")
public synchronized void commit() throws WikiSecurityException
{ }
@@ -213,7 +214,6 @@ public abstract class AbstractUserDataba
* @param password the user's password (obtained from user input, e.g., a web form)
* @return <code>true</code> if the supplied user password matches the
* stored password
- * @throws NoSuchAlgorithmException
* @see org.apache.wiki.auth.user.UserDatabase#validatePassword(java.lang.String,
* java.lang.String)
*/
@@ -341,7 +341,7 @@ public abstract class AbstractUserDataba
MessageDigest md = MessageDigest.getInstance( "SHA" );
md.update( text.getBytes("UTF-8") );
byte[] digestedBytes = md.digest();
- hash = HexUtils.convert( digestedBytes );
+ hash = ByteUtils.bytes2hex( digestedBytes );
}
catch( NoSuchAlgorithmException e )
{
Added: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/util/ByteUtils.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/util/ByteUtils.java?rev=1600731&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/util/ByteUtils.java (added)
+++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/util/ByteUtils.java Thu Jun 5 19:21:29 2014
@@ -0,0 +1,94 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+package org.apache.wiki.util;
+
+/**
+ * A collection of static byte utility methods.
+ *
+ * @author Ichiro Furusato
+ */
+public class ByteUtils
+{
+ private static final char[] hexArray = "0123456789abcdef".toCharArray();
+
+
+ /**
+ * byte[] array to hex conversion. Note that this provides
+ * no delimiters; the bytes are simply concatenated.
+ */
+ public static String bytes2hex( byte[] bytes )
+ {
+ char[] ca = new char[bytes.length * 2];
+ for ( int i = 0; i < bytes.length; i++ ) {
+ int v = bytes[i] & 0xff;
+ ca[i * 2] = hexArray[v >>> 4];
+ ca[i * 2 + 1] = hexArray[v & 0x0f];
+ }
+ return new String(ca);
+ }
+
+
+ /**
+ * byte to hex conversion.
+ */
+ public static String byte2hex( byte b )
+ {
+ return Integer.toHexString(b & 0xff);
+ }
+
+
+ /**
+ * Parses a hexadecimal string into its corresponding bytes.
+ */
+ public static byte[] parseHexBinary( String hex )
+ {
+ final int len = hex.length();
+ // e.g., "111" is not a valid hex encoding.
+ if( len%2 != 0 ) {
+ throw new IllegalArgumentException("hexBinary needs to be even-length: "+hex);
+ }
+ byte[] out = new byte[len/2];
+ for( int i = 0; i < len; i+=2 ) {
+ int h = hexToBin(hex.charAt(i));
+ int l = hexToBin(hex.charAt(i+1));
+ if ( h==-1 || l==-1 ) {
+ throw new IllegalArgumentException("contains illegal character for hexBinary: "+hex);
+ }
+ out[i/2] = (byte)(h*16+l);
+ }
+ return out;
+ }
+
+
+ /**
+ * Converts a single hex character into its integer equivalent.
+ */
+ public static int hexToBin( char c )
+ {
+ if ( '0'<=c && c<='9' ) return c-'0';
+ if ( 'A'<=c && c<='F' ) return c-'A'+10;
+ if ( 'a'<=c && c<='f' ) return c-'a'+10;
+ return -1;
+ }
+
+
+ private ByteUtils() {}
+
+}
Modified: jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java?rev=1600731&r1=1600730&r2=1600731&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java (original)
+++ jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/AllTests.java Thu Jun 5 19:21:29 2014
@@ -18,12 +18,12 @@
*/
package org.apache.wiki.util;
-import org.apache.wiki.PropertyReaderTest;
-
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import org.apache.wiki.PropertyReaderTest;
+
public class AllTests extends TestCase {
@@ -34,6 +34,7 @@ public class AllTests extends TestCase {
public static Test suite() {
TestSuite suite = new TestSuite("Utility suite tests");
+ suite.addTest( ByteUtilsTest.suite() );
suite.addTest( ClassUtilTest.suite() );
suite.addTest( CommentedPropertiesTest.suite() );
suite.addTest( CryptoUtilTest.suite() );
Added: jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/ByteUtilsTest.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/ByteUtilsTest.java?rev=1600731&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/ByteUtilsTest.java (added)
+++ jspwiki/trunk/jspwiki-war/src/test/java/org/apache/wiki/util/ByteUtilsTest.java Thu Jun 5 19:21:29 2014
@@ -0,0 +1,60 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+package org.apache.wiki.util;
+
+import java.util.Arrays;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+
+public class ByteUtilsTest extends TestCase
+{
+ final byte[] bytes = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 63, 127 };
+ final String EXPECTED_HEX_STRING = "000102030405060708090a0b0c0d0e0f3f7f";
+
+ public void testByteUtilsConvertBytes()
+ {
+ String hex = ByteUtils.bytes2hex(bytes);
+ assertEquals(EXPECTED_HEX_STRING, hex);
+ }
+
+ public void testConvertHexToBytes()
+ {
+ byte[] reconstructedBytes = ByteUtils.parseHexBinary(EXPECTED_HEX_STRING);
+ assertEquals(bytes.length,reconstructedBytes.length);
+ assertTrue(Arrays.equals(bytes,reconstructedBytes));
+ }
+
+ public void testByteUtilsConvertByte()
+ {
+ assertEquals("0", ByteUtils.byte2hex((byte)0));
+ assertEquals("f", ByteUtils.byte2hex((byte)15));
+ assertEquals("10", ByteUtils.byte2hex((byte)16));
+ assertEquals("7f", ByteUtils.byte2hex((byte)127));
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite( ByteUtilsTest.class );
+ }
+
+}