You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/01/13 23:34:47 UTC

[1/3] directory-kerberos git commit: Working on fixing des etypes

Repository: directory-kerberos
Updated Branches:
  refs/heads/fixdes [created] 33cde4047


Working on fixing des etypes


Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/3af379ba
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/3af379ba
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/3af379ba

Branch: refs/heads/fixdes
Commit: 3af379ba969fe795d7e18be3fac81e3525a55718
Parents: 85b27a1
Author: Drankye <dr...@gmail.com>
Authored: Tue Jan 13 06:56:22 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Tue Jan 13 06:56:22 2015 +0800

----------------------------------------------------------------------
 .../kerberos/kerb/crypto/EncryptionHandler.java |  6 ++--
 .../kerberos/kerb/crypto/key/DesKeyMaker.java   | 33 +++-----------------
 .../kerberos/kerb/crypto/String2keyTest.java    |  2 +-
 3 files changed, 9 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/3af379ba/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/EncryptionHandler.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/EncryptionHandler.java b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/EncryptionHandler.java
index c269b36..6bc2de1 100644
--- a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/EncryptionHandler.java
+++ b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/EncryptionHandler.java
@@ -33,16 +33,16 @@ public class EncryptionHandler {
          */
         switch (eType) {
             case DES_CBC_CRC:
-                //encHandler = new DesCbcCrcEnc();
+                encHandler = new DesCbcCrcEnc();
                 break;
 
             case DES_CBC_MD5:
             case DES:
-                //encHandler = new DesCbcMd5Enc();
+                encHandler = new DesCbcMd5Enc();
                 break;
 
             case DES_CBC_MD4:
-                //encHandler = new DesCbcMd4Enc();
+                encHandler = new DesCbcMd4Enc();
                 break;
 
             case DES3_CBC_SHA1:

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/3af379ba/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
index 4a8dc56..0b2fc04 100644
--- a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
+++ b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
@@ -103,32 +103,10 @@ public class DesKeyMaker extends AbstractKeyMaker {
             throw new KrbException("Invalid random bits, not of correct bytes size");
         }
 
-        /**
-         * Ref. k5_rand2key_des in random_to_key.c in MIT krb5
-         * Take the seven bytes, move them around into the top 7 bits of the
-         * 8 key bytes, then compute the parity bits.  Do this three times.
-         */
-        byte[] key = new byte[encProvider().keySize()];
-        int tmp;
-        System.arraycopy(randomBits, 0, key, 0, 7);
-
-        key[7] = (byte) (((key[0] & 1) << 1) |
-                ((key[1] & 1) << 2) |
-                ((key[2] & 1) << 3) |
-                ((key[3] & 1) << 4) |
-                ((key[4] & 1) << 5) |
-                ((key[5] & 1) << 6) |
-                ((key[6] & 1) << 7));
-
-        for (int i = 0; i < 8; i++) {
-            tmp = key[i] & 0xfe;
-            tmp |= (Integer.bitCount(tmp) & 1) ^ 1;
-            key[i] = (byte) tmp;
-        }
-
-        Des.fixKey(key, 0, 8);
+        byte[] keyBytes = addParityBits(randomBits);
+        keyCorrection(keyBytes);
 
-        return key;
+        return keyBytes;
     }
 
     // Processing an 8bytesblock
@@ -214,6 +192,7 @@ public class DesKeyMaker extends AbstractKeyMaker {
         for (int i = 0; i < 8; i++) {
             bits56[i] <<= 1;
         }
+        
         addParity(bits56);
 
         return bits56;
@@ -221,9 +200,7 @@ public class DesKeyMaker extends AbstractKeyMaker {
 
     private static void keyCorrection(byte[] key) {
         addParity(key);
-        if (Des.isWeakKey(key, 0, key.length)) {
-            Des.fixKey(key, 0, key.length);
-        }
+        Des.fixKey(key, 0, key.length);
     }
 
     private static int smask(int step) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/3af379ba/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java b/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java
index a18763e..3b84e49 100644
--- a/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java
+++ b/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java
@@ -425,7 +425,7 @@ public class String2keyTest {
             System.err.println("outKey:" + TestUtil.bytesToHex(outkey.getKeyData()));
             System.err.println("answer:" + tc.answer);
             // Will un-comment below when passed all the tests.
-            //return false;
+            return false;
         }
         return true;
     }


[3/3] directory-kerberos git commit: Added test for the des key maker for intermediate steps

Posted by dr...@apache.org.
Added test for the des key maker for intermediate steps


Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/33cde404
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/33cde404
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/33cde404

Branch: refs/heads/fixdes
Commit: 33cde40470beafb60aa264283122998c11965af3
Parents: 0ce18e3
Author: Drankye <dr...@gmail.com>
Authored: Wed Jan 14 06:34:04 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Wed Jan 14 06:34:04 2015 +0800

----------------------------------------------------------------------
 .../kerb/crypto/key/AbstractKeyMaker.java       | 17 ++++--
 .../kerberos/kerb/crypto/key/Des3KeyMaker.java  | 13 +----
 .../kerberos/kerb/crypto/key/DesKeyMaker.java   | 47 ++++++++++++----
 .../kerberos/kerb/crypto/DesKeyMakerTest.java   | 59 ++++++++++++++++++++
 4 files changed, 110 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/33cde404/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/AbstractKeyMaker.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/AbstractKeyMaker.java b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/AbstractKeyMaker.java
index 1738788..69b5576 100644
--- a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/AbstractKeyMaker.java
+++ b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/AbstractKeyMaker.java
@@ -44,12 +44,19 @@ public abstract class AbstractKeyMaker implements KeyMaker {
         return new byte[0];
     }
 
-    protected static char[] makePasswdSalt(String password, String salt) {
-        char[] result = new char[password.length() + salt.length()];
-        System.arraycopy(password.toCharArray(), 0, result, 0, password.length());
-        System.arraycopy(salt.toCharArray(), 0, result, password.length(), salt.length());
+    /**
+     * Visible for test
+     */
+    public static byte[] makePasswdSalt(String password, String salt) {
+        char[] chars = new char[password.length() + salt.length()];
+        System.arraycopy(password.toCharArray(), 0, chars, 0, password.length());
+        System.arraycopy(salt.toCharArray(), 0, chars, password.length(), salt.length());
 
-        return result;
+        try {
+            return new String(chars).getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException("Character decoding failed", e);
+        }
     }
 
     protected static int getIterCount(byte[] param, int defCount) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/33cde404/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/Des3KeyMaker.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/Des3KeyMaker.java b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/Des3KeyMaker.java
index f8df6a5..9b98a5e 100644
--- a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/Des3KeyMaker.java
+++ b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/Des3KeyMaker.java
@@ -24,8 +24,6 @@ import org.apache.kerberos.kerb.crypto.Des;
 import org.apache.kerberos.kerb.crypto.Nfold;
 import org.apache.kerberos.kerb.crypto.enc.EncryptProvider;
 
-import java.io.UnsupportedEncodingException;
-
 public class Des3KeyMaker extends DkKeyMaker {
 
     public Des3KeyMaker(EncryptProvider encProvider) {
@@ -34,15 +32,10 @@ public class Des3KeyMaker extends DkKeyMaker {
 
     @Override
     public byte[] str2key(String string, String salt, byte[] param) throws KrbException {
-        char[] passwdSalt = makePasswdSalt(string, salt);
+        byte[] utf8Bytes = makePasswdSalt(string, salt);
         int keyInputSize = encProvider().keyInputSize();
-        try {
-            byte[] utf8Bytes = new String(passwdSalt).getBytes("UTF-8");
-            byte[] tmpKey = random2Key(Nfold.nfold(utf8Bytes, keyInputSize));
-            return dk(tmpKey, KERBEROS_CONSTANT);
-        } catch (UnsupportedEncodingException e) {
-            throw new KrbException("str2key failed", e);
-        }
+        byte[] tmpKey = random2Key(Nfold.nfold(utf8Bytes, keyInputSize));
+        return dk(tmpKey, KERBEROS_CONSTANT);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/33cde404/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
index 4ad6d98..5feab96 100644
--- a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
+++ b/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
@@ -52,8 +52,7 @@ public class DesKeyMaker extends AbstractKeyMaker {
             throw new KrbException(error);
         }
 
-        char[] passwdSalt = makePasswdSalt(string, salt);
-        byte[] key = toKey(passwdSalt);
+        byte[] key = toKey(string, salt);
         return key;
     }
 
@@ -74,15 +73,30 @@ public class DesKeyMaker extends AbstractKeyMaker {
        return(key);
      }
      */
-    private byte[] toKey(char[] passwdChars) throws KrbException {
-        int keySize = encProvider().keySize();
+    private byte[] toKey(String string, String salt) throws KrbException {
+        byte[] bytes = makePasswdSalt(string, salt);
+        // padded with zero-valued octets to a multiple of eight octets.
+        byte[] paddedBytes = BytesUtil.padding(bytes, 8);
 
-        byte[] bytes = (new String(passwdChars)).getBytes();
+        byte[] fanFoldedKey = fanFold(string, salt, paddedBytes);
 
-        // padded with zero-valued octets to a multiple of eight octets.
-        byte[] paddedBytes = BytesUtil.padding(bytes, keySize);
+        byte[] intermediateKey = intermediateKey(fanFoldedKey);
+
+        byte[] key = desEncryptedKey(intermediateKey, paddedBytes);
+        return key;
+    }
+
+    /**
+     * Visible for test
+     */
+    public static byte[] fanFold(String string, String salt, byte[] paddedBytes) {
+        if (paddedBytes == null) {
+            byte[] bytes = makePasswdSalt(string, salt);
+            // padded with zero-valued octets to a multiple of eight octets.
+            paddedBytes = BytesUtil.padding(bytes, 8);
+        }
 
-        int blocksOfbytes8 = paddedBytes.length / keySize;
+        int blocksOfbytes8 = paddedBytes.length / 8;
         boolean odd = true;
         byte[] bits56 = new byte[8];
         byte[] tempString = new byte[8];
@@ -92,16 +106,27 @@ public class DesKeyMaker extends AbstractKeyMaker {
             if (odd) {
                 reverse(bits56);
             }
-            odd = ! odd;
+            odd = !odd;
             BytesUtil.xor(bits56, 0, tempString);
         }
 
-        byte[] keyBytes = addParityBits(tempString);
+        return tempString;
+    }
+
+    /**
+     * Visible for test
+     */
+    public static byte[] intermediateKey(byte[] fanFoldedKey) {
+        byte[] keyBytes = addParityBits(fanFoldedKey);
         keyCorrection(keyBytes);
 
+        return keyBytes;
+    }
+
+    private byte[] desEncryptedKey(byte[] intermediateKey, byte[] originalBytes) throws KrbException {
         byte[] resultKey = null;
         if (encProvider().supportCbcMac()) {
-            resultKey = encProvider().cbcMac(keyBytes, keyBytes, paddedBytes);
+            resultKey = encProvider().cbcMac(intermediateKey, intermediateKey, originalBytes);
         } else {
             throw new KrbException("cbcMac should be supported by the provider: "
                     + encProvider().getClass());

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/33cde404/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/DesKeyMakerTest.java
----------------------------------------------------------------------
diff --git a/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/DesKeyMakerTest.java b/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/DesKeyMakerTest.java
new file mode 100644
index 0000000..3027e6c
--- /dev/null
+++ b/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/DesKeyMakerTest.java
@@ -0,0 +1,59 @@
+package org.apache.kerberos.kerb.crypto;
+
+import org.apache.kerberos.kerb.crypto.key.DesKeyMaker;
+import org.haox.util.HexUtil;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class DesKeyMakerTest {
+
+    /**
+     * The class used to store the test values
+     */
+    private static class TestCase {
+        String salt;
+        String passwd;
+        String passwdSaltBytes;
+        String fanFoldedKey;
+        String intermediateKey;
+        String finalKey;
+
+        private TestCase(String salt, String passwd, String passwdSaltBytes,
+                         String fanFoldedKey, String intermediateKey, String finalKey) {
+            this.salt = salt;
+            this.passwd = passwd;
+            this.passwdSaltBytes = passwdSaltBytes;
+            this.fanFoldedKey = fanFoldedKey;
+            this.intermediateKey = intermediateKey;
+            this.finalKey = finalKey;
+        }
+    }
+
+    /**
+     * Actually do the test
+     */
+    private void test(TestCase tc) {
+        byte[] expectedValue = HexUtil.hex2bytes(tc.passwdSaltBytes);
+        byte[] value = DesKeyMaker.makePasswdSalt(tc.passwd, tc.salt);
+        Assert.assertArrayEquals("PasswdSalt bytes", expectedValue, value);
+
+        expectedValue = HexUtil.hex2bytes(tc.fanFoldedKey);
+        value = DesKeyMaker.fanFold(tc.salt, tc.passwd, null);
+        Assert.assertArrayEquals("FanFold result", expectedValue, value);
+
+        expectedValue = HexUtil.hex2bytes(tc.intermediateKey);
+        value = DesKeyMaker.intermediateKey(value);
+        Assert.assertArrayEquals("IntermediateKey result", expectedValue, value);
+
+        // finalKey check ignored here and it's done in String2keyTest.
+    }
+
+    @Test
+    public void testCase1() {
+        TestCase tc = new TestCase("ATHENA.MIT.EDUraeburn",
+                "password", "70617373776f7264415448454e412e4d49542e4544557261656275726e",
+                "c01e38688ac86c2e", "c11f38688ac86d2f", "cbc22fae235298e3");
+
+        test(tc);
+    }
+}


[2/3] directory-kerberos git commit: Merge branch 'master' into fixdes

Posted by dr...@apache.org.
Merge branch 'master' into fixdes


Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/0ce18e3a
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/0ce18e3a
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/0ce18e3a

Branch: refs/heads/fixdes
Commit: 0ce18e3a426e9617742aee6d7fdba76a6faf58a9
Parents: 3af379b 513a874
Author: Drankye <dr...@gmail.com>
Authored: Wed Jan 14 06:29:58 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Wed Jan 14 06:29:58 2015 +0800

----------------------------------------------------------------------
 3rdparty/not-yet-commons-ssl/pom.xml            | 149 ++++++++++---------
 3rdparty/pom.xml                                |  53 ++++---
 README.md                                       |  17 +++
 benchmark/pom.xml                               |  13 ++
 .../kerberos/benchmark/KrbCodecPerfTest.java    |  19 +++
 contrib/haox-asn1/README.md                     |  17 +++
 contrib/haox-asn1/pom.xml                       |  13 ++
 .../java/org/apache/haox/asn1/Asn1Dump.java     |  19 +++
 .../java/org/apache/haox/asn1/Asn1Factory.java  |  19 +++
 .../org/apache/haox/asn1/Asn1InputBuffer.java   |  19 +++
 .../org/apache/haox/asn1/Asn1OutputBuffer.java  |  19 +++
 .../org/apache/haox/asn1/EncodingOption.java    |  19 +++
 .../org/apache/haox/asn1/LimitedByteBuffer.java |  19 +++
 .../java/org/apache/haox/asn1/TagClass.java     |  19 +++
 .../org/apache/haox/asn1/TaggingOption.java     |  19 +++
 .../java/org/apache/haox/asn1/UniversalTag.java |  19 +++
 .../apache/haox/asn1/type/AbstractAsn1Type.java |  19 +++
 .../java/org/apache/haox/asn1/type/Asn1Any.java |  19 +++
 .../apache/haox/asn1/type/Asn1BigInteger.java   |  19 +++
 .../apache/haox/asn1/type/Asn1BitString.java    |  19 +++
 .../apache/haox/asn1/type/Asn1BmpString.java    |  19 +++
 .../org/apache/haox/asn1/type/Asn1Boolean.java  |  19 +++
 .../org/apache/haox/asn1/type/Asn1Choice.java   |  19 +++
 .../apache/haox/asn1/type/Asn1Collection.java   |  19 +++
 .../apache/haox/asn1/type/Asn1CollectionOf.java |  19 +++
 .../haox/asn1/type/Asn1CollectionType.java      |  19 +++
 .../apache/haox/asn1/type/Asn1FieldInfo.java    |  19 +++
 .../haox/asn1/type/Asn1GeneralString.java       |  19 +++
 .../haox/asn1/type/Asn1GeneralizedTime.java     |  19 +++
 .../apache/haox/asn1/type/Asn1IA5String.java    |  19 +++
 .../org/apache/haox/asn1/type/Asn1Integer.java  |  19 +++
 .../org/apache/haox/asn1/type/Asn1Item.java     |  19 +++
 .../org/apache/haox/asn1/type/Asn1Null.java     |  19 +++
 .../haox/asn1/type/Asn1NumericsString.java      |  19 +++
 .../haox/asn1/type/Asn1ObjectIdentifier.java    |  19 +++
 .../apache/haox/asn1/type/Asn1OctetString.java  |  19 +++
 .../haox/asn1/type/Asn1PrintableString.java     |  19 +++
 .../org/apache/haox/asn1/type/Asn1Sequence.java |  19 +++
 .../apache/haox/asn1/type/Asn1SequenceOf.java   |  19 +++
 .../apache/haox/asn1/type/Asn1SequenceType.java |  19 +++
 .../java/org/apache/haox/asn1/type/Asn1Set.java |  19 +++
 .../org/apache/haox/asn1/type/Asn1SetOf.java    |  19 +++
 .../org/apache/haox/asn1/type/Asn1SetType.java  |  19 +++
 .../org/apache/haox/asn1/type/Asn1Simple.java   |  19 +++
 .../org/apache/haox/asn1/type/Asn1String.java   |  19 +++
 .../apache/haox/asn1/type/Asn1T61String.java    |  19 +++
 .../haox/asn1/type/Asn1T61Utf8String.java       |  19 +++
 .../org/apache/haox/asn1/type/Asn1Tagging.java  |  19 +++
 .../org/apache/haox/asn1/type/Asn1Type.java     |  19 +++
 .../haox/asn1/type/Asn1UniversalString.java     |  19 +++
 .../org/apache/haox/asn1/type/Asn1UtcTime.java  |  19 +++
 .../apache/haox/asn1/type/Asn1Utf8String.java   |  19 +++
 .../haox/asn1/type/Asn1VisibleString.java       |  19 +++
 .../haox/asn1/type/TaggingCollection.java       |  19 +++
 .../apache/haox/asn1/type/TaggingSequence.java  |  19 +++
 .../org/apache/haox/asn1/type/TaggingSet.java   |  19 +++
 .../org/apache/haox/asn1/PersonnelRecord.java   |  19 +++
 .../org/apache/haox/asn1/TestAsn1Boolean.java   |  19 +++
 .../apache/haox/asn1/TestAsn1Collection.java    |  19 +++
 .../org/apache/haox/asn1/TestAsn1Input.java     |  19 +++
 .../org/apache/haox/asn1/TestAsn1Integer.java   |  19 +++
 .../haox/asn1/TestAsn1ObjectIdentifier.java     |  19 +++
 .../org/apache/haox/asn1/TestAsn1UtcTime.java   |  19 +++
 .../java/org/apache/haox/asn1/TestData.java     |  19 +++
 .../apache/haox/asn1/TestPersonnelRecord.java   |  19 +++
 .../apache/haox/asn1/TestTaggingEncoding.java   |  19 +++
 .../test/java/org/apache/haox/asn1/Util.java    |  19 +++
 contrib/haox-config/pom.xml                     |  13 ++
 .../main/java/org/apache/haox/config/Conf.java  |  19 +++
 .../java/org/apache/haox/config/Config.java     |  19 +++
 .../java/org/apache/haox/config/ConfigImpl.java |  19 +++
 .../java/org/apache/haox/config/ConfigKey.java  |  19 +++
 .../org/apache/haox/config/ConfigLoader.java    |  19 +++
 .../org/apache/haox/config/ConfigObject.java    |  19 +++
 .../org/apache/haox/config/IniConfigLoader.java |  19 +++
 .../apache/haox/config/JsonConfigLoader.java    |  19 +++
 .../org/apache/haox/config/MapConfigLoader.java |  19 +++
 .../haox/config/PropertiesConfigLoader.java     |  19 +++
 .../haox/config/PropertiesFileConfigLoader.java |  19 +++
 .../java/org/apache/haox/config/Resource.java   |  19 +++
 .../org/apache/haox/config/XmlConfigLoader.java |  19 +++
 .../java/org/apache/haox/config/ConfTest.java   |  19 +++
 contrib/haox-event/pom.xml                      |  13 ++
 .../apache/haox/event/AbstractEventHandler.java |  19 +++
 .../event/AbstractInternalEventHandler.java     |  19 +++
 .../apache/haox/event/BufferedEventHandler.java |  19 +++
 .../java/org/apache/haox/event/Dispatcher.java  |  19 +++
 .../main/java/org/apache/haox/event/Event.java  |  19 +++
 .../org/apache/haox/event/EventHandler.java     |  19 +++
 .../java/org/apache/haox/event/EventHub.java    |  19 +++
 .../java/org/apache/haox/event/EventType.java   |  19 +++
 .../java/org/apache/haox/event/EventWaiter.java |  19 +++
 .../apache/haox/event/ExecutedEventHandler.java |  19 +++
 .../apache/haox/event/InternalEventHandler.java |  19 +++
 .../haox/event/LongRunningEventHandler.java     |  19 +++
 .../org/apache/haox/event/WaitEventHandler.java |  19 +++
 .../org/apache/haox/transport/Acceptor.java     |  19 +++
 .../org/apache/haox/transport/BytesUtil.java    | 144 ------------------
 .../org/apache/haox/transport/Connector.java    |  19 +++
 .../apache/haox/transport/MessageHandler.java   |  19 +++
 .../java/org/apache/haox/transport/Network.java |  19 +++
 .../org/apache/haox/transport/Transport.java    |  19 +++
 .../apache/haox/transport/TransportHandler.java |  19 +++
 .../haox/transport/TransportSelector.java       |  19 +++
 .../haox/transport/buffer/BufferPool.java       |  19 +++
 .../haox/transport/buffer/BufferUtil.java       |  19 +++
 .../haox/transport/buffer/RecvBuffer.java       |  19 +++
 .../haox/transport/buffer/TransBuffer.java      |  19 +++
 .../haox/transport/event/AddressEvent.java      |  19 +++
 .../haox/transport/event/MessageEvent.java      |  19 +++
 .../haox/transport/event/TransportEvent.java    |  19 +++
 .../transport/event/TransportEventType.java     |  19 +++
 .../haox/transport/tcp/DecodingCallback.java    |  19 +++
 .../haox/transport/tcp/StreamingDecoder.java    |  19 +++
 .../apache/haox/transport/tcp/TcpAcceptor.java  |  19 +++
 .../haox/transport/tcp/TcpAddressEvent.java     |  19 +++
 .../apache/haox/transport/tcp/TcpConnector.java |  19 +++
 .../apache/haox/transport/tcp/TcpEventType.java |  19 +++
 .../apache/haox/transport/tcp/TcpTransport.java |  19 +++
 .../haox/transport/tcp/TcpTransportHandler.java |  19 +++
 .../apache/haox/transport/udp/UdpAcceptor.java  |  19 +++
 .../haox/transport/udp/UdpAddressEvent.java     |  19 +++
 .../haox/transport/udp/UdpChannelEvent.java     |  19 +++
 .../apache/haox/transport/udp/UdpConnector.java |  19 +++
 .../apache/haox/transport/udp/UdpEventType.java |  19 +++
 .../apache/haox/transport/udp/UdpTransport.java |  19 +++
 .../haox/transport/udp/UdpTransportHandler.java |  19 +++
 .../java/org/apache/haox/event/TestBuffer.java  |  19 +++
 .../haox/event/network/TestNetworkBase.java     |  19 +++
 .../haox/event/network/TestNetworkClient.java   |  19 +++
 .../haox/event/network/TestNetworkServer.java   |  19 +++
 .../org/apache/haox/event/tcp/TestTcpBase.java  |  19 +++
 .../apache/haox/event/tcp/TestTcpClient.java    |  19 +++
 .../apache/haox/event/tcp/TestTcpServer.java    |  19 +++
 .../org/apache/haox/event/udp/TestUdpBase.java  |  19 +++
 .../apache/haox/event/udp/TestUdpClient.java    |  19 +++
 .../apache/haox/event/udp/TestUdpServer.java    |  19 +++
 contrib/haox-pkix/pom.xml                       |  13 ++
 .../src/main/java/org/haox/pki/Pkix.java        |  19 +++
 .../haox-pkix/src/main/resources/extensions.kdc |  18 ++-
 .../src/test/java/org/haox/pki/PkixTest.java    |  19 +++
 contrib/haox-token/pom.xml                      |  13 ++
 .../java/org/haox/token/AuthzDataEntry.java     |  19 +++
 .../src/main/java/org/haox/token/KerbToken.java |  19 +++
 .../main/java/org/haox/token/TokenCache.java    |  19 +++
 .../java/org/haox/token/TokenExtractor.java     |  19 +++
 .../src/main/java/org/haox/token/TokenTool.java |  19 +++
 contrib/haox-util/pom.xml                       |  31 ++++
 .../src/main/java/org/haox/util/HexUtil.java    |  58 ++++++++
 contrib/pom.xml                                 |  14 ++
 haox-kdc/kdc-server/pom.xml                     |  13 ++
 .../kerberos/kdc/server/ApacheKdcServer.java    |  19 +++
 .../org/apache/kerberos/kdc/server/KdcTest.java |  19 +++
 haox-kdc/ldap-identity-backend/pom.xml          |  13 ++
 .../identitybackend/LdapIdentityBackend.java    |  19 +++
 haox-kdc/pom.xml                                |  13 ++
 haox-kdc/tools/pom.xml                          |  13 ++
 .../java/org/apache/kerberos/tool/Kinit.java    |  19 +++
 haox-kerb/kerb-client/pom.xml                   |  13 ++
 .../apache/kerberos/kerb/client/KrbClient.java  |  19 +++
 .../apache/kerberos/kerb/client/KrbConfig.java  |  19 +++
 .../kerberos/kerb/client/KrbConfigKey.java      |  19 +++
 .../apache/kerberos/kerb/client/KrbContext.java |  19 +++
 .../apache/kerberos/kerb/client/KrbHandler.java |  19 +++
 .../apache/kerberos/kerb/client/KrbOption.java  |  19 +++
 .../apache/kerberos/kerb/client/KrbOptions.java |  19 +++
 .../kerb/client/event/KrbClientEvent.java       |  19 +++
 .../kerb/client/event/KrbClientEventType.java   |  19 +++
 .../client/preauth/AbstractPreauthPlugin.java   |  19 +++
 .../kerb/client/preauth/FastContext.java        |  19 +++
 .../kerb/client/preauth/KrbPreauth.java         |  19 +++
 .../kerb/client/preauth/PreauthContext.java     |  19 +++
 .../kerb/client/preauth/PreauthHandle.java      |  19 +++
 .../kerb/client/preauth/PreauthHandler.java     |  19 +++
 .../kerb/client/preauth/UserResponseItem.java   |  19 +++
 .../kerb/client/preauth/UserResponser.java      |  19 +++
 .../client/preauth/builtin/EncTsPreauth.java    |  19 +++
 .../kerb/client/preauth/builtin/TgtPreauth.java |  19 +++
 .../client/preauth/pkinit/PkinitContext.java    |  19 +++
 .../client/preauth/pkinit/PkinitPreauth.java    |  19 +++
 .../preauth/pkinit/PkinitRequestContext.java    |  19 +++
 .../preauth/pkinit/PkinitRequestOpts.java       |  19 +++
 .../kerb/client/preauth/token/TokenContext.java |  19 +++
 .../kerb/client/preauth/token/TokenPreauth.java |  19 +++
 .../preauth/token/TokenRequestContext.java      |  19 +++
 .../kerberos/kerb/client/request/AsRequest.java |  19 +++
 .../kerb/client/request/AsRequestWithCert.java  |  19 +++
 .../client/request/AsRequestWithPasswd.java     |  19 +++
 .../kerb/client/request/AsRequestWithToken.java |  19 +++
 .../kerb/client/request/KdcRequest.java         |  19 +++
 .../kerb/client/request/TgsRequest.java         |  19 +++
 .../kerb-client/src/main/resources/kdc.ldiff    |  18 ++-
 haox-kerb/kerb-common/pom.xml                   |  13 ++
 .../java/org/apache/kerberos/kerb/KrbThrow.java |  19 +++
 .../java/org/apache/kerberos/kerb/Message.java  |  19 +++
 .../org/apache/kerberos/kerb/MessageCode.java   |  19 +++
 .../kerberos/kerb/common/EncryptionUtil.java    |  19 +++
 .../kerberos/kerb/common/KrbConfHelper.java     |  19 +++
 .../kerberos/kerb/common/KrbErrorUtil.java      |  19 +++
 .../kerb/common/KrbStreamingDecoder.java        |  19 +++
 .../apache/kerberos/kerb/common/KrbUtil.java    |  19 +++
 .../apache/kerberos/kerb/preauth/PaFlag.java    |  19 +++
 .../apache/kerberos/kerb/preauth/PaFlags.java   |  19 +++
 .../kerb/preauth/PluginRequestContext.java      |  19 +++
 .../kerb/preauth/PreauthPluginMeta.java         |  19 +++
 .../kerb/preauth/builtin/EncTsPreauthMeta.java  |  19 +++
 .../kerb/preauth/builtin/TgtPreauthMeta.java    |  19 +++
 .../kerb/preauth/pkinit/IdentityOpts.java       |  19 +++
 .../kerb/preauth/pkinit/IdentityType.java       |  19 +++
 .../kerb/preauth/pkinit/PkinitIdenity.java      |  19 +++
 .../kerb/preauth/pkinit/PkinitPreauthMeta.java  |  19 +++
 .../kerb/preauth/pkinit/PluginOpts.java         |  19 +++
 .../kerb/preauth/token/TokenPreauthMeta.java    |  19 +++
 haox-kerb/kerb-core-test/pom.xml                |  13 ++
 .../src/main/resources/exceptions.properties    |  16 ++
 .../kerb/codec/kerberos/AuthzDataUtil.java      |  19 +++
 .../kerb/codec/kerberos/KerberosApRequest.java  |  19 +++
 .../kerb/codec/kerberos/KerberosConstants.java  |  19 +++
 .../codec/kerberos/KerberosCredentials.java     |  19 +++
 .../kerb/codec/kerberos/KerberosTicket.java     |  19 +++
 .../kerb/codec/kerberos/KerberosToken.java      |  19 +++
 .../org/apache/kerberos/kerb/codec/pac/Pac.java |  19 +++
 .../kerberos/kerb/codec/pac/PacConstants.java   |  19 +++
 .../kerb/codec/pac/PacCredentialType.java       |  19 +++
 .../kerb/codec/pac/PacDataInputStream.java      |  19 +++
 .../kerberos/kerb/codec/pac/PacGroup.java       |  19 +++
 .../kerberos/kerb/codec/pac/PacLogonInfo.java   |  19 +++
 .../apache/kerberos/kerb/codec/pac/PacSid.java  |  19 +++
 .../kerb/codec/pac/PacSidAttributes.java        |  19 +++
 .../kerberos/kerb/codec/pac/PacSignature.java   |  19 +++
 .../kerb/codec/pac/PacUnicodeString.java        |  19 +++
 .../kerb/codec/spnego/SpnegoConstants.java      |  19 +++
 .../kerb/codec/spnego/SpnegoInitToken.java      |  19 +++
 .../kerb/codec/spnego/SpnegoTargToken.java      |  19 +++
 .../kerberos/kerb/codec/spnego/SpnegoToken.java |  19 +++
 .../kerberos/kerb/codec/test/CodecTest.java     |  21 ++-
 .../kerberos/kerb/codec/test/TestKerberos.java  |  19 +++
 .../kerberos/kerb/codec/test/TestPac.java       |  19 +++
 .../kerberos/kerb/codec/test/TestSpnego.java    |  19 +++
 haox-kerb/kerb-core/pom.xml                     |  13 ++
 .../org/apache/kerberos/kerb/KrbConstant.java   |  19 +++
 .../org/apache/kerberos/kerb/KrbErrorCode.java  |  19 +++
 .../apache/kerberos/kerb/KrbErrorException.java |  19 +++
 .../org/apache/kerberos/kerb/KrbException.java  |  19 +++
 .../apache/kerberos/kerb/codec/KrbCodec.java    |  19 +++
 .../kerberos/kerb/spec/KerberosString.java      |  19 +++
 .../kerberos/kerb/spec/KerberosStrings.java     |  19 +++
 .../apache/kerberos/kerb/spec/KerberosTime.java |  19 +++
 .../kerberos/kerb/spec/KrbAppSequenceType.java  |  19 +++
 .../org/apache/kerberos/kerb/spec/KrbEnum.java  |  19 +++
 .../apache/kerberos/kerb/spec/KrbIntegers.java  |  19 +++
 .../kerberos/kerb/spec/KrbSequenceOfType.java   |  19 +++
 .../kerberos/kerb/spec/KrbSequenceType.java     |  19 +++
 .../apache/kerberos/kerb/spec/ap/ApOption.java  |  19 +++
 .../apache/kerberos/kerb/spec/ap/ApOptions.java |  19 +++
 .../org/apache/kerberos/kerb/spec/ap/ApRep.java |  19 +++
 .../org/apache/kerberos/kerb/spec/ap/ApReq.java |  19 +++
 .../kerberos/kerb/spec/ap/Authenticator.java    |  19 +++
 .../kerberos/kerb/spec/ap/EncAPRepPart.java     |  19 +++
 .../kerberos/kerb/spec/common/AdToken.java      |  19 +++
 .../kerb/spec/common/AuthorizationData.java     |  19 +++
 .../spec/common/AuthorizationDataEntry.java     |  19 +++
 .../kerb/spec/common/AuthorizationType.java     |  19 +++
 .../kerberos/kerb/spec/common/CheckSum.java     |  19 +++
 .../kerberos/kerb/spec/common/CheckSumType.java |  19 +++
 .../kerb/spec/common/EncryptedData.java         |  19 +++
 .../kerb/spec/common/EncryptionKey.java         |  19 +++
 .../kerb/spec/common/EncryptionType.java        |  19 +++
 .../kerberos/kerb/spec/common/EtypeInfo.java    |  19 +++
 .../kerberos/kerb/spec/common/EtypeInfo2.java   |  19 +++
 .../kerb/spec/common/EtypeInfo2Entry.java       |  19 +++
 .../kerb/spec/common/EtypeInfoEntry.java        |  19 +++
 .../kerberos/kerb/spec/common/HostAddrType.java |  19 +++
 .../kerberos/kerb/spec/common/HostAddress.java  |  19 +++
 .../kerb/spec/common/HostAddresses.java         |  19 +++
 .../kerberos/kerb/spec/common/KeyUsage.java     |  19 +++
 .../kerberos/kerb/spec/common/KrbError.java     |  19 +++
 .../kerberos/kerb/spec/common/KrbFlags.java     |  19 +++
 .../kerberos/kerb/spec/common/KrbMessage.java   |  19 +++
 .../kerb/spec/common/KrbMessageType.java        |  19 +++
 .../kerberos/kerb/spec/common/KrbToken.java     |  19 +++
 .../kerb/spec/common/KrbTokenEncoder.java       |  19 +++
 .../kerberos/kerb/spec/common/LastReq.java      |  19 +++
 .../kerberos/kerb/spec/common/LastReqEntry.java |  19 +++
 .../kerberos/kerb/spec/common/LastReqType.java  |  19 +++
 .../kerberos/kerb/spec/common/MethodData.java   |  19 +++
 .../kerberos/kerb/spec/common/NameType.java     |  19 +++
 .../kerb/spec/common/PrincipalName.java         |  19 +++
 .../apache/kerberos/kerb/spec/common/Realm.java |  19 +++
 .../kerberos/kerb/spec/common/SamType.java      |  19 +++
 .../kerberos/kerb/spec/common/TokenFormat.java  |  19 +++
 .../kerb/spec/common/TransitedEncoding.java     |  19 +++
 .../kerb/spec/common/TransitedEncodingType.java |  19 +++
 .../kerberos/kerb/spec/fast/ArmorType.java      |  19 +++
 .../kerberos/kerb/spec/fast/FastOption.java     |  19 +++
 .../kerberos/kerb/spec/fast/FastOptions.java    |  19 +++
 .../kerberos/kerb/spec/fast/KrbFastArmor.java   |  19 +++
 .../kerb/spec/fast/KrbFastArmoredRep.java       |  19 +++
 .../kerb/spec/fast/KrbFastArmoredReq.java       |  19 +++
 .../kerb/spec/fast/KrbFastFinished.java         |  19 +++
 .../kerberos/kerb/spec/fast/KrbFastReq.java     |  19 +++
 .../kerb/spec/fast/KrbFastResponse.java         |  19 +++
 .../kerberos/kerb/spec/fast/PaAuthnEntry.java   |  19 +++
 .../kerberos/kerb/spec/fast/PaAuthnSet.java     |  19 +++
 .../kerberos/kerb/spec/fast/PaFxFastReply.java  |  19 +++
 .../kerb/spec/fast/PaFxFastRequest.java         |  19 +++
 .../apache/kerberos/kerb/spec/kdc/AsRep.java    |  19 +++
 .../apache/kerberos/kerb/spec/kdc/AsReq.java    |  19 +++
 .../kerberos/kerb/spec/kdc/EncAsRepPart.java    |  19 +++
 .../kerberos/kerb/spec/kdc/EncKdcRepPart.java   |  19 +++
 .../kerberos/kerb/spec/kdc/EncTgsRepPart.java   |  19 +++
 .../kerberos/kerb/spec/kdc/KdcOption.java       |  19 +++
 .../kerberos/kerb/spec/kdc/KdcOptions.java      |  19 +++
 .../apache/kerberos/kerb/spec/kdc/KdcRep.java   |  19 +++
 .../apache/kerberos/kerb/spec/kdc/KdcReq.java   |  19 +++
 .../kerberos/kerb/spec/kdc/KdcReqBody.java      |  19 +++
 .../apache/kerberos/kerb/spec/kdc/TgsRep.java   |  19 +++
 .../apache/kerberos/kerb/spec/kdc/TgsReq.java   |  19 +++
 .../kerb/spec/pa/PaAuthenticationSet.java       |  19 +++
 .../kerb/spec/pa/PaAuthenticationSetElem.java   |  19 +++
 .../apache/kerberos/kerb/spec/pa/PaData.java    |  19 +++
 .../kerberos/kerb/spec/pa/PaDataEntry.java      |  19 +++
 .../kerberos/kerb/spec/pa/PaDataType.java       |  19 +++
 .../kerberos/kerb/spec/pa/PaEncTsEnc.java       |  19 +++
 .../kerberos/kerb/spec/pa/otp/OtpTokenInfo.java |  19 +++
 .../kerb/spec/pa/otp/PaOtpChallenge.java        |  19 +++
 .../spec/pa/pkinit/AdInitialVerifiedCas.java    |  19 +++
 .../spec/pa/pkinit/AlgorithmIdentifiers.java    |  19 +++
 .../kerberos/kerb/spec/pa/pkinit/AuthPack.java  |  19 +++
 .../kerberos/kerb/spec/pa/pkinit/DHNonce.java   |  19 +++
 .../kerberos/kerb/spec/pa/pkinit/DHRepInfo.java |  19 +++
 .../pa/pkinit/ExternalPrincipalIdentifier.java  |  19 +++
 .../kerb/spec/pa/pkinit/KdcDHKeyInfo.java       |  19 +++
 .../kerb/spec/pa/pkinit/Krb5PrincipalName.java  |  19 +++
 .../kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java |  19 +++
 .../kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java |  19 +++
 .../kerb/spec/pa/pkinit/PkAuthenticator.java    |  19 +++
 .../kerb/spec/pa/pkinit/ReplyKeyPack.java       |  19 +++
 .../kerb/spec/pa/pkinit/TdDhParameters.java     |  19 +++
 .../kerb/spec/pa/pkinit/TrustedCertifiers.java  |  19 +++
 .../kerb/spec/pa/token/PaTokenChallenge.java    |  19 +++
 .../kerb/spec/pa/token/PaTokenRequest.java      |  19 +++
 .../kerberos/kerb/spec/pa/token/TokenFlag.java  |  19 +++
 .../kerberos/kerb/spec/pa/token/TokenFlags.java |  19 +++
 .../kerberos/kerb/spec/pa/token/TokenInfo.java  |  19 +++
 .../kerberos/kerb/spec/pa/token/TokenInfos.java |  19 +++
 .../kerb/spec/ticket/AbstractServiceTicket.java |  19 +++
 .../kerb/spec/ticket/EncTicketPart.java         |  19 +++
 .../kerb/spec/ticket/ServiceTicket.java         |  19 +++
 .../kerberos/kerb/spec/ticket/TgtTicket.java    |  19 +++
 .../kerberos/kerb/spec/ticket/Ticket.java       |  19 +++
 .../kerberos/kerb/spec/ticket/TicketFlag.java   |  19 +++
 .../kerberos/kerb/spec/ticket/TicketFlags.java  |  19 +++
 .../kerberos/kerb/spec/ticket/Tickets.java      |  19 +++
 .../kerb/spec/x509/AlgorithmIdentifier.java     |  19 +++
 .../kerb/spec/x509/SubjectPublicKeyInfo.java    |  19 +++
 haox-kerb/kerb-crypto/pom.xml                   |  15 +-
 .../kerb/crypto/AbstractCryptoTypeHandler.java  |  19 +++
 .../apache/kerberos/kerb/crypto/BytesUtil.java  |  39 +++++
 .../apache/kerberos/kerb/crypto/Camellia.java   |  25 +++-
 .../kerberos/kerb/crypto/CamelliaKey.java       |  19 +++
 .../kerberos/kerb/crypto/CheckSumHandler.java   |  19 +++
 .../kerb/crypto/CheckSumTypeHandler.java        |  19 +++
 .../org/apache/kerberos/kerb/crypto/Cmac.java   |  27 +++-
 .../apache/kerberos/kerb/crypto/Confounder.java |  19 +++
 .../org/apache/kerberos/kerb/crypto/Crc32.java  |  19 +++
 .../kerberos/kerb/crypto/CryptoTypeHandler.java |  19 +++
 .../org/apache/kerberos/kerb/crypto/Des.java    |  19 +++
 .../kerberos/kerb/crypto/EncTypeHandler.java    |  19 +++
 .../kerberos/kerb/crypto/EncryptionHandler.java |  19 +++
 .../org/apache/kerberos/kerb/crypto/Hmac.java   |  19 +++
 .../org/apache/kerberos/kerb/crypto/Md4.java    |  10 +-
 .../org/apache/kerberos/kerb/crypto/Nfold.java  |  19 +++
 .../org/apache/kerberos/kerb/crypto/Nonce.java  |  19 +++
 .../org/apache/kerberos/kerb/crypto/Pbkdf.java  |  19 +++
 .../org/apache/kerberos/kerb/crypto/Random.java |  19 +++
 .../org/apache/kerberos/kerb/crypto/Rc4.java    |  19 +++
 .../org/apache/kerberos/kerb/crypto/Util.java   |  24 ---
 .../cksum/AbstractCheckSumTypeHandler.java      |  19 +++
 .../cksum/AbstractKeyedCheckSumTypeHandler.java |  19 +++
 .../crypto/cksum/CmacCamellia128CheckSum.java   |  19 +++
 .../crypto/cksum/CmacCamellia256CheckSum.java   |  19 +++
 .../kerb/crypto/cksum/CmacKcCheckSum.java       |  19 +++
 .../crypto/cksum/ConfounderedDesCheckSum.java   |  19 +++
 .../kerb/crypto/cksum/Crc32CheckSum.java        |  19 +++
 .../kerb/crypto/cksum/DesCbcCheckSum.java       |  19 +++
 .../kerb/crypto/cksum/HashProvider.java         |  19 +++
 .../kerb/crypto/cksum/HmacKcCheckSum.java       |  19 +++
 .../kerb/crypto/cksum/HmacMd5Rc4CheckSum.java   |  19 +++
 .../crypto/cksum/HmacSha1Aes128CheckSum.java    |  19 +++
 .../crypto/cksum/HmacSha1Aes256CheckSum.java    |  19 +++
 .../kerb/crypto/cksum/HmacSha1Des3CheckSum.java |  19 +++
 .../kerberos/kerb/crypto/cksum/KcCheckSum.java  |  19 +++
 .../kerb/crypto/cksum/Md5HmacRc4CheckSum.java   |  19 +++
 .../kerb/crypto/cksum/RsaMd4CheckSum.java       |  19 +++
 .../kerb/crypto/cksum/RsaMd4DesCheckSum.java    |  19 +++
 .../kerb/crypto/cksum/RsaMd5CheckSum.java       |  19 +++
 .../kerb/crypto/cksum/RsaMd5DesCheckSum.java    |  19 +++
 .../kerb/crypto/cksum/Sha1CheckSum.java         |  19 +++
 .../cksum/provider/AbstractHashProvider.java    |  19 +++
 .../AbstractUnkeyedCheckSumTypeHandler.java     |  19 +++
 .../crypto/cksum/provider/Crc32Provider.java    |  19 +++
 .../kerb/crypto/cksum/provider/Md4Provider.java |  19 +++
 .../kerb/crypto/cksum/provider/Md5Provider.java |  19 +++
 .../provider/MessageDigestHashProvider.java     |  19 +++
 .../crypto/cksum/provider/Sha1Provider.java     |  19 +++
 .../kerb/crypto/enc/AbstractEncTypeHandler.java |  19 +++
 .../kerb/crypto/enc/Aes128CtsHmacSha1Enc.java   |  19 +++
 .../kerb/crypto/enc/Aes256CtsHmacSha1Enc.java   |  19 +++
 .../kerb/crypto/enc/Camellia128CtsCmacEnc.java  |  19 +++
 .../kerb/crypto/enc/Camellia256CtsCmacEnc.java  |  19 +++
 .../kerb/crypto/enc/Des3CbcSha1Enc.java         |  19 +++
 .../kerberos/kerb/crypto/enc/DesCbcCrcEnc.java  |  19 +++
 .../kerberos/kerb/crypto/enc/DesCbcEnc.java     |  19 +++
 .../kerberos/kerb/crypto/enc/DesCbcMd4Enc.java  |  19 +++
 .../kerberos/kerb/crypto/enc/DesCbcMd5Enc.java  |  19 +++
 .../kerb/crypto/enc/EncryptProvider.java        |  19 +++
 .../kerberos/kerb/crypto/enc/KeKiCmacEnc.java   |  19 +++
 .../kerberos/kerb/crypto/enc/KeKiEnc.java       |  19 +++
 .../kerb/crypto/enc/KeKiHmacSha1Enc.java        |  19 +++
 .../kerberos/kerb/crypto/enc/Rc4HmacEnc.java    |  19 +++
 .../kerberos/kerb/crypto/enc/Rc4HmacExpEnc.java |  19 +++
 .../enc/provider/AbstractEncryptProvider.java   |  19 +++
 .../crypto/enc/provider/Aes128Provider.java     |  19 +++
 .../crypto/enc/provider/Aes256Provider.java     |  19 +++
 .../kerb/crypto/enc/provider/AesProvider.java   |  19 +++
 .../enc/provider/Camellia128Provider.java       |  19 +++
 .../enc/provider/Camellia256Provider.java       |  19 +++
 .../crypto/enc/provider/CamelliaProvider.java   |  19 +++
 .../kerb/crypto/enc/provider/Des3Provider.java  |  19 +++
 .../kerb/crypto/enc/provider/DesProvider.java   |  19 +++
 .../kerb/crypto/enc/provider/Rc4Provider.java   |  19 +++
 .../kerb/crypto/key/AbstractKeyMaker.java       |  19 +++
 .../kerberos/kerb/crypto/key/AesKeyMaker.java   |  19 +++
 .../kerb/crypto/key/CamelliaKeyMaker.java       |  19 +++
 .../kerberos/kerb/crypto/key/Des3KeyMaker.java  |  19 +++
 .../kerberos/kerb/crypto/key/DesKeyMaker.java   |  22 ++-
 .../kerberos/kerb/crypto/key/DkKeyMaker.java    |  19 +++
 .../kerberos/kerb/crypto/key/KeyMaker.java      |  19 +++
 .../kerberos/kerb/crypto/key/Rc4KeyMaker.java   |  19 +++
 .../kerb-crypto/src/main/resources/kdc.ldiff    |  18 ++-
 .../kerberos/kerb/crypto/CamelliaEncTest.java   |  22 ++-
 .../kerberos/kerb/crypto/CheckSumTest.java      |  22 ++-
 .../kerberos/kerb/crypto/CheckSumsTest.java     |  24 ++-
 .../apache/kerberos/kerb/crypto/CmacTest.java   |  32 +++-
 .../apache/kerberos/kerb/crypto/Crc32Test.java  |  22 ++-
 .../kerberos/kerb/crypto/DecryptionTest.java    |   7 +-
 .../kerberos/kerb/crypto/KeyDeriveTest.java     |  28 +++-
 .../kerberos/kerb/crypto/String2keyTest.java    |  26 +++-
 .../apache/kerberos/kerb/crypto/TestUtil.java   |  39 -----
 haox-kerb/kerb-identity/pom.xml                 |  13 ++
 .../kerberos/kerb/identity/Attribute.java       |  19 +++
 .../kerb/identity/ComplexAttribute.java         |  19 +++
 .../apache/kerberos/kerb/identity/Identity.java |  19 +++
 .../kerberos/kerb/identity/IdentityService.java |  19 +++
 .../kerberos/kerb/identity/KrbAttributes.java   |  19 +++
 .../kerberos/kerb/identity/KrbIdentity.java     |  19 +++
 .../kerberos/kerb/identity/SimpleAttribute.java |  19 +++
 .../backend/AbstractIdentityBackend.java        |  19 +++
 .../backend/InMemoryIdentityBackend.java        |  19 +++
 .../identity/backend/SimpleIdentityBackend.java |  19 +++
 haox-kerb/kerb-kdc-test/pom.xml                 |  13 ++
 .../kerberos/kerb/server/TestKdcServer.java     |  19 +++
 .../src/main/resources/extensions.kdc           |  18 ++-
 .../kerb-kdc-test/src/main/resources/kdc.ldiff  |  18 ++-
 .../apache/kerberos/kerb/server/KdcTest.java    |  19 +++
 .../kerberos/kerb/server/KdcTestBase.java       |  19 +++
 .../kerberos/kerb/server/WithCertKdcTest.java   |  19 +++
 .../kerberos/kerb/server/WithTokenKdcTest.java  |  19 +++
 haox-kerb/kerb-server/pom.xml                   |  13 ++
 .../apache/kerberos/kerb/server/KdcConfig.java  |  19 +++
 .../kerberos/kerb/server/KdcConfigKey.java      |  19 +++
 .../apache/kerberos/kerb/server/KdcContext.java |  19 +++
 .../apache/kerberos/kerb/server/KdcHandler.java |  19 +++
 .../apache/kerberos/kerb/server/KdcServer.java  |  19 +++
 .../kerberos/kerb/server/SimpleKdcServer.java   |  19 +++
 .../server/preauth/AbstractPreauthPlugin.java   |  19 +++
 .../kerb/server/preauth/FastContext.java        |  19 +++
 .../kerb/server/preauth/KdcPreauth.java         |  19 +++
 .../kerb/server/preauth/PreauthContext.java     |  19 +++
 .../kerb/server/preauth/PreauthHandle.java      |  19 +++
 .../kerb/server/preauth/PreauthHandler.java     |  19 +++
 .../server/preauth/builtin/EncTsPreauth.java    |  19 +++
 .../kerb/server/preauth/builtin/TgtPreauth.java |  19 +++
 .../server/preauth/pkinit/PkinitKdcContext.java |  19 +++
 .../server/preauth/pkinit/PkinitPreauth.java    |  19 +++
 .../preauth/pkinit/PkinitRequestContext.java    |  19 +++
 .../preauth/token/TokenRequestContext.java      |  19 +++
 .../kerb/server/replay/CacheService.java        |  19 +++
 .../kerb/server/replay/ReplayCheckService.java  |  19 +++
 .../server/replay/ReplayCheckServiceImpl.java   |  19 +++
 .../kerb/server/replay/RequestRecord.java       |  19 +++
 .../kerb/server/replay/SimpleCacheService.java  |  19 +++
 .../kerberos/kerb/server/request/AsRequest.java |  19 +++
 .../kerb/server/request/KdcRequest.java         |  19 +++
 .../kerb/server/request/TgsRequest.java         |  19 +++
 .../apache/kerberos/kerb/server/KdcTest.java    |  19 +++
 haox-kerb/kerb-util/pom.xml                     |  13 ++
 .../apache/kerberos/kerb/KrbInputStream.java    |  19 +++
 .../apache/kerberos/kerb/KrbOutputStream.java   |  19 +++
 .../kerb/ccache/CredCacheInputStream.java       |  19 +++
 .../kerb/ccache/CredCacheOutputStream.java      |  19 +++
 .../apache/kerberos/kerb/ccache/Credential.java |  19 +++
 .../kerberos/kerb/ccache/CredentialCache.java   |  19 +++
 .../kerb/ccache/KrbCredentialCache.java         |  19 +++
 .../org/apache/kerberos/kerb/ccache/Tag.java    |  19 +++
 .../org/apache/kerberos/kerb/keytab/Keytab.java |  19 +++
 .../kerberos/kerb/keytab/KeytabEntry.java       |  19 +++
 .../kerberos/kerb/keytab/KeytabInputStream.java |  19 +++
 .../kerb/keytab/KeytabOutputStream.java         |  19 +++
 .../apache/kerberos/kerb/keytab/KrbKeytab.java  |  19 +++
 .../apache/kerberos/kerb/util/CcacheTest.java   |  19 +++
 .../kerberos/kerb/util/EncryptionTest.java      |  19 +++
 .../org/apache/kerberos/kerb/util/KeysTest.java |  19 +++
 .../apache/kerberos/kerb/util/KeytabTest.java   |  19 +++
 haox-kerb/pom.xml                               |  13 ++
 pom.xml                                         |  13 ++
 517 files changed, 9771 insertions(+), 337 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0ce18e3a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/EncryptionHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0ce18e3a/haox-kerb/kerb-crypto/src/main/java/org/apache/kerberos/kerb/crypto/key/DesKeyMaker.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0ce18e3a/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java
----------------------------------------------------------------------
diff --cc haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java
index 3b84e49,e5f195c..0445ed2
--- a/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java
+++ b/haox-kerb/kerb-crypto/src/test/java/org/apache/kerberos/kerb/crypto/String2keyTest.java
@@@ -422,10 -442,10 +442,10 @@@ public class String2keyTest 
          EncryptionKey outkey = EncryptionHandler.string2Key(tc.string, tc.salt, params, tc.encType);
          if (! Arrays.equals(answer, outkey.getKeyData())) {
              System.err.println("failed with:");
-             System.err.println("outKey:" + TestUtil.bytesToHex(outkey.getKeyData()));
+             System.err.println("outKey:" + HexUtil.bytesToHex(outkey.getKeyData()));
              System.err.println("answer:" + tc.answer);
              // Will un-comment below when passed all the tests.
 -            //return false;
 +            return false;
          }
          return true;
      }