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/02/09 07:27:42 UTC

[01/30] directory-kerberos git commit: DIRKRB-153 Switching to AssertJ framework for unit tests in kerby-kerb

Repository: directory-kerberos
Updated Branches:
  refs/heads/installation e27df20bb -> 63099eb81


DIRKRB-153 Switching to AssertJ framework for unit tests in kerby-kerb


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

Branch: refs/heads/installation
Commit: 4a65c583d0c96b134d362bb8b13d7a41cd35670a
Parents: dfc2509
Author: chenlin1 <li...@intel.com>
Authored: Fri Jan 30 10:33:45 2015 +0800
Committer: chenlin1 <li...@intel.com>
Committed: Fri Jan 30 10:33:45 2015 +0800

----------------------------------------------------------------------
 .../kerberos/kerb/client/TestKrbConfigLoad.java | 40 +++++-----
 .../kerberos/kerb/codec/test/CodecTest.java     | 11 ++-
 .../kerb/codec/test/TestAsRepCodec.java         | 33 ++++----
 .../kerb/codec/test/TestAsReqCodec.java         | 57 +++++++-------
 .../kerberos/kerb/codec/test/TestKerberos.java  | 66 ++++++++--------
 .../kerberos/kerb/codec/test/TestSpnego.java    | 80 ++++++++++----------
 .../kerb/codec/test/TestTgsRepCodec.java        | 31 ++++----
 .../kerb/codec/test/TestTgsReqCodec.java        | 44 +++++------
 .../kerberos/kerb/crypto/CamelliaEncTest.java   |  6 +-
 .../kerberos/kerb/crypto/CheckSumsTest.java     |  2 +-
 .../kerby/kerberos/kerb/crypto/CmacTest.java    | 11 +--
 .../kerby/kerberos/kerb/crypto/Crc32Test.java   |  5 +-
 .../kerberos/kerb/crypto/DecryptionTest.java    |  9 ++-
 .../kerberos/kerb/crypto/DesKeyMakerTest.java   |  9 ++-
 .../kerberos/kerb/crypto/KeyDeriveTest.java     |  5 +-
 .../kerberos/kerb/crypto/String2keyTest.java    |  8 +-
 .../kerby/kerberos/kerb/server/KdcTest.java     |  9 ++-
 .../kerberos/kerb/server/WithCertKdcTest.java   | 13 ++--
 .../kerberos/kerb/server/WithTokenKdcTest.java  | 11 +--
 .../kerberos/kerb/server/TestKdcConfigLoad.java | 25 +++---
 .../kerby/kerberos/kerb/util/CcacheTest.java    |  9 ++-
 .../kerberos/kerb/util/EncryptionTest.java      |  7 +-
 .../kerby/kerberos/kerb/util/KeysTest.java      |  5 +-
 .../kerby/kerberos/kerb/util/KeytabTest.java    |  7 +-
 kerby-kerb/pom.xml                              |  6 ++
 25 files changed, 265 insertions(+), 244 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/TestKrbConfigLoad.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/TestKrbConfigLoad.java b/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/TestKrbConfigLoad.java
index ae7ded5..26fb38e 100644
--- a/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/TestKrbConfigLoad.java
+++ b/kerby-kerb/kerb-client/src/test/java/org/apache/kerby/kerberos/kerb/client/TestKrbConfigLoad.java
@@ -21,7 +21,6 @@ package org.apache.kerby.kerberos.kerb.client;
 
 import org.apache.kerby.config.Conf;
 import org.apache.kerby.kerberos.kerb.spec.common.EncryptionType;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.File;
@@ -29,6 +28,8 @@ import java.io.IOException;
 import java.net.URISyntaxException;
 import java.net.URL;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * Test for loading configurations form krb5.conf.
  * krb5.conf is the configuration file in MIT Kerberos.
@@ -44,26 +45,25 @@ public class TestKrbConfigLoad {
         Conf conf = krbConfig.getConf();
         conf.addIniConfig(confFile);
 
-        Assert.assertEquals("KRB.COM", krbConfig.getDefaultRealm());
-        Assert.assertFalse(krbConfig.getDnsLookUpKdc());
-        Assert.assertFalse(krbConfig.getDnsLookUpRealm());
-        Assert.assertTrue(krbConfig.getAllowWeakCrypto());
-        Assert.assertEquals(24 * 3600, krbConfig.getTicketLifetime());
-        Assert.assertEquals(7 * 24 * 3600, krbConfig.getRenewLifetime());
-        Assert.assertTrue(krbConfig.isForwardableAllowed());
-        Assert.assertEquals(2, krbConfig.getEncryptionTypes().size());
-        Assert.assertEquals(EncryptionType.DES_CBC_CRC, krbConfig.getEncryptionTypes().get(0));
-        Assert.assertEquals(EncryptionType.AES128_CTS_HMAC_SHA1_96, krbConfig.getEncryptionTypes().get(1));
-        Assert.assertEquals(300, krbConfig.getAllowableClockSkew());
-        Assert.assertTrue(krbConfig.isProxiableAllowed());
-        Assert.assertEquals(1, krbConfig.getDefaultTgsEnctypes().size());
-        Assert.assertEquals(EncryptionType.DES_CBC_CRC, krbConfig.getDefaultTgsEnctypes().get(0));
-        Assert.assertEquals(1, krbConfig.getDefaultTktEnctypes().size());
-        Assert.assertEquals(EncryptionType.DES_CBC_CRC, krbConfig.getDefaultTktEnctypes().get(0));
+        assertThat(krbConfig.getDefaultRealm()).isEqualTo("KRB.COM");
+        assertThat(krbConfig.getDnsLookUpKdc()).isFalse();
+        assertThat(krbConfig.getDnsLookUpRealm()).isFalse();
+        assertThat(krbConfig.getAllowWeakCrypto()).isTrue();
+        assertThat(krbConfig.getTicketLifetime()).isEqualTo(24 * 3600);
+        assertThat(krbConfig.getRenewLifetime()).isEqualTo(7 * 24 * 3600);
+        assertThat(krbConfig.isForwardableAllowed()).isTrue();
+        assertThat(krbConfig.getEncryptionTypes()).hasSize(2)
+                .contains(EncryptionType.DES_CBC_CRC, EncryptionType.AES128_CTS_HMAC_SHA1_96);
+        assertThat(krbConfig.getAllowableClockSkew()).isEqualTo(300);
+        assertThat(krbConfig.isProxiableAllowed()).isTrue();
+        assertThat(krbConfig.getDefaultTgsEnctypes()).hasSize(1)
+                .contains(EncryptionType.DES_CBC_CRC);
+        assertThat(krbConfig.getDefaultTktEnctypes()).hasSize(1)
+                .contains(EncryptionType.DES_CBC_CRC);
 
-        Assert.assertEquals("FILE:/var/log/krb5libs.log", krbConfig.getDefaultLoggingLocation());
-        Assert.assertEquals("FILE:/var/log/krb5kdc.log", krbConfig.getKdcLoggingLocation());
-        Assert.assertEquals("FILE:/var/log/kadmind.log", krbConfig.getAdminLoggingLocation());
+        assertThat(krbConfig.getDefaultLoggingLocation()).isEqualTo("FILE:/var/log/krb5libs.log");
+        assertThat(krbConfig.getKdcLoggingLocation()).isEqualTo("FILE:/var/log/krb5kdc.log");
+        assertThat(krbConfig.getAdminLoggingLocation()).isEqualTo("FILE:/var/log/kadmind.log");
 
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTest.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTest.java
index 58a57e4..d3c3201 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTest.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTest.java
@@ -23,10 +23,9 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.codec.KrbCodec;
 import org.apache.kerby.kerberos.kerb.spec.common.CheckSum;
 import org.apache.kerby.kerberos.kerb.spec.common.CheckSumType;
-import org.junit.Assert;
 import org.junit.Test;
 
-import java.util.Arrays;
+import static org.assertj.core.api.Assertions.assertThat;
 
 public class CodecTest {
 
@@ -36,11 +35,11 @@ public class CodecTest {
         mcs.setCksumtype(CheckSumType.CRC32);
         mcs.setChecksum(new byte[] {0x10});
         byte[] bytes = KrbCodec.encode(mcs);
-        Assert.assertNotNull(bytes);
+        assertThat(bytes).isNotNull();
 
         CheckSum restored = KrbCodec.decode(bytes, CheckSum.class);
-        Assert.assertNotNull(restored);
-        Assert.assertEquals(mcs.getCksumtype(), restored.getCksumtype());
-        Assert.assertTrue(Arrays.equals(mcs.getChecksum(), restored.getChecksum()));
+        assertThat(restored).isNotNull();
+        assertThat(restored.getCksumtype()).isEqualTo(mcs.getCksumtype());
+        assertThat(mcs.getChecksum()).isEqualTo(restored.getChecksum());
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsRepCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsRepCodec.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsRepCodec.java
index b00c408..a4592cd 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsRepCodec.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsRepCodec.java
@@ -24,12 +24,13 @@ import org.apache.kerby.kerberos.kerb.spec.common.NameType;
 import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
 import org.apache.kerby.kerberos.kerb.spec.kdc.AsRep;
 import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * Test AsRep message using a real 'correct' network packet captured from MS-AD to detective programming errors
  * and compatibility issues particularly regarding Kerberos crypto.
@@ -44,30 +45,28 @@ public class TestAsRepCodec {
         AsRep asRep = new AsRep();
         asRep.decode(asRepToken);
 
-        Assert.assertEquals(5, asRep.getPvno());
-        Assert.assertEquals(KrbMessageType.AS_REP, asRep.getMsgType());
-        Assert.assertEquals("DENYDC.COM", asRep.getCrealm());
+        assertThat(asRep.getPvno()).isEqualTo(5);
+        assertThat(asRep.getMsgType()).isEqualTo(KrbMessageType.AS_REP);
+        assertThat(asRep.getCrealm()).isEqualTo("DENYDC.COM");
 
         PrincipalName cName = asRep.getCname();
-        Assert.assertEquals(NameType.NT_PRINCIPAL, cName.getNameType());
-        Assert.assertEquals(1, cName.getNameStrings().size());
-        Assert.assertEquals("u5", cName.getNameStrings().get(0));
+        assertThat(cName.getNameType()).isEqualTo(NameType.NT_PRINCIPAL);
+        assertThat(cName.getNameStrings()).hasSize(1).contains("u5");
 
         Ticket ticket = asRep.getTicket();
-        Assert.assertEquals(5, ticket.getTktvno());
-        Assert.assertEquals("DENYDC.COM", ticket.getRealm());
+        assertThat(ticket.getTktvno()).isEqualTo(5);
+        assertThat(ticket.getRealm()).isEqualTo("DENYDC.COM");
         PrincipalName sName = ticket.getSname();
-        Assert.assertEquals(NameType.NT_SRV_INST, sName.getNameType());
-        Assert.assertEquals(2, sName.getNameStrings().size());
-        Assert.assertEquals("krbtgt", sName.getNameStrings().get(0));
-        Assert.assertEquals("DENYDC.COM", sName.getNameStrings().get(1));
+        assertThat(sName.getNameType()).isEqualTo(NameType.NT_SRV_INST);
+        assertThat(sName.getNameStrings()).hasSize(2)
+                .contains("krbtgt", "DENYDC.COM");
         //FIXME
         //EncTicketPart encTicketPart = ticket.getEncPart();
-        //Assert.assertEquals(2, encTicketPart.getKey().getKvno());
-        //Assert.assertEquals(0x0017, encTicketPart.getKey().getKeyType().getValue());
+        //assertThat(encTicketPart.getKey().getKvno()).isEqualTo(2);
+        //assertThat(encTicketPart.getKey().getKeyType().getValue()).isEqualTo(0x0017);
 
         //EncKdcRepPart encKdcRepPart = asRep.getEncPart();
-        //Assert.assertEquals(0x0017, encKdcRepPart.getKey().getKeyType().getValue());
-        //Assert.assertEquals(7, encKdcRepPart.getKey().getKvno());
+        //assertThat(encKdcRepPart.getKey().getKeyType().getValue()).isEqualTo(0x0017);
+        //assertThat(encKdcRepPart.getKey().getKvno()).isEqualTo(7);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsReqCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsReqCodec.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsReqCodec.java
index 40427ec..3ed67e7 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsReqCodec.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestAsReqCodec.java
@@ -25,7 +25,6 @@ import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -37,6 +36,8 @@ import java.util.Date;
 import java.util.List;
 import java.util.SimpleTimeZone;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * Test AsReq message using a real 'correct' network packet captured from MS-AD to detective programming errors
  * and compatibility issues particularly regarding Kerberos crypto.
@@ -51,49 +52,49 @@ public class TestAsReqCodec {
         AsReq asReq = new AsReq();
         asReq.decode(asReqToken);
 
-        Assert.assertEquals(5, asReq.getPvno());
-        Assert.assertEquals(KrbMessageType.AS_REQ, asReq.getMsgType());
+        assertThat(asReq.getPvno()).isEqualTo(5);
+        assertThat(asReq.getMsgType()).isEqualTo(KrbMessageType.AS_REQ);
 
         PaData paData = asReq.getPaData();
         PaDataEntry encTimestampEntry = paData.findEntry(PaDataType.ENC_TIMESTAMP);
-        Assert.assertEquals(PaDataType.ENC_TIMESTAMP, encTimestampEntry.getPaDataType());
-        Assert.assertArrayEquals(Arrays.copyOfRange(bytes, 33, 96), encTimestampEntry.getPaDataValue());
+        assertThat(encTimestampEntry.getPaDataType()).isEqualTo(PaDataType.ENC_TIMESTAMP);
+        assertThat(encTimestampEntry.getPaDataValue()).isEqualTo(Arrays.copyOfRange(bytes, 33, 96));
         PaDataEntry pacRequestEntry = paData.findEntry(PaDataType.PAC_REQUEST);
-        Assert.assertEquals(PaDataType.PAC_REQUEST, pacRequestEntry.getPaDataType());
-        Assert.assertArrayEquals(Arrays.copyOfRange(bytes, 108, 115), pacRequestEntry.getPaDataValue());
+        assertThat(pacRequestEntry.getPaDataType()).isEqualTo(PaDataType.PAC_REQUEST);
+        assertThat(pacRequestEntry.getPaDataValue()).isEqualTo(Arrays.copyOfRange(bytes, 108, 115));
 
         KdcReqBody body = asReq.getReqBody();
-        Assert.assertEquals(0, body.getKdcOptions().getPadding());
-        Assert.assertArrayEquals(Arrays.copyOfRange(bytes, 126, 130), body.getKdcOptions().getValue());
+        assertThat(body.getKdcOptions().getPadding()).isEqualTo(0);
+        assertThat(body.getKdcOptions().getValue()).isEqualTo(Arrays.copyOfRange(bytes, 126, 130));
         PrincipalName cName = body.getCname();
-        Assert.assertEquals(NameType.NT_PRINCIPAL, cName.getNameType());
-        Assert.assertEquals("des", cName.getName());
-        Assert.assertEquals("DENYDC", body.getRealm());
+        assertThat(cName.getNameType()).isEqualTo(NameType.NT_PRINCIPAL);
+        assertThat(cName.getName()).isEqualTo("des");
+        assertThat(body.getRealm()).isEqualTo("DENYDC");
         PrincipalName sName = body.getSname();
-        Assert.assertEquals(NameType.NT_SRV_INST, sName.getNameType());
-        Assert.assertEquals(2, sName.getNameStrings().size());
-        Assert.assertEquals("krbtgt", sName.getNameStrings().get(0));
-        Assert.assertEquals("DENYDC", sName.getNameStrings().get(1));
+        assertThat(sName.getNameType()).isEqualTo(NameType.NT_SRV_INST);
+        assertThat(sName.getNameStrings()).hasSize(2)
+                .contains("krbtgt", "DENYDC");
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
         sdf.setTimeZone(new SimpleTimeZone(0, "Z"));
         Date date = sdf.parse("20370913024805");
-        Assert.assertEquals(date.getTime(), body.getTill().getTime());
-        Assert.assertEquals(date.getTime(), body.getRtime().getTime());
+        assertThat(body.getTill().getTime()).isEqualTo(date.getTime());
+        assertThat(body.getRtime().getTime()).isEqualTo(date.getTime());
 
-        Assert.assertEquals(197451134, body.getNonce());
+        assertThat(body.getNonce()).isEqualTo(197451134);
 
         List<EncryptionType> types = body.getEtypes();
-        Assert.assertEquals(0x0017, types.get(0).getValue());
-        //Assert.assertEquals(0xff7b, types.get(1).getValue());//FIXME
-        //Assert.assertEquals(0x0080, types.get(2).getValue());//FIXME
-        Assert.assertEquals(0x0003, types.get(3).getValue());
-        Assert.assertEquals(0x0001, types.get(4).getValue());
-        Assert.assertEquals(0x0018, types.get(5).getValue());
-        //Assert.assertEquals(0xff79, types.get(6).getValue());//FIXME
+        assertThat(types).hasSize(7);
+        assertThat(types.get(0).getValue()).isEqualTo(0x0017);
+        //assertThat(types.get(1).getValue()).isEqualTo(0xff7b);//FIXME
+        //assertThat(types.get(2).getValue()).isEqualTo(0x0080);//FIXME
+        assertThat(types.get(3).getValue()).isEqualTo(0x0003);
+        assertThat(types.get(4).getValue()).isEqualTo(0x0001);
+        assertThat(types.get(5).getValue()).isEqualTo(0x0018);
+        //assertThat(types.get(6).getValue()).isEqualTo(0xff79);//FIXME
 
         List<HostAddress> hostAddress = body.getAddresses().getElements();
-        Assert.assertEquals(1, hostAddress.size());
-        Assert.assertEquals(HostAddrType.ADDRTYPE_NETBIOS, hostAddress.get(0).getAddrType());
+        assertThat(hostAddress).hasSize(1);
+        assertThat(hostAddress.get(0).getAddrType()).isEqualTo(HostAddrType.ADDRTYPE_NETBIOS);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
index 0a1338c..900186f 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
@@ -22,13 +22,15 @@ package org.apache.kerby.kerberos.kerb.codec.test;
 import org.apache.kerby.kerberos.kerb.codec.kerberos.KerberosTicket;
 import org.apache.kerby.kerberos.kerb.codec.kerberos.KerberosToken;
 import org.apache.kerby.kerberos.kerb.spec.common.EncryptionKey;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
 import java.io.IOException;
 import java.io.InputStream;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
 public class TestKerberos {
 
     private byte[] rc4Token;
@@ -94,30 +96,30 @@ public class TestKerberos {
     public void testRc4Ticket() throws Exception {
         KerberosToken token = new KerberosToken(rc4Token, rc4Key);
 
-        Assert.assertNotNull(token);
-        Assert.assertNotNull(token.getApRequest());
+        assertThat(token).isNotNull();
+        assertThat(token.getApRequest()).isNotNull();
 
         KerberosTicket ticket = token.getApRequest().getTicket();
-        Assert.assertNotNull(ticket);
-        Assert.assertEquals("HTTP/server.test.domain.com", ticket.getServerPrincipalName());
-        Assert.assertEquals("DOMAIN.COM", ticket.getServerRealm());
-        Assert.assertEquals("user.test", ticket.getUserPrincipalName());
-        Assert.assertEquals("DOMAIN.COM", ticket.getUserRealm());
+        assertThat(ticket).isNotNull();
+        assertThat(ticket.getServerPrincipalName()).isEqualTo("HTTP/server.test.domain.com");
+        assertThat(ticket.getServerRealm()).isEqualTo("DOMAIN.COM");
+        assertThat(ticket.getUserPrincipalName()).isEqualTo("user.test");
+        assertThat(ticket.getUserRealm()).isEqualTo("DOMAIN.COM");
     }
 
     //@Test
     public void testDesTicket() throws Exception {
         KerberosToken token = new KerberosToken(desToken, desKey);
 
-        Assert.assertNotNull(token);
-        Assert.assertNotNull(token.getApRequest());
+        assertThat(token).isNotNull();
+        assertThat(token.getApRequest()).isNotNull();
 
         KerberosTicket ticket = token.getApRequest().getTicket();
-        Assert.assertNotNull(ticket);
-        Assert.assertEquals("HTTP/server.test.domain.com", ticket.getServerPrincipalName());
-        Assert.assertEquals("DOMAIN.COM", ticket.getServerRealm());
-        Assert.assertEquals("user.test@domain.com", ticket.getUserPrincipalName());
-        Assert.assertEquals("DOMAIN.COM", ticket.getUserRealm());
+        assertThat(ticket).isNotNull();
+        assertThat(ticket.getServerPrincipalName()).isEqualTo("HTTP/server.test.domain.com");
+        assertThat(ticket.getServerRealm()).isEqualTo("DOMAIN.COM");
+        assertThat(ticket.getUserPrincipalName()).isEqualTo("user.test@domain.com");
+        assertThat(ticket.getUserRealm()).isEqualTo("DOMAIN.COM");
     }
 
     @Test
@@ -125,15 +127,15 @@ public class TestKerberos {
         KerberosToken token = null;
         token = new KerberosToken(aes128Token, aes128Key);
 
-        Assert.assertNotNull(token);
-        Assert.assertNotNull(token.getApRequest());
+        assertThat(token).isNotNull();
+        assertThat(token.getApRequest()).isNotNull();
 
         KerberosTicket ticket = token.getApRequest().getTicket();
-        Assert.assertNotNull(ticket);
-        Assert.assertEquals("HTTP/server.test.domain.com", ticket.getServerPrincipalName());
-        Assert.assertEquals("DOMAIN.COM", ticket.getServerRealm());
-        Assert.assertEquals("user.test", ticket.getUserPrincipalName());
-        Assert.assertEquals("DOMAIN.COM", ticket.getUserRealm());
+        assertThat(ticket).isNotNull();
+        assertThat(ticket.getServerPrincipalName()).isEqualTo("HTTP/server.test.domain.com");
+        assertThat(ticket.getServerRealm()).isEqualTo("DOMAIN.COM");
+        assertThat(ticket.getUserPrincipalName()).isEqualTo("user.test");
+        assertThat(ticket.getUserRealm()).isEqualTo("DOMAIN.COM");
     }
 
     @Test
@@ -141,15 +143,15 @@ public class TestKerberos {
         KerberosToken token = null;
         token = new KerberosToken(aes256Token, aes256Key);
 
-        Assert.assertNotNull(token);
-        Assert.assertNotNull(token.getApRequest());
+        assertThat(token).isNotNull();
+        assertThat(token.getApRequest()).isNotNull();
 
         KerberosTicket ticket = token.getApRequest().getTicket();
-        Assert.assertNotNull(ticket);
-        Assert.assertEquals("HTTP/server.test.domain.com", ticket.getServerPrincipalName());
-        Assert.assertEquals("DOMAIN.COM", ticket.getServerRealm());
-        Assert.assertEquals("user.test", ticket.getUserPrincipalName());
-        Assert.assertEquals("DOMAIN.COM", ticket.getUserRealm());
+        assertThat(ticket).isNotNull();
+        assertThat(ticket.getServerPrincipalName()).isEqualTo("HTTP/server.test.domain.com");
+        assertThat(ticket.getServerRealm()).isEqualTo("DOMAIN.COM");
+        assertThat(ticket.getUserPrincipalName()).isEqualTo("user.test");
+        assertThat(ticket.getUserRealm()).isEqualTo("DOMAIN.COM");
     }
 
     @Test
@@ -157,10 +159,10 @@ public class TestKerberos {
         KerberosToken token = null;
         try {
             token = new KerberosToken(rc4Token, desKey);
-            Assert.fail("Should have thrown Exception.");
+            fail("Should have thrown Exception.");
         } catch(Exception e) {
-            Assert.assertNotNull(e);
-            Assert.assertNull(token);
+            assertThat(e).isNotNull();
+            assertThat(token).isNull();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java
index b3c0019..8c53d3a 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java
@@ -22,11 +22,13 @@ package org.apache.kerby.kerberos.kerb.codec.test;
 import org.apache.kerby.kerberos.kerb.codec.spnego.SpnegoConstants;
 import org.apache.kerby.kerberos.kerb.codec.spnego.SpnegoInitToken;
 import org.apache.kerby.kerberos.kerb.codec.spnego.SpnegoToken;
-import org.junit.Assert;
 
 import java.io.IOException;
 import java.io.InputStream;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Fail.fail;
+
 public class TestSpnego {
 
     private byte[] rc4Token;
@@ -67,15 +69,15 @@ public class TestSpnego {
         try {
             SpnegoToken spnegoToken = SpnegoToken.parse(rc4Token);
 
-            Assert.assertNotNull(spnegoToken);
-            Assert.assertTrue(spnegoToken instanceof SpnegoInitToken);
-            Assert.assertNotNull(spnegoToken.getMechanismToken());
-            Assert.assertTrue(spnegoToken.getMechanismToken().length < rc4Token.length);
-            Assert.assertNotNull(spnegoToken.getMechanism());
-            Assert.assertEquals(SpnegoConstants.LEGACY_KERBEROS_MECHANISM, spnegoToken.getMechanism());
+            assertThat(spnegoToken).isNotNull();
+            assertThat(spnegoToken instanceof SpnegoInitToken).isTrue();
+            assertThat(spnegoToken.getMechanismToken()).isNotNull();
+            assertThat(spnegoToken.getMechanismToken().length < rc4Token.length).isTrue();
+            assertThat(spnegoToken.getMechanism()).isNotNull();
+            assertThat(spnegoToken.getMechanism()).isEqualTo(SpnegoConstants.LEGACY_KERBEROS_MECHANISM);
         } catch(IOException e) {
             e.printStackTrace();
-            Assert.fail(e.getMessage());
+            fail(e.getMessage());
         }
     }
 
@@ -84,15 +86,15 @@ public class TestSpnego {
         try {
             SpnegoToken spnegoToken = SpnegoToken.parse(desToken);
 
-            Assert.assertNotNull(spnegoToken);
-            Assert.assertTrue(spnegoToken instanceof SpnegoInitToken);
-            Assert.assertNotNull(spnegoToken.getMechanismToken());
-            Assert.assertTrue(spnegoToken.getMechanismToken().length < desToken.length);
-            Assert.assertNotNull(spnegoToken.getMechanism());
-            Assert.assertEquals(SpnegoConstants.LEGACY_KERBEROS_MECHANISM, spnegoToken.getMechanism());
+            assertThat(spnegoToken).isNotNull();
+            assertThat(spnegoToken instanceof SpnegoInitToken).isTrue();
+            assertThat(spnegoToken.getMechanismToken()).isNotNull();
+            assertThat(spnegoToken.getMechanismToken().length < desToken.length).isTrue();
+            assertThat(spnegoToken.getMechanism()).isNotNull();
+            assertThat(spnegoToken.getMechanism()).isEqualTo(SpnegoConstants.LEGACY_KERBEROS_MECHANISM);
         } catch(IOException e) {
             e.printStackTrace();
-            Assert.fail(e.getMessage());
+            fail(e.getMessage());
         }
     }
 
@@ -101,15 +103,15 @@ public class TestSpnego {
         try {
             SpnegoToken spnegoToken = SpnegoToken.parse(aes128Token);
 
-            Assert.assertNotNull(spnegoToken);
-            Assert.assertTrue(spnegoToken instanceof SpnegoInitToken);
-            Assert.assertNotNull(spnegoToken.getMechanismToken());
-            Assert.assertTrue(spnegoToken.getMechanismToken().length < aes128Token.length);
-            Assert.assertNotNull(spnegoToken.getMechanism());
-            Assert.assertEquals(SpnegoConstants.LEGACY_KERBEROS_MECHANISM, spnegoToken.getMechanism());
+            assertThat(spnegoToken).isNotNull();
+            assertThat(spnegoToken instanceof SpnegoInitToken).isTrue();
+            assertThat(spnegoToken.getMechanismToken()).isNotNull();
+            assertThat(spnegoToken.getMechanismToken().length < aes128Token.length).isTrue();
+            assertThat(spnegoToken.getMechanism()).isNotNull();
+            assertThat(spnegoToken.getMechanism()).isEqualTo(SpnegoConstants.LEGACY_KERBEROS_MECHANISM);
         } catch(IOException e) {
             e.printStackTrace();
-            Assert.fail(e.getMessage());
+            fail(e.getMessage());
         }
     }
 
@@ -118,15 +120,15 @@ public class TestSpnego {
         try {
             SpnegoToken spnegoToken = SpnegoToken.parse(aes256Token);
 
-            Assert.assertNotNull(spnegoToken);
-            Assert.assertTrue(spnegoToken instanceof SpnegoInitToken);
-            Assert.assertNotNull(spnegoToken.getMechanismToken());
-            Assert.assertTrue(spnegoToken.getMechanismToken().length < aes256Token.length);
-            Assert.assertNotNull(spnegoToken.getMechanism());
-            Assert.assertEquals(SpnegoConstants.LEGACY_KERBEROS_MECHANISM, spnegoToken.getMechanism());
+            assertThat(spnegoToken).isNotNull();
+            assertThat(spnegoToken instanceof SpnegoInitToken).isTrue();
+            assertThat(spnegoToken.getMechanismToken()).isNotNull();
+            assertThat(spnegoToken.getMechanismToken().length < aes256Token.length).isTrue();
+            assertThat(spnegoToken.getMechanism()).isNotNull();
+            assertThat(spnegoToken.getMechanism()).isEqualTo(SpnegoConstants.LEGACY_KERBEROS_MECHANISM);
         } catch(IOException e) {
             e.printStackTrace();
-            Assert.fail(e.getMessage());
+            fail(e.getMessage());
         }
     }
 
@@ -135,10 +137,10 @@ public class TestSpnego {
         SpnegoToken spnegoToken = null;
         try {
             spnegoToken = SpnegoToken.parse(new byte[0]);
-            Assert.fail("Should have thrown DecodingException.");
+            fail("Should have thrown DecodingException.");
         } catch(IOException e) {
-            Assert.assertNotNull(e);
-            Assert.assertNull(spnegoToken);
+            assertThat(e).isNotNull();
+            assertThat(spnegoToken).isNull();
         }
     }
 
@@ -147,10 +149,10 @@ public class TestSpnego {
         SpnegoToken spnegoToken = null;
         try {
             spnegoToken = SpnegoToken.parse(corruptToken);
-            Assert.fail("Should have thrown DecodingException.");
+            fail("Should have thrown DecodingException.");
         } catch(IOException e) {
-            Assert.assertNotNull(e);
-            Assert.assertNull(spnegoToken);
+            assertThat(e).isNotNull();
+            assertThat(spnegoToken).isNull();
         }
     }
 
@@ -159,13 +161,13 @@ public class TestSpnego {
         SpnegoToken spnegoToken = null;
         try {
             spnegoToken = SpnegoToken.parse(null);
-            Assert.fail("Should have thrown NullPointerException.");
+            fail("Should have thrown NullPointerException.");
         } catch(IOException e) {
             e.printStackTrace();
-            Assert.fail(e.getMessage());
+            fail(e.getMessage());
         } catch(NullPointerException e) {
-            Assert.assertNotNull(e);
-            Assert.assertNull(spnegoToken);
+            assertThat(e).isNotNull();
+            assertThat(spnegoToken).isNull();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsRepCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsRepCodec.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsRepCodec.java
index 50cf0ab..57eaec0 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsRepCodec.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsRepCodec.java
@@ -24,11 +24,12 @@ import org.apache.kerby.kerberos.kerb.spec.common.NameType;
 import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
 import org.apache.kerby.kerberos.kerb.spec.kdc.TgsRep;
 import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * Test TgsRep message using a real 'correct' network packet captured from MS-AD to detective programming errors
  * and compatibility issues particularly regarding Kerberos crypto.
@@ -41,29 +42,27 @@ public class TestTgsRepCodec {
         TgsRep tgsRep = new TgsRep();
         tgsRep.decode(bytes);
 
-        Assert.assertEquals(5, tgsRep.getPvno());
-        Assert.assertEquals(KrbMessageType.TGS_REP, tgsRep.getMsgType());
-        Assert.assertEquals("DENYDC.COM", tgsRep.getCrealm());
+        assertThat(tgsRep.getPvno()).isEqualTo(5);
+        assertThat(tgsRep.getMsgType()).isEqualTo(KrbMessageType.TGS_REP);
+        assertThat(tgsRep.getCrealm()).isEqualTo("DENYDC.COM");
 
         PrincipalName cName = tgsRep.getCname();
-        Assert.assertEquals(NameType.NT_PRINCIPAL, cName.getNameType());
-        Assert.assertEquals(1, cName.getNameStrings().size());
-        Assert.assertEquals("des", cName.getNameStrings().get(0));
+        assertThat(cName.getNameType()).isEqualTo(NameType.NT_PRINCIPAL);
+        assertThat(cName.getNameStrings()).hasSize(1).contains("des");
 
         Ticket ticket = tgsRep.getTicket();
-        Assert.assertEquals(5, ticket.getTktvno());
-        Assert.assertEquals("DENYDC.COM", ticket.getRealm());
+        assertThat(ticket.getTktvno()).isEqualTo(5);
+        assertThat(ticket.getRealm()).isEqualTo("DENYDC.COM");
         PrincipalName sName = ticket.getSname();
-        Assert.assertEquals(NameType.NT_SRV_HST, sName.getNameType());
-        Assert.assertEquals(2, sName.getNameStrings().size());
-        Assert.assertEquals("host", sName.getNameStrings().get(0));
-        Assert.assertEquals("xp1.denydc.com", sName.getNameStrings().get(1));
+        assertThat(sName.getNameType()).isEqualTo(NameType.NT_SRV_HST);
+        assertThat(sName.getNameStrings()).hasSize(2)
+                .contains("host", "xp1.denydc.com");
         //FIXME
         //EncTicketPart encTicketPart = ticket.getEncPart();
-        //Assert.assertEquals(23, encTicketPart.getKey().getKeyType().getValue());
-        //Assert.assertEquals(2, encTicketPart.getKey().getKvno());
+        //assertThat(encTicketPart.getKey().getKeyType().getValue()).isEqualTo(23);
+        //assertThat(encTicketPart.getKey().getKvno()).isEqualTo(2);
 
         //EncKdcRepPart encKdcRepPart = tgsRep.getEncPart();
-        //Assert.assertEquals(3, encKdcRepPart.getKey().getKeyType().getValue());
+        //assertThat(encKdcRepPart.getKey().getKeyType().getValue()).isEqualTo(3);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsReqCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsReqCodec.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsReqCodec.java
index 02ee590..5334eb5 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsReqCodec.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestTgsReqCodec.java
@@ -28,7 +28,6 @@ import org.apache.kerby.kerberos.kerb.spec.kdc.TgsReq;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -38,6 +37,8 @@ import java.util.Date;
 import java.util.List;
 import java.util.SimpleTimeZone;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * Test TgsReq message using a real 'correct' network packet captured from MS-AD to detective programming errors
  * and compatibility issues particularly regarding Kerberos crypto.
@@ -50,43 +51,42 @@ public class TestTgsReqCodec {
         TgsReq tgsReq = new TgsReq();
         tgsReq.decode(bytes);
 
-        Assert.assertEquals(5, tgsReq.getPvno());
-        Assert.assertEquals(KrbMessageType.TGS_REQ, tgsReq.getMsgType());
+        assertThat(tgsReq.getPvno()).isEqualTo(5);
+        assertThat(tgsReq.getMsgType()).isEqualTo(KrbMessageType.TGS_REQ);
 
         PaData paData = tgsReq.getPaData();
-        Assert.assertEquals(1, paData.getElements().size());
+        assertThat(paData.getElements()).hasSize(1);
         PaDataEntry entry = paData.getElements().iterator().next();
-        Assert.assertEquals(PaDataType.TGS_REQ, entry.getPaDataType());
+        assertThat(entry.getPaDataType()).isEqualTo(PaDataType.TGS_REQ);
 
         //request body
         KdcReqBody body = tgsReq.getReqBody();
-        Assert.assertEquals(0, body.getKdcOptions().getPadding());
+        assertThat(body.getKdcOptions().getPadding()).isEqualTo(0);
         byte[] kdcOptionsValue = {64, (byte) 128, 0, 0};
-        Assert.assertArrayEquals(kdcOptionsValue, body.getKdcOptions().getValue());
+        assertThat(body.getKdcOptions().getValue()).isEqualTo(kdcOptionsValue);
 
-        Assert.assertEquals("DENYDC.COM", body.getRealm());
+        assertThat(body.getRealm()).isEqualTo("DENYDC.COM");
 
         PrincipalName sName = body.getSname();
-        Assert.assertEquals(NameType.NT_SRV_HST, sName.getNameType());
-        Assert.assertEquals(2, sName.getNameStrings().size());
-        Assert.assertEquals("host", sName.getNameStrings().get(0));
-        Assert.assertEquals("xp1.denydc.com", sName.getNameStrings().get(1));
+        assertThat(sName.getNameType()).isEqualTo(NameType.NT_SRV_HST);
+        assertThat(sName.getNameStrings()).hasSize(2)
+                .contains("host", "xp1.denydc.com");
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
         sdf.setTimeZone(new SimpleTimeZone(0, "Z"));
         Date date = sdf.parse("20370913024805");
-        Assert.assertEquals(date.getTime(), body.getTill().getTime());
+        assertThat(body.getTill().getTime()).isEqualTo(date.getTime());
 
-        Assert.assertEquals(197296424, body.getNonce());
+        assertThat(body.getNonce()).isEqualTo(197296424);
 
         List<EncryptionType> eTypes = body.getEtypes();
-        Assert.assertEquals(7, eTypes.size());
-        Assert.assertEquals(0x0017, eTypes.get(0).getValue());
-        //Assert.assertEquals(-133, eTypes.get(1).getValue());//FIXME
-        //Assert.assertEquals(-128, eTypes.get(2).getValue());//FIXME
-        Assert.assertEquals(0x0003, eTypes.get(3).getValue());
-        Assert.assertEquals(0x0001, eTypes.get(4).getValue());
-        Assert.assertEquals(0x0018, eTypes.get(5).getValue());
-        //Assert.assertEquals(-135, eTypes.get(6).getValue());//FIXME
+        assertThat(eTypes).hasSize(7);
+        assertThat(eTypes.get(0).getValue()).isEqualTo(0x0017);
+        //assertThat(eTypes.get(1).getValue()).isEqualTo(-133);//FIXME
+        //assertThat(eTypes.get(2).getValue()).isEqualTo(-128);//FIXME
+        assertThat(eTypes.get(3).getValue()).isEqualTo(0x0003);
+        assertThat(eTypes.get(4).getValue()).isEqualTo(0x0001);
+        assertThat(eTypes.get(5).getValue()).isEqualTo(0x0018);
+        //assertThat(eTypes.get(6).getValue()).isEqualTo(-135);//FIXME
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java
index 3a7ffe9..a84652d 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java
@@ -24,7 +24,6 @@ import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Camellia128Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Camellia256Provider;
 import org.apache.kerby.util.HexUtil;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.BufferedReader;
@@ -35,6 +34,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class CamelliaEncTest {
 
     private List<String> outputs = new ArrayList<String>();
@@ -69,8 +70,7 @@ public class CamelliaEncTest {
         outputs.add("==========");
 
         List<String> newLines = expectedLines;
-        Assert.assertEquals("Comparing new lines with expected lines",
-                expectedLines, outputs);
+        assertThat(expectedLines).as("Comparing new lines with expected lines").isEqualTo(outputs);
     }
 
     private void testWith(int keySize) throws KrbException {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java
index 3b21e7a..796cc11 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java
@@ -26,7 +26,7 @@ import org.apache.kerby.kerberos.kerb.spec.common.KeyUsage;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 
-import static org.junit.Assert.fail;
+import static org.assertj.core.api.Assertions.fail;
 
 /**
  * These are to test the checksums of good answers, and the checksums

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
index 049b578..30af03f 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
@@ -23,9 +23,10 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Camellia128Provider;
 import org.apache.kerby.util.HexUtil;
-import org.junit.Assert;
 import org.junit.Test;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class CmacTest {
 
     /* All examples use the following Camellia-128 key. */
@@ -68,18 +69,18 @@ public class CmacTest {
 
         // test 1
         result = Cmac.cmac(encProvider, key, input, 0, 0);
-        Assert.assertArrayEquals("Test 1", HexUtil.hex2bytes(cmac1), result);
+        assertThat(result).as("Test 1").isEqualTo(HexUtil.hex2bytes(cmac1));
 
         // test 2
         result = Cmac.cmac(encProvider, key, input, 0, 16);
-        Assert.assertArrayEquals("Test 2", HexUtil.hex2bytes(cmac2), result);
+        assertThat(result).as("Test 2").isEqualTo(HexUtil.hex2bytes(cmac2));
 
         // test 3
         result = Cmac.cmac(encProvider, key, input, 0, 40);
-        Assert.assertArrayEquals("Test 3", HexUtil.hex2bytes(cmac3), result);
+        assertThat(result).as("Test 3").isEqualTo(HexUtil.hex2bytes(cmac3));
 
         // test 4
         result = Cmac.cmac(encProvider, key, input, 0, 64);
-        Assert.assertArrayEquals("Test 4", HexUtil.hex2bytes(cmac4), result);
+        assertThat(result).as("Test 4").isEqualTo(HexUtil.hex2bytes(cmac4));
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java
index 59879d7..e8de993 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java
@@ -20,9 +20,10 @@
 package org.apache.kerby.kerberos.kerb.crypto;
 
 import org.apache.kerby.util.HexUtil;
-import org.junit.Assert;
 import org.junit.Test;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class Crc32Test {
 
     static class TestCase {
@@ -108,7 +109,7 @@ public class Crc32Test {
             }
         }
 
-        Assert.assertTrue(isOk);
+        assertThat(isOk).isTrue();
     }
 
     private boolean testWith(TestCase testCase) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java
index 8d0c5ca..6f766ec 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java
@@ -24,8 +24,9 @@ import org.apache.kerby.kerberos.kerb.spec.common.EncryptionType;
 import org.apache.kerby.kerberos.kerb.spec.common.KeyUsage;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
 
 /**
  * Decryption test with known ciphertexts.
@@ -73,14 +74,14 @@ public class DecryptionTest {
      * Perform all the checks for a testcase
      */
     private void performTestDecrypt(TestCase testCase) {
-        //assertTrue(EncryptionHandler.isImplemented(testCase.encType));
+        //assertThat(EncryptionHandler.isImplemented(testCase.encType)).isTrue();
         if (! EncryptionHandler.isImplemented(testCase.encType)) {
             System.err.println("Not implemented yet: " + testCase.encType.getDisplayName());
             return;
         }
 
         try {
-            assertTrue(testDecrypt(testCase));
+            assertThat(testDecrypt(testCase)).isTrue();
         } catch (Exception e) {
             fail(e.getMessage());
         }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DesKeyMakerTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DesKeyMakerTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DesKeyMakerTest.java
index 0c5f9c2..f117fcd 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DesKeyMakerTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DesKeyMakerTest.java
@@ -2,7 +2,8 @@ package org.apache.kerby.kerberos.kerb.crypto;
 
 import org.apache.kerby.kerberos.kerb.crypto.key.DesKeyMaker;
 import org.apache.kerby.util.HexUtil;
-import org.junit.Assert;
+
+import static org.assertj.core.api.Assertions.assertThat;
 
 /**
  * This is just for my experimental tweaking, so pleas bear it.
@@ -37,15 +38,15 @@ public class DesKeyMakerTest {
     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);
+        assertThat(value).as("PasswdSalt bytes").isEqualTo(expectedValue);
 
         expectedValue = HexUtil.hex2bytes(tc.fanFoldedKey);
         value = DesKeyMaker.fanFold(tc.passwd, tc.salt, null);
-        Assert.assertArrayEquals("FanFold result", expectedValue, value);
+        assertThat(value).as("FanFold result").isEqualTo(expectedValue);
 
         expectedValue = HexUtil.hex2bytes(tc.intermediateKey);
         value = DesKeyMaker.intermediateKey(value);
-        Assert.assertArrayEquals("IntermediateKey result", expectedValue, value);
+        assertThat(value).as("IntermediateKey result").isEqualTo(expectedValue);
 
         // finalKey check ignored here and it's done in String2keyTest.
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
index eb04804..e2932b5 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
@@ -26,11 +26,12 @@ import org.apache.kerby.kerberos.kerb.crypto.key.Des3KeyMaker;
 import org.apache.kerby.kerberos.kerb.crypto.key.DkKeyMaker;
 import org.apache.kerby.kerberos.kerb.spec.common.EncryptionType;
 import org.apache.kerby.util.HexUtil;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.util.Arrays;
 
+import static org.assertj.core.api.Assertions.fail;
+
 /**
  * Key derivation test with known values.
  */
@@ -205,7 +206,7 @@ public class KeyDeriveTest {
         }
 
         if (!overallResult) {
-            Assert.fail();
+            fail(null);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java
index 192a614..3fbe38f 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java
@@ -27,8 +27,8 @@ import org.junit.Test;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
 
 /**
  * By ref. MIT krb5 t_str2key.c and RFC3961 test vectors
@@ -552,14 +552,14 @@ public class String2keyTest {
      * Perform all the checks for a testcase
      */
     private void performTest(TestCase testCase) {
-        //assertTrue(EncryptionHandler.isImplemented(testCase.encType));
+        //assertThat(EncryptionHandler.isImplemented(testCase.encType)).isTrue();
         if (! EncryptionHandler.isImplemented(testCase.encType)) {
             System.err.println("Not implemented yet: " + testCase.encType.getDisplayName());
             return;
         }
 
         try {
-            assertTrue(testWith(testCase));
+            assertThat(testWith(testCase)).isTrue();
         } catch (Exception e) {
             fail(e.getMessage());
         }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
index 81c0b3a..f16fa08 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
@@ -21,9 +21,10 @@ package org.apache.kerby.kerberos.kerb.server;
 
 import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
-import org.junit.Assert;
 import org.junit.Test;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class KdcTest extends KdcTestBase {
 
     private String password = "123456";
@@ -37,13 +38,13 @@ public class KdcTest extends KdcTestBase {
     @Test
     public void testKdc() throws Exception {
         kdcServer.start();
-        Assert.assertTrue(kdcServer.isStarted());
+        assertThat(kdcServer.isStarted()).isTrue();
 
         krbClnt.init();
         TgtTicket tgt = krbClnt.requestTgtTicket(clientPrincipal, password, null);
-        Assert.assertNotNull(tgt);
+        assertThat(tgt).isNotNull();
 
         ServiceTicket tkt = krbClnt.requestServiceTicket(tgt, serverPrincipal, null);
-        Assert.assertNotNull(tkt);
+        assertThat(tkt).isNotNull();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithCertKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithCertKdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithCertKdcTest.java
index cad84e1..cfac9d0 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithCertKdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithCertKdcTest.java
@@ -23,7 +23,6 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.apache.kerby.pki.Pkix;
-import org.junit.Assert;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -31,6 +30,8 @@ import java.security.GeneralSecurityException;
 import java.security.PrivateKey;
 import java.security.cert.Certificate;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  openssl genrsa -out cakey.pem 2048
  openssl req -key cakey.pem -new -x509 -out cacert.pem -days 3650
@@ -60,23 +61,23 @@ public class WithCertKdcTest extends KdcTestBase {
 
     //@Test
     public void testKdc() throws Exception {
-        Assert.assertNotNull(userCert);
+        assertThat(userCert).isNotNull();
 
         kdcServer.start();
-        Assert.assertTrue(kdcServer.isStarted());
+        assertThat(kdcServer.isStarted()).isTrue();
         krbClnt.init();
 
         TgtTicket tgt = null;
         try {
             tgt = krbClnt.requestTgtTicket(clientPrincipal, userCert, userKey, null);
         } catch (KrbException te) {
-            Assert.assertTrue(te.getMessage().contains("timeout"));
+            assertThat(te.getMessage().contains("timeout")).isTrue();
             return;
         }
-        Assert.assertNull(tgt);
+        assertThat(tgt).isNull();
 
         ServiceTicket tkt = krbClnt.requestServiceTicket(tgt, serverPrincipal, null);
-        Assert.assertNull(tkt);
+        assertThat(tkt).isNull();
     }
 
     private void loadCredentials() throws IOException, GeneralSecurityException {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java
index 805d0c7..b0b0489 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java
@@ -23,7 +23,8 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.apache.kerby.token.KerbToken;
-import org.junit.Assert;
+
+import static org.assertj.core.api.Assertions.assertThat;
 
 public class WithTokenKdcTest extends KdcTestBase {
 
@@ -38,19 +39,19 @@ public class WithTokenKdcTest extends KdcTestBase {
     //@Test
     public void testKdc() throws Exception {
         kdcServer.start();
-        Assert.assertTrue(kdcServer.isStarted());
+        assertThat(kdcServer.isStarted()).isTrue();
         krbClnt.init();
 
         TgtTicket tgt = null;
         try {
             tgt = krbClnt.requestTgtTicket(clientPrincipal, token, null);
         } catch (KrbException te) {
-            Assert.assertTrue(te.getMessage().contains("timeout"));
+            assertThat(te.getMessage().contains("timeout")).isTrue();
             return;
         }
-        Assert.assertNull(tgt);
+        assertThat(tgt).isNull();
 
         ServiceTicket tkt = krbClnt.requestServiceTicket(tgt, serverPrincipal, null);
-        Assert.assertNull(tkt);
+        assertThat(tkt).isNull();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java b/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
index ab3da52..7f00a3a 100644
--- a/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
+++ b/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
@@ -20,7 +20,6 @@
 package org.apache.kerby.kerberos.kerb.server;
 
 import org.apache.kerby.config.Conf;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.File;
@@ -28,6 +27,8 @@ import java.io.IOException;
 import java.net.URISyntaxException;
 import java.net.URL;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class TestKdcConfigLoad {
 
     @Test
@@ -39,21 +40,21 @@ public class TestKdcConfigLoad {
         Conf conf = krbConfig.getConf();
         conf.addIniConfig(confFile);
 
-        Assert.assertEquals("FILE:/var/log/krb5libs.log", krbConfig.getDefaultLoggingLocation());
-        Assert.assertEquals("FILE:/var/log/krb5kdc.log", krbConfig.getKdcLoggingLocation());
-        Assert.assertEquals("FILE:/var/log/kadmind.log", krbConfig.getAdminLoggingLocation());
+        assertThat(krbConfig.getDefaultLoggingLocation()).isEqualTo("FILE:/var/log/krb5libs.log");
+        assertThat(krbConfig.getKdcLoggingLocation()).isEqualTo("FILE:/var/log/krb5kdc.log");
+        assertThat(krbConfig.getAdminLoggingLocation()).isEqualTo("FILE:/var/log/kadmind.log");
 
-        Assert.assertEquals(88, krbConfig.getKdcUdpPort());
-        Assert.assertEquals(8014, krbConfig.getKdcTcpPort());
-        Assert.assertTrue(krbConfig.isRestrictAnonymousToTgt());
-        Assert.assertEquals(4096, krbConfig.getKdcMaxDgramReplySize());
+        assertThat(krbConfig.getKdcUdpPort()).isEqualTo(88);
+        assertThat(krbConfig.getKdcTcpPort()).isEqualTo(8014);
+        assertThat(krbConfig.isRestrictAnonymousToTgt()).isTrue();
+        assertThat(krbConfig.getKdcMaxDgramReplySize()).isEqualTo(4096);
 
         /* will be moved to LdapLdentityBackend module
         String[] ldapContainerDn = krbConfig.getLdapKerberosContainerDn();
-        Assert.assertEquals(3, ldapContainerDn.length);
-        Assert.assertEquals("cn=krbcontainer", ldapContainerDn[0]);
-        Assert.assertEquals("dc=mit", ldapContainerDn[1]);
-        Assert.assertEquals("dc=edu", ldapContainerDn[2]);
+        assertThat(ldapContainerDn.length).isEqualTo(3);
+        assertThat(ldapContainerDn[0]).isEqualTo("cn=krbcontainer");
+        assertThat(ldapContainerDn[1]).isEqualTo("dc=mit");
+        assertThat(ldapContainerDn[2]).isEqualTo("dc=edu");
         */
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/CcacheTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/CcacheTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/CcacheTest.java
index bd5a685..95c8059 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/CcacheTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/CcacheTest.java
@@ -21,13 +21,14 @@ package org.apache.kerby.kerberos.kerb.util;
 
 import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
 import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
 import java.io.IOException;
 import java.io.InputStream;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /*
 Default principal: drankye@SH.INTEL.COM
 
@@ -48,10 +49,10 @@ public class CcacheTest {
 
     @Test
     public void testCc() {
-        Assert.assertNotNull(cc);
+        assertThat(cc).isNotNull();
 
         PrincipalName princ = cc.getPrimaryPrincipal();
-        Assert.assertNotNull(princ);
-        Assert.assertTrue(princ.getName().equals("drankye@SH.INTEL.COM"));
+        assertThat(princ).isNotNull();
+        assertThat(princ.getName().equals("drankye@SH.INTEL.COM")).isTrue();
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
index e632839..bbf7f93 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
@@ -27,7 +27,6 @@ import org.apache.kerby.kerberos.kerb.spec.common.*;
 import org.apache.kerby.kerberos.kerb.spec.ticket.EncTicketPart;
 import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
 import org.apache.kerby.kerberos.kerb.codec.KrbCodec;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -36,6 +35,8 @@ import java.io.InputStream;
 import java.util.Arrays;
 import java.util.List;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /*
 The principal keys for krbtgt/SH.INTEL.COM@SH.INTEL.COM
 
@@ -112,10 +113,10 @@ public class EncryptionTest {
 
         byte[] decrypted = EncryptionHandler.decrypt(
                 ticket.getEncryptedEncPart(), key, KeyUsage.KDC_REP_TICKET);
-        Assert.assertNotNull(decrypted);
+        assertThat(decrypted).isNotNull();
 
         EncTicketPart encPart = KrbCodec.decode(decrypted, EncTicketPart.class);
-        Assert.assertNotNull(encPart);
+        assertThat(encPart).isNotNull();
         ticket.setEncPart(encPart);
 
         EncryptedData encrypted = EncryptionHandler.encrypt(

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
index c32854f..52bd024 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
@@ -26,7 +26,6 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.spec.common.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.spec.common.EncryptionType;
 import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -34,6 +33,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 
+import static org.assertj.core.api.Assertions.fail;
+
 /*
 The principal was created with password '123456'
 KVNO Principal
@@ -72,7 +73,7 @@ public class KeysTest {
                 genKey = EncryptionHandler.string2Key(principal.getName(),
                         TEST_PASSWORD, keyType);
                 if(! ke.getKey().equals(genKey)) {
-                    Assert.fail("str2key failed for key type: " + keyType.getName());
+                    fail("str2key failed for key type: " + keyType.getName());
                     //System.err.println("str2key failed for key type: " + keyType.getName());
                 }
             }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java
index 01cdaed..9c48c3b 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java
@@ -22,7 +22,6 @@ package org.apache.kerby.kerberos.kerb.util;
 import org.apache.kerby.kerberos.kerb.keytab.Keytab;
 import org.apache.kerby.kerberos.kerb.keytab.KeytabEntry;
 import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -30,6 +29,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /*
 The principal was created with password '123456'
 
@@ -57,13 +58,13 @@ public class KeytabTest {
 
     @Test
     public void testKeytab() {
-        Assert.assertNotNull(keytab);
+        assertThat(keytab).isNotNull();
 
         List<PrincipalName> principals = keytab.getPrincipals();
         PrincipalName principal = principals.get(0);
         List<KeytabEntry> entries = keytab.getKeytabEntries(principal);
         for (KeytabEntry ke : entries) {
-            Assert.assertTrue(ke.getKvno() == 1);
+            assertThat(ke.getKvno() == 1).isTrue();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4a65c583/kerby-kerb/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-kerb/pom.xml b/kerby-kerb/pom.xml
index 048736b..2ec1b40 100644
--- a/kerby-kerb/pom.xml
+++ b/kerby-kerb/pom.xml
@@ -44,5 +44,11 @@
       <artifactId>junit</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>${assertj.version}</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>


[07/30] directory-kerberos git commit: o Added the missing Javadoc o Added a missing Tag (0) which is used when BER deconding TLV when using undefined length

Posted by dr...@apache.org.
o Added the missing Javadoc
o Added a missing Tag (0) which is used when BER deconding TLV when
using undefined length

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

Branch: refs/heads/installation
Commit: 989a56fc9dcd1ee903ae6229bf5ace13b92172f0
Parents: 7c8dc37
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Sun Feb 1 10:11:39 2015 +0100
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Sun Feb 1 10:11:39 2015 +0100

----------------------------------------------------------------------
 .../org/apache/kerby/asn1/UniversalTag.java     | 36 +++++++++++++++-----
 1 file changed, 27 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/989a56fc/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
index 0eb5c78..7bc1868 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
@@ -19,25 +19,30 @@
  */
 package org.apache.kerby.asn1;
 
-// Optimized by Emmanuel
+/**
+ * An enumeration for every ASN.1 UNIVERSAL type.
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
 public enum UniversalTag {
     UNKNOWN             (-1),
-    CHOICE              (-2), // Only for internal using
+    CHOICE              (-2),   // Only for internal using
+    BER_UNDEFINED_LENGTH(0),    // Used to encode undefined length with BER
     BOOLEAN             (0x01),
     INTEGER             (0x02),
     BIT_STRING          (0x03),
     OCTET_STRING        (0x04),
     NULL                (0x05),
     OBJECT_IDENTIFIER   (0x06),
-    OBJECT_DESCRIPTOR   (0x07),     // Added for completness
+    OBJECT_DESCRIPTOR   (0x07),
     EXTERNAL            (0x08),
     REAL                (0x09),
     ENUMERATED          (0x0a),
-    EMBEDDED_PDV        (0x0b),     // Added for completness
+    EMBEDDED_PDV        (0x0b),
     UTF8_STRING         (0x0c),
-    RELATIVE_OID        (0x0d),     // Added for completness
-    RESERVED_14         (0x0e),     // Added for completness
-    RESERVED_15         (0x0f),     // Added for completness
+    RELATIVE_OID        (0x0d),
+    RESERVED_14         (0x0e),
+    RESERVED_15         (0x0f),
     SEQUENCE            (0x10),
     SEQUENCE_OF         (0x10),
     SET                 (0x11),
@@ -53,22 +58,35 @@ public enum UniversalTag {
     VISIBLE_STRING      (0x1a),
     GENERAL_STRING      (0x1b),
     UNIVERSAL_STRING    (0x1c),
-    CHARACTER_STRING    (0x1d),     // Added for completness
+    CHARACTER_STRING    (0x1d),
     BMP_STRING          (0x1e),
-    RESERVED_31         (0x1f);     // Added for completness
+    RESERVED_31         (0x1f);
 
+    /** The tag value */
     private int value;
 
+    /**
+     * Create an instance of this class
+     */
     private UniversalTag(int value) {
         this.value = value;
     }
 
+    /**
+     * @return The associated tag value
+     */
     public int getValue() {
         return value;
     }
 
+    /**
+     * Retrieve the UniversalTag associated with a given value
+     * @param value The integer value
+     * @return The associated UniversalTag
+     */
     public static UniversalTag fromValue(int value) {
         switch (value) {
+            case 0x00 : return BER_UNDEFINED_LENGTH;
             case 0x01 : return BOOLEAN;
             case 0x02 : return INTEGER;
             case 0x03 : return BIT_STRING;


[10/30] directory-kerberos git commit: o Added the missing Javadoc for this class o Speedup for the fromValue() method

Posted by dr...@apache.org.
o Added the missing Javadoc for this class
o Speedup for the fromValue() method

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

Branch: refs/heads/installation
Commit: 7dd9cf3ddc6e2e9d27360dc5d078f8bbe910f0f5
Parents: 68b5f1b
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Sun Feb 1 13:17:55 2015 +0100
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Sun Feb 1 13:17:55 2015 +0100

----------------------------------------------------------------------
 .../org/apache/kerby/asn1/EncodingOption.java   | 84 ++++++++++++++++----
 1 file changed, 69 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7dd9cf3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
index 6bc8351..87a6f27 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
@@ -19,6 +19,11 @@
  */
 package org.apache.kerby.asn1;
 
+/**
+ * An enum used to represent the various Encoding options.
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
 public enum EncodingOption
 {
     UNKNOWN(-1),
@@ -32,65 +37,114 @@ public enum EncodingOption
     DER(8),
     CER(9);
 
+    /** 
+     * A mask to determinate if a Tag is CONSTRUCTED. The fifth bit should be set to 1 if
+     * the type is constructed (0010-0000).
+     */
+    public static int CONSTRUCTED_FLAG = 0x20;
+
+    /** The associated value */
     private int value;
 
+    /** Create a instance of EncodingOption */
     private EncodingOption(int value) {
         this.value = value;
     }
 
-    public static int CONSTRUCTED_FLAG = 0x20;
-
-    public static boolean isConstructed(int tag) {
-        return (tag & CONSTRUCTED_FLAG) != 0;
-    }
 
+    /**
+     * @return The integer value associated with the ENcodingOption instance
+     */
     public int getValue() {
         return value;
     }
 
+    public static boolean isConstructed(int tag) {
+        return (tag & CONSTRUCTED_FLAG) != 0;
+    }
+
+    /**
+     * Tells if the EncodingOption is PRIMITIVE
+     * 
+     * @return true if using PRIMITIVE, false otherwise
+     */
     public boolean isPrimitive() {
         return this == PRIMITIVE;
     }
 
+    /**
+     * Tells if the EncodingOption is for an encoded type (CONSTRUCTED, CONSTRUCTED_DEFLEN
+     * or CONSTRUCTED_INDEFLEN)
+     * 
+     * @return true if the EncodingOption is CONSTRUCTED, false otherwise
+     */
     public boolean isConstructed() {
         return this == CONSTRUCTED || this == CONSTRUCTED_DEFLEN || this == CONSTRUCTED_INDEFLEN;
     }
 
+    /**
+     * Tells if the EncodingOption is IMPLICIT
+     * 
+     * @return true if using IMPLICIT, false otherwise
+     */
     public boolean isImplicit() {
         return this == IMPLICIT;
     }
 
+    /**
+     * Tells if the EncodingOption is EXPLICIT
+     * 
+     * @return true if using EXPLICIT, false otherwise
+     */
     public boolean isExplicit() {
         return this == EXPLICIT;
     }
 
     /**
-     * Is DER encoding ?
-     * @return true if using DER otherwise false
+     * Tells if the EncodingOption is DER
+     * 
+     * @return true if using DER, false otherwise
      */
     public boolean isDer() {
         return this == DER;
     }
 
+    /**
+     * Tells if the EncodingOption is CER
+     * 
+     * @return true if using CER, false otherwise
+     */
     public boolean isCer() {
         return this == CER;
     }
 
     /**
-     * Is BER encoding ?
-     * @return true if using BER otherwise false
+     * Tells if the EncodingOption is BER
+     * 
+     * @return true if using BER, false otherwise
      */
     public boolean isBer() {
         return this == BER;
     }
 
+    
+    /**
+     * Get the EncodingOption given an interger value
+     * @param value The value to translate
+     * @return The associated EncodingOption
+     */
     public static EncodingOption fromValue(int value) {
-        for (EncodingOption e : values()) {
-            if (e.getValue() == value) {
-                return (EncodingOption) e;
-            }
+        switch (value) {
+            case 1 : return PRIMITIVE;
+            case 2 : return CONSTRUCTED;
+            case 3 : return CONSTRUCTED_DEFLEN;
+            case 4 : return CONSTRUCTED_INDEFLEN;
+            case 5 : return IMPLICIT;
+            case 6 : return EXPLICIT;
+            case 7 : return BER;
+            case 8 : return DER;
+            case 9 : return CER;
+            default : return UNKNOWN;
         }
-
-        return UNKNOWN;
     }
 }


[13/30] directory-kerberos git commit: Cleaned some bit and refactored some codes in kerb-crypto

Posted by dr...@apache.org.
Cleaned some bit and refactored some codes in kerb-crypto


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

Branch: refs/heads/installation
Commit: f504a1733b05a43e18f57b1424bff3c9d943acd5
Parents: 7dd9cf3
Author: Drankye <dr...@gmail.com>
Authored: Mon Feb 2 04:51:44 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Mon Feb 2 04:51:44 2015 +0800

----------------------------------------------------------------------
 .../kerby/kerberos/kerb/client/KrbContext.java  |   2 +-
 .../kerb/crypto/AbstractCryptoTypeHandler.java  |   3 +-
 .../kerby/kerberos/kerb/crypto/BytesUtil.java   | 183 --------
 .../kerby/kerberos/kerb/crypto/Camellia.java    | 250 -----------
 .../kerby/kerberos/kerb/crypto/CamelliaKey.java | 433 -------------------
 .../kerberos/kerb/crypto/CheckSumHandler.java   |  14 +-
 .../apache/kerby/kerberos/kerb/crypto/Cmac.java | 178 --------
 .../kerby/kerberos/kerb/crypto/Confounder.java  |  33 --
 .../kerby/kerberos/kerb/crypto/Crc32.java       |  78 ----
 .../apache/kerby/kerberos/kerb/crypto/Des.java  |  84 ----
 .../kerberos/kerb/crypto/EncryptionHandler.java |  21 +-
 .../apache/kerby/kerberos/kerb/crypto/Hmac.java |  82 ----
 .../apache/kerby/kerberos/kerb/crypto/Md4.java  | 338 ---------------
 .../kerby/kerberos/kerb/crypto/Nfold.java       | 102 -----
 .../kerby/kerberos/kerb/crypto/Nonce.java       |  32 --
 .../kerby/kerberos/kerb/crypto/Pbkdf.java       |  40 --
 .../kerby/kerberos/kerb/crypto/Random.java      |  33 --
 .../apache/kerby/kerberos/kerb/crypto/Rc4.java  |  63 ---
 .../cksum/AbstractCheckSumTypeHandler.java      |   9 +-
 .../cksum/AbstractKeyedCheckSumTypeHandler.java |   6 +-
 .../kerb/crypto/cksum/CmacKcCheckSum.java       |   2 +-
 .../crypto/cksum/ConfounderedDesCheckSum.java   |   2 +-
 .../kerb/crypto/cksum/HashProvider.java         |   7 +-
 .../kerb/crypto/cksum/HmacKcCheckSum.java       |   2 +-
 .../kerb/crypto/cksum/HmacMd5Rc4CheckSum.java   |   4 +-
 .../kerberos/kerb/crypto/cksum/KcCheckSum.java  |   5 +-
 .../kerb/crypto/cksum/Md5HmacRc4CheckSum.java   |   5 +-
 .../crypto/cksum/provider/Crc32Provider.java    |   2 +-
 .../kerb/crypto/cksum/provider/Md4Provider.java |   2 +-
 .../kerberos/kerb/crypto/enc/DesCbcEnc.java     |   2 +-
 .../kerb/crypto/enc/EncryptProvider.java        |  10 +-
 .../kerberos/kerb/crypto/enc/KeKiCmacEnc.java   |   2 +-
 .../kerby/kerberos/kerb/crypto/enc/KeKiEnc.java |   4 +-
 .../kerb/crypto/enc/KeKiHmacSha1Enc.java        |   2 +-
 .../kerberos/kerb/crypto/enc/Rc4HmacEnc.java    |   8 +-
 .../enc/provider/AbstractEncryptProvider.java   |  14 -
 .../crypto/enc/provider/CamelliaProvider.java   |   2 +-
 .../kerb/crypto/key/AbstractKeyMaker.java       |   2 +-
 .../kerberos/kerb/crypto/key/AesKeyMaker.java   |   4 +-
 .../kerb/crypto/key/CamelliaKeyMaker.java       |   8 +-
 .../kerberos/kerb/crypto/key/Des3KeyMaker.java  |   4 +-
 .../kerberos/kerb/crypto/key/DesKeyMaker.java   |   4 +-
 .../kerberos/kerb/crypto/key/DkKeyMaker.java    |   2 +-
 .../kerberos/kerb/crypto/util/BytesUtil.java    | 183 ++++++++
 .../kerberos/kerb/crypto/util/Camellia.java     | 250 +++++++++++
 .../kerberos/kerb/crypto/util/CamelliaKey.java  | 433 +++++++++++++++++++
 .../kerby/kerberos/kerb/crypto/util/Cmac.java   | 178 ++++++++
 .../kerberos/kerb/crypto/util/Confounder.java   |  33 ++
 .../kerby/kerberos/kerb/crypto/util/Crc32.java  |  78 ++++
 .../kerby/kerberos/kerb/crypto/util/Des.java    |  84 ++++
 .../kerby/kerberos/kerb/crypto/util/Hmac.java   |  82 ++++
 .../kerby/kerberos/kerb/crypto/util/Md4.java    | 338 +++++++++++++++
 .../kerby/kerberos/kerb/crypto/util/Nfold.java  | 102 +++++
 .../kerby/kerberos/kerb/crypto/util/Nonce.java  |  32 ++
 .../kerby/kerberos/kerb/crypto/util/Pbkdf.java  |  40 ++
 .../kerby/kerberos/kerb/crypto/util/Random.java |  33 ++
 .../kerby/kerberos/kerb/crypto/util/Rc4.java    |  63 +++
 .../src/main/resources/kdc-krb5.conf            |  25 --
 .../kerb-crypto/src/main/resources/kdc.ldiff    |  46 --
 .../kerby/kerberos/kerb/crypto/CmacTest.java    |   1 +
 .../kerby/kerberos/kerb/crypto/Crc32Test.java   |   1 +
 61 files changed, 2017 insertions(+), 2068 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
index 279c486..12b155f 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.client;
 
 import org.apache.kerby.kerberos.kerb.client.preauth.PreauthHandler;
-import org.apache.kerby.kerberos.kerb.crypto.Nonce;
+import org.apache.kerby.kerberos.kerb.crypto.util.Nonce;
 
 public class KrbContext {
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java
index 76d6a61..71103c5 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java
@@ -49,7 +49,8 @@ public abstract class AbstractCryptoTypeHandler implements CryptoTypeHandler {
         return Arrays.equals(cksum1, cksum2);
     }
 
-    protected static boolean checksumEqual(byte[] cksum1, byte[] cksum2, int cksum2Start, int len) {
+    protected static boolean checksumEqual(byte[] cksum1,
+                                           byte[] cksum2, int cksum2Start, int len) {
         if (cksum1 == cksum2)
             return true;
         if (cksum1 == null || cksum2 == null)

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/BytesUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/BytesUtil.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/BytesUtil.java
deleted file mode 100644
index 43ddfe8..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/BytesUtil.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-public class BytesUtil {
-
-    public static short bytes2short(byte[] bytes, int offset, boolean bigEndian) {
-        short val = 0;
-
-        if (bigEndian) {
-            val += (bytes[offset + 0] & 0xff) << 8;
-            val += (bytes[offset + 1] & 0xff);
-        } else {
-            val += (bytes[offset + 1] & 0xff) << 8;
-            val += (bytes[offset + 0] & 0xff);
-        }
-
-        return val;
-    }
-
-    public static short bytes2short(byte[] bytes, boolean bigEndian) {
-        return bytes2short(bytes, 0, bigEndian);
-    }
-
-    public static byte[] short2bytes(int val, boolean bigEndian) {
-        byte[] bytes = new byte[2];
-
-        short2bytes(val, bytes, 0, bigEndian);
-
-        return bytes;
-    }
-
-    public static void short2bytes(int val, byte[] bytes, int offset, boolean bigEndian) {
-        if (bigEndian) {
-            bytes[offset + 0] = (byte) ((val >> 8) & 0xff);
-            bytes[offset + 1] = (byte) ((val) & 0xff);
-        } else {
-            bytes[offset + 1] = (byte) ((val >>  8) & 0xff);
-            bytes[offset + 0] = (byte) ((val      ) & 0xff);
-        }
-    }
-
-    public static int bytes2int(byte[] bytes, boolean bigEndian) {
-        return bytes2int(bytes, 0, bigEndian);
-    }
-
-    public static int bytes2int(byte[] bytes, int offset, boolean bigEndian) {
-        int val = 0;
-
-        if (bigEndian) {
-            val += (bytes[offset + 0] & 0xff) << 24;
-            val += (bytes[offset + 1] & 0xff) << 16;
-            val += (bytes[offset + 2] & 0xff) << 8;
-            val += (bytes[offset + 3] & 0xff);
-        } else {
-            val += (bytes[offset + 3] & 0xff) << 24;
-            val += (bytes[offset + 2] & 0xff) << 16;
-            val += (bytes[offset + 1] & 0xff) << 8;
-            val += (bytes[offset + 0] & 0xff);
-        }
-
-        return val;
-    }
-
-    public static byte[] int2bytes(int val, boolean bigEndian) {
-        byte[] bytes = new byte[4];
-
-        int2bytes(val, bytes, 0, bigEndian);
-
-        return bytes;
-    }
-
-    public static void int2bytes(int val, byte[] bytes, int offset, boolean bigEndian) {
-        if (bigEndian) {
-            bytes[offset + 0] = (byte) ((val >> 24) & 0xff);
-            bytes[offset + 1] = (byte) ((val >> 16) & 0xff);
-            bytes[offset + 2] = (byte) ((val >> 8) & 0xff);
-            bytes[offset + 3] = (byte) ((val) & 0xff);
-        } else {
-            bytes[offset + 3] = (byte) ((val >> 24) & 0xff);
-            bytes[offset + 2] = (byte) ((val >> 16) & 0xff);
-            bytes[offset + 1] = (byte) ((val >> 8) & 0xff);
-            bytes[offset + 0] = (byte) ((val) & 0xff);
-        }
-    }
-
-    public static byte[] long2bytes(long val, boolean bigEndian) {
-        byte[] bytes = new byte[8];
-        long2bytes(val, bytes, 0, bigEndian);
-        return bytes;
-    }
-
-    public static void long2bytes(long val, byte[] bytes, int offset, boolean bigEndian) {
-        if (bigEndian) {
-            for (int i = 0; i < 8; i++) {
-                bytes[i + offset] = (byte) ((val >> ((7 - i) * 8)) & 0xffL);
-            }
-        } else {
-            for (int i = 0; i < 8; i++) {
-                bytes[i + offset] = (byte) ((val >> (i * 8)) & 0xffL);
-            }
-        }
-    }
-
-    public static long bytes2long(byte[] bytes, boolean bigEndian) {
-        return bytes2long(bytes, 0, bigEndian);
-    }
-
-    public static long bytes2long(byte[] bytes, int offset, boolean bigEndian) {
-        long val = 0;
-
-        if (bigEndian) {
-            for (int i = 0; i < 8; i++) {
-                val |= (((long) bytes[i + offset]) & 0xffL) << ((7 - i) * 8);
-            }
-        } else {
-            for (int i = 0; i < 8; i++) {
-                val |= (((long) bytes[i + offset]) & 0xffL) << (i * 8);
-            }
-        }
-
-        return val;
-    }
-
-    public static byte[] padding(byte[] data, int block) {
-        int len = data.length;
-        int paddingLen = len % block != 0 ? 8 - len % block : 0;
-        if (paddingLen == 0) {
-            return data;
-        }
-
-        byte[] result = new byte[len + + paddingLen];
-        System.arraycopy(data, 0, result, 0, len);
-        return result;
-    }
-
-    public static byte[] duplicate(byte[] bytes) {
-        return duplicate(bytes, 0, bytes.length);
-    }
-
-    public static byte[] duplicate(byte[] bytes, int offset, int len) {
-        byte[] dup = new byte[len];
-        System.arraycopy(bytes, offset, dup, 0, len);
-        return dup;
-    }
-
-    public static void xor(byte[] input, int offset, byte[] output) {
-        int a, b;
-        for (int i = 0; i < output.length / 4; ++i) {
-            a = BytesUtil.bytes2int(input, offset + i * 4, true);
-            b = BytesUtil.bytes2int(output, i * 4, true);
-            b = a ^ b;
-            BytesUtil.int2bytes(b, output, i * 4, true);
-        }
-    }
-
-    public static void xor(byte[] a, byte[] b, byte[] output) {
-        int av, bv, v;
-        for (int i = 0; i < a.length / 4; ++i) {
-            av = BytesUtil.bytes2int(a, i * 4, true);
-            bv = BytesUtil.bytes2int(b, i * 4, true);
-            v = av ^ bv;
-            BytesUtil.int2bytes(v, output, i * 4, true);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Camellia.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Camellia.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Camellia.java
deleted file mode 100644
index 3737e9d..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Camellia.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-/**
- * Camellia - based on RFC 3713, about half the size of CamelliaEngine.
- *
- * This is based on CamelliaEngine.java from bouncycastle library.
- */
-
-public class Camellia {
-    private static final int BLOCK_SIZE = 16;
-    private int[] state = new int[4]; // for encryption and decryption
-
-    private CamelliaKey camKey;
-
-    public void setKey(boolean forEncryption, byte[] key) {
-        camKey = new CamelliaKey(key, forEncryption);
-    }
-
-    private void process128Block(byte[] in, int inOff,
-                                byte[] out, int outOff) {
-        for (int i = 0; i < 4; i++) {
-            state[i] = BytesUtil.bytes2int(in, inOff + (i * 4), true);
-            state[i] ^= camKey.kw[i];
-        }
-
-        camKey.f2(state, camKey.subkey, 0);
-        camKey.f2(state, camKey.subkey, 4);
-        camKey.f2(state, camKey.subkey, 8);
-        camKey.fls(state, camKey.ke, 0);
-        camKey.f2(state, camKey.subkey, 12);
-        camKey.f2(state, camKey.subkey, 16);
-        camKey.f2(state, camKey.subkey, 20);
-        camKey.fls(state, camKey.ke, 4);
-        camKey.f2(state, camKey.subkey, 24);
-        camKey.f2(state, camKey.subkey, 28);
-        camKey.f2(state, camKey.subkey, 32);
-
-        state[2] ^= camKey.kw[4];
-        state[3] ^= camKey.kw[5];
-        state[0] ^= camKey.kw[6];
-        state[1] ^= camKey.kw[7];
-
-        BytesUtil.int2bytes(state[2], out, outOff, true);
-        BytesUtil.int2bytes(state[3], out, outOff + 4, true);
-        BytesUtil.int2bytes(state[0], out, outOff + 8, true);
-        BytesUtil.int2bytes(state[1], out, outOff + 12, true);
-    }
-
-    private void processBlockLargerBlock(byte[] in, int inOff,
-                                        byte[] out, int outOff) {
-        for (int i = 0; i < 4; i++) {
-            state[i] = BytesUtil.bytes2int(in, inOff + (i * 4), true);
-            state[i] ^= camKey.kw[i];
-        }
-
-        camKey.f2(state, camKey.subkey, 0);
-        camKey.f2(state, camKey.subkey, 4);
-        camKey.f2(state, camKey.subkey, 8);
-        camKey.fls(state, camKey.ke, 0);
-        camKey.f2(state, camKey.subkey, 12);
-        camKey.f2(state, camKey.subkey, 16);
-        camKey.f2(state, camKey.subkey, 20);
-        camKey.fls(state, camKey.ke, 4);
-        camKey.f2(state, camKey.subkey, 24);
-        camKey.f2(state, camKey.subkey, 28);
-        camKey.f2(state, camKey.subkey, 32);
-        camKey.fls(state, camKey.ke, 8);
-        camKey.f2(state, camKey.subkey, 36);
-        camKey.f2(state, camKey.subkey, 40);
-        camKey.f2(state, camKey.subkey, 44);
-
-        state[2] ^= camKey.kw[4];
-        state[3] ^= camKey.kw[5];
-        state[0] ^= camKey.kw[6];
-        state[1] ^= camKey.kw[7];
-
-        BytesUtil.int2bytes(state[2], out, outOff, true);
-        BytesUtil.int2bytes(state[3], out, outOff + 4, true);
-        BytesUtil.int2bytes(state[0], out, outOff + 8, true);
-        BytesUtil.int2bytes(state[1], out, outOff + 12, true);
-    }
-
-    public void processBlock(byte[] in, int inOff) {
-        byte[] out = new byte[BLOCK_SIZE];
-
-        if (camKey.is128()) {
-            process128Block(in, inOff, out, 0);
-        } else {
-            processBlockLargerBlock(in, inOff, out, 0);
-        }
-
-        System.arraycopy(out, 0, in, inOff, BLOCK_SIZE);
-    }
-
-    public void encrypt(byte[] data, byte[] iv) {
-        byte[] cipher = new byte[BLOCK_SIZE];
-        byte[] cipherState = new byte[BLOCK_SIZE];
-
-        int blocksNum = (data.length + BLOCK_SIZE - 1) / BLOCK_SIZE;
-        int lastBlockLen = data.length - (blocksNum - 1) * BLOCK_SIZE;
-        if (blocksNum == 1) {
-            cbcEnc(data, 0, 1, cipherState);
-            return;
-        }
-
-        if (iv != null) {
-            System.arraycopy(iv, 0, cipherState, 0, BLOCK_SIZE);
-        }
-
-        int contBlocksNum, offset = 0;
-        while (blocksNum > 2) {
-            contBlocksNum = (data.length - offset) / BLOCK_SIZE;
-            if (contBlocksNum > 0) {
-                // Encrypt a series of contiguous blocks in place if we can, but
-                // don't touch the last two blocks.
-                contBlocksNum = (contBlocksNum > blocksNum - 2) ? blocksNum - 2 : contBlocksNum;
-                cbcEnc(data, offset, contBlocksNum, cipherState);
-                offset += contBlocksNum * BLOCK_SIZE;
-                blocksNum -= contBlocksNum;
-            } else {
-                cbcEnc(data, offset, 1, cipherState);
-                offset += BLOCK_SIZE;
-                blocksNum--;
-            }
-        }
-
-        // Encrypt the last two blocks and store the results in reverse order
-        byte[] blockN2 = new byte[BLOCK_SIZE];
-        byte[] blockN1 = new byte[BLOCK_SIZE];
-
-        System.arraycopy(data, offset, blockN2, 0, BLOCK_SIZE);
-        cbcEnc(blockN2, 0, 1, cipherState);
-        System.arraycopy(data, offset + BLOCK_SIZE, blockN1, 0, lastBlockLen);
-        cbcEnc(blockN1, 0, 1, cipherState);
-
-        System.arraycopy(blockN1, 0, data, offset, BLOCK_SIZE);
-        System.arraycopy(blockN2, 0, data, offset + BLOCK_SIZE, lastBlockLen);
-
-        if (iv != null) {
-            System.arraycopy(cipherState, 0, iv, 0, BLOCK_SIZE);
-        }
-    }
-
-    public void decrypt(byte[] data, byte[] iv) {
-        byte[] cipher = new byte[BLOCK_SIZE];
-        byte[] cipherState = new byte[BLOCK_SIZE];
-
-        int blocksNum = (data.length + BLOCK_SIZE - 1) / BLOCK_SIZE;
-        int lastBlockLen = data.length - (blocksNum - 1) * BLOCK_SIZE;
-        if (blocksNum == 1) {
-            cbcDec(data, 0, 1, cipherState);
-            return;
-        }
-
-        if (iv != null) {
-            System.arraycopy(iv, 0, cipherState, 0, BLOCK_SIZE);
-        }
-
-        int contBlocksNum, offset = 0;
-        while (blocksNum > 2) {
-            contBlocksNum = (data.length - offset) / BLOCK_SIZE;
-            if (contBlocksNum > 0) {
-                // Decrypt a series of contiguous blocks in place if we can, but
-                // don't touch the last two blocks.
-                contBlocksNum = (contBlocksNum > blocksNum - 2) ? blocksNum - 2 : contBlocksNum;
-                cbcDec(data, offset, contBlocksNum, cipherState);
-                offset += contBlocksNum * BLOCK_SIZE;
-                blocksNum -= contBlocksNum;
-            } else {
-                cbcDec(data, offset, 1, cipherState);
-                offset += BLOCK_SIZE;
-                blocksNum--;
-            }
-        }
-
-        // Decrypt the last two blocks
-        byte[] blockN2 = new byte[BLOCK_SIZE];
-        byte[] blockN1 = new byte[BLOCK_SIZE];
-        System.arraycopy(data, offset, blockN2, 0, BLOCK_SIZE);
-        System.arraycopy(data, offset + BLOCK_SIZE, blockN1, 0, lastBlockLen);
-        if (iv != null) {
-            System.arraycopy(blockN2, 0, iv, 0, BLOCK_SIZE);
-        }
-
-        byte[] tmpCipherState = new byte[BLOCK_SIZE];
-        System.arraycopy(blockN1, 0, tmpCipherState, 0, BLOCK_SIZE);
-        cbcDec(blockN2, 0, 1, tmpCipherState);
-        System.arraycopy(blockN2, lastBlockLen, blockN1, lastBlockLen, BLOCK_SIZE - lastBlockLen);
-        cbcDec(blockN1, 0, 1, cipherState);
-
-        System.arraycopy(blockN1, 0, data, offset, BLOCK_SIZE);
-        System.arraycopy(blockN2, 0, data, offset + BLOCK_SIZE, lastBlockLen);
-    }
-
-    /**
-     * CBC encrypt nblocks blocks of data in place, using and updating iv.
-     */
-    public void cbcEnc(byte[] data, int offset, int blocksNum, byte[] cipherState) {
-        byte[] cipher = new byte[BLOCK_SIZE];
-        for (int i = 0; i < blocksNum; ++i) {
-            System.arraycopy(data, offset + i * BLOCK_SIZE, cipher, 0, BLOCK_SIZE);
-            BytesUtil.xor(cipherState, 0, cipher);
-            processBlock(cipher, 0);
-            System.arraycopy(cipher, 0, data, offset + i * BLOCK_SIZE, BLOCK_SIZE);
-            System.arraycopy(cipher, 0, cipherState, 0, BLOCK_SIZE);
-        }
-    }
-
-    /**
-     * CBC encrypt nblocks blocks of data in place, using and updating iv.
-     */
-    public void cbcDec(byte[] data, int offset, int blocksNum, byte[] cipherState) {
-        byte[] lastBlock = new byte[BLOCK_SIZE];
-        byte[] cipher = new byte[BLOCK_SIZE];
-
-        System.arraycopy(data, offset + (blocksNum - 1) * BLOCK_SIZE, lastBlock, 0, BLOCK_SIZE);
-        for (int i = blocksNum; i > 0; i--) {
-            System.arraycopy(data, offset + (i - 1) * BLOCK_SIZE, cipher, 0, BLOCK_SIZE);
-            processBlock(cipher, 0);
-
-            if (i == 1) {
-                BytesUtil.xor(cipherState, 0, cipher);
-            } else {
-                BytesUtil.xor(data, offset + (i - 2) * BLOCK_SIZE, cipher);
-            }
-
-            System.arraycopy(cipher, 0, data, offset + (i - 1) * BLOCK_SIZE, BLOCK_SIZE);
-        }
-        System.arraycopy(lastBlock, 0, cipherState, 0, BLOCK_SIZE);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaKey.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaKey.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaKey.java
deleted file mode 100644
index c792910..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaKey.java
+++ /dev/null
@@ -1,433 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-/**
- * Camellia - based on RFC 3713, about half the size of CamelliaEngine.
- *
- * This is based on CamelliaEngine.java from bouncycastle library.
- */
-
-public class CamelliaKey {
-    private int keySize;
-
-    protected int[] subkey = new int[24 * 4];
-    protected int[] kw = new int[4 * 2]; // for whitening
-    protected int[] ke = new int[6 * 2]; // for FL and FL^(-1)
-
-    private static final int SIGMA[] = {
-            0xa09e667f, 0x3bcc908b,
-            0xb67ae858, 0x4caa73b2,
-            0xc6ef372f, 0xe94f82be,
-            0x54ff53a5, 0xf1d36f1c,
-            0x10e527fa, 0xde682d1d,
-            0xb05688c2, 0xb3e6c1fd
-    };
-
-    // S-box data
-    protected static final byte SBOX1[] = {
-            (byte)112, (byte)130, (byte)44, (byte)236,
-            (byte)179, (byte)39, (byte)192, (byte)229,
-            (byte)228, (byte)133, (byte)87, (byte)53,
-            (byte)234, (byte)12, (byte)174, (byte)65,
-            (byte)35, (byte)239, (byte)107, (byte)147,
-            (byte)69, (byte)25, (byte)165, (byte)33,
-            (byte)237, (byte)14, (byte)79, (byte)78,
-            (byte)29, (byte)101, (byte)146, (byte)189,
-            (byte)134, (byte)184, (byte)175, (byte)143,
-            (byte)124, (byte)235, (byte)31, (byte)206,
-            (byte)62, (byte)48, (byte)220, (byte)95,
-            (byte)94, (byte)197, (byte)11, (byte)26,
-            (byte)166, (byte)225, (byte)57, (byte)202,
-            (byte)213, (byte)71, (byte)93, (byte)61,
-            (byte)217, (byte)1, (byte)90, (byte)214,
-            (byte)81, (byte)86, (byte)108, (byte)77,
-            (byte)139, (byte)13, (byte)154, (byte)102,
-            (byte)251, (byte)204, (byte)176, (byte)45,
-            (byte)116, (byte)18, (byte)43, (byte)32,
-            (byte)240, (byte)177, (byte)132, (byte)153,
-            (byte)223, (byte)76, (byte)203, (byte)194,
-            (byte)52, (byte)126, (byte)118, (byte)5,
-            (byte)109, (byte)183, (byte)169, (byte)49,
-            (byte)209, (byte)23, (byte)4, (byte)215,
-            (byte)20, (byte)88, (byte)58, (byte)97,
-            (byte)222, (byte)27, (byte)17, (byte)28,
-            (byte)50, (byte)15, (byte)156, (byte)22,
-            (byte)83, (byte)24, (byte)242, (byte)34,
-            (byte)254, (byte)68, (byte)207, (byte)178,
-            (byte)195, (byte)181, (byte)122, (byte)145,
-            (byte)36, (byte)8, (byte)232, (byte)168,
-            (byte)96, (byte)252, (byte)105, (byte)80,
-            (byte)170, (byte)208, (byte)160, (byte)125,
-            (byte)161, (byte)137, (byte)98, (byte)151,
-            (byte)84, (byte)91, (byte)30, (byte)149,
-            (byte)224, (byte)255, (byte)100, (byte)210,
-            (byte)16, (byte)196, (byte)0, (byte)72,
-            (byte)163, (byte)247, (byte)117, (byte)219,
-            (byte)138, (byte)3, (byte)230, (byte)218,
-            (byte)9, (byte)63, (byte)221, (byte)148,
-            (byte)135, (byte)92, (byte)131, (byte)2,
-            (byte)205, (byte)74, (byte)144, (byte)51,
-            (byte)115, (byte)103, (byte)246, (byte)243,
-            (byte)157, (byte)127, (byte)191, (byte)226,
-            (byte)82, (byte)155, (byte)216, (byte)38,
-            (byte)200, (byte)55, (byte)198, (byte)59,
-            (byte)129, (byte)150, (byte)111, (byte)75,
-            (byte)19, (byte)190, (byte)99, (byte)46,
-            (byte)233, (byte)121, (byte)167, (byte)140,
-            (byte)159, (byte)110, (byte)188, (byte)142,
-            (byte)41, (byte)245, (byte)249, (byte)182,
-            (byte)47, (byte)253, (byte)180, (byte)89,
-            (byte)120, (byte)152, (byte)6, (byte)106,
-            (byte)231, (byte)70, (byte)113, (byte)186,
-            (byte)212, (byte)37, (byte)171, (byte)66,
-            (byte)136, (byte)162, (byte)141, (byte)250,
-            (byte)114, (byte)7, (byte)185, (byte)85,
-            (byte)248, (byte)238, (byte)172, (byte)10,
-            (byte)54, (byte)73, (byte)42, (byte)104,
-            (byte)60, (byte)56, (byte)241, (byte)164,
-            (byte)64, (byte)40, (byte)211, (byte)123,
-            (byte)187, (byte)201, (byte)67, (byte)193,
-            (byte)21, (byte)227, (byte)173, (byte)244,
-            (byte)119, (byte)199, (byte)128, (byte)158
-    };
-
-    public CamelliaKey(byte[] key, boolean isEncrypt) {
-        init(key, isEncrypt);
-    }
-
-    protected boolean is128() {
-        return keySize == 16;
-    }
-
-    private static int rightRotate(int x, int s) {
-        return (((x) >>> (s)) + ((x) << (32 - s)));
-    }
-
-    private static int leftRotate(int x, int s) {
-        return ((x) << (s)) + ((x) >>> (32 - s));
-    }
-
-    private static void roldq(int rot, int[] ki, int ioff,
-                              int[] ko, int ooff) {
-        ko[0 + ooff] = (ki[0 + ioff] << rot) | (ki[1 + ioff] >>> (32 - rot));
-        ko[1 + ooff] = (ki[1 + ioff] << rot) | (ki[2 + ioff] >>> (32 - rot));
-        ko[2 + ooff] = (ki[2 + ioff] << rot) | (ki[3 + ioff] >>> (32 - rot));
-        ko[3 + ooff] = (ki[3 + ioff] << rot) | (ki[0 + ioff] >>> (32 - rot));
-        ki[0 + ioff] = ko[0 + ooff];
-        ki[1 + ioff] = ko[1 + ooff];
-        ki[2 + ioff] = ko[2 + ooff];
-        ki[3 + ioff] = ko[3 + ooff];
-    }
-
-    private static void decroldq(int rot, int[] ki, int ioff,
-                                 int[] ko, int ooff) {
-        ko[2 + ooff] = (ki[0 + ioff] << rot) | (ki[1 + ioff] >>> (32 - rot));
-        ko[3 + ooff] = (ki[1 + ioff] << rot) | (ki[2 + ioff] >>> (32 - rot));
-        ko[0 + ooff] = (ki[2 + ioff] << rot) | (ki[3 + ioff] >>> (32 - rot));
-        ko[1 + ooff] = (ki[3 + ioff] << rot) | (ki[0 + ioff] >>> (32 - rot));
-        ki[0 + ioff] = ko[2 + ooff];
-        ki[1 + ioff] = ko[3 + ooff];
-        ki[2 + ioff] = ko[0 + ooff];
-        ki[3 + ioff] = ko[1 + ooff];
-    }
-
-    private static void roldqo32(int rot, int[] ki, int ioff,
-                                 int[] ko, int ooff)
-    {
-        ko[0 + ooff] = (ki[1 + ioff] << (rot - 32)) | (ki[2 + ioff] >>> (64 - rot));
-        ko[1 + ooff] = (ki[2 + ioff] << (rot - 32)) | (ki[3 + ioff] >>> (64 - rot));
-        ko[2 + ooff] = (ki[3 + ioff] << (rot - 32)) | (ki[0 + ioff] >>> (64 - rot));
-        ko[3 + ooff] = (ki[0 + ioff] << (rot - 32)) | (ki[1 + ioff] >>> (64 - rot));
-        ki[0 + ioff] = ko[0 + ooff];
-        ki[1 + ioff] = ko[1 + ooff];
-        ki[2 + ioff] = ko[2 + ooff];
-        ki[3 + ioff] = ko[3 + ooff];
-    }
-
-    private static void decroldqo32(int rot, int[] ki, int ioff,
-                                    int[] ko, int ooff) {
-        ko[2 + ooff] = (ki[1 + ioff] << (rot - 32)) | (ki[2 + ioff] >>> (64 - rot));
-        ko[3 + ooff] = (ki[2 + ioff] << (rot - 32)) | (ki[3 + ioff] >>> (64 - rot));
-        ko[0 + ooff] = (ki[3 + ioff] << (rot - 32)) | (ki[0 + ioff] >>> (64 - rot));
-        ko[1 + ooff] = (ki[0 + ioff] << (rot - 32)) | (ki[1 + ioff] >>> (64 - rot));
-        ki[0 + ioff] = ko[2 + ooff];
-        ki[1 + ioff] = ko[3 + ooff];
-        ki[2 + ioff] = ko[0 + ooff];
-        ki[3 + ioff] = ko[1 + ooff];
-    }
-
-    private byte lRot8(byte v, int rot)
-    {
-        return (byte)((v << rot) | ((v & 0xff) >>> (8 - rot)));
-    }
-
-    private int sbox2(int x)
-    {
-        return (lRot8(SBOX1[x], 1) & 0xff);
-    }
-
-    private int sbox3(int x)
-    {
-        return (lRot8(SBOX1[x], 7) & 0xff);
-    }
-
-    private int sbox4(int x)
-    {
-        return (SBOX1[((int)lRot8((byte)x, 1) & 0xff)] & 0xff);
-    }
-
-    protected void fls(int[] s, int[] fkey, int keyoff) {
-        s[1] ^= leftRotate(s[0] & fkey[0 + keyoff], 1);
-        s[0] ^= fkey[1 + keyoff] | s[1];
-
-        s[2] ^= fkey[3 + keyoff] | s[3];
-        s[3] ^= leftRotate(fkey[2 + keyoff] & s[2], 1);
-    }
-
-    protected void f2(int[] s, int[] skey, int keyoff) {
-        int t1, t2, u, v;
-
-        t1 = s[0] ^ skey[0 + keyoff];
-        u = sbox4((t1 & 0xff));
-        u |= (sbox3(((t1 >>> 8) & 0xff)) << 8);
-        u |= (sbox2(((t1 >>> 16) & 0xff)) << 16);
-        u |= ((int)(SBOX1[((t1 >>> 24) & 0xff)] & 0xff) << 24);
-
-        t2 = s[1] ^ skey[1 + keyoff];
-        v = (int)SBOX1[(t2 & 0xff)] & 0xff;
-        v |= (sbox4(((t2 >>> 8) & 0xff)) << 8);
-        v |= (sbox3(((t2 >>> 16) & 0xff)) << 16);
-        v |= (sbox2(((t2 >>> 24) & 0xff)) << 24);
-
-        v = leftRotate(v, 8);
-        u ^= v;
-        v = leftRotate(v, 8) ^ u;
-        u = rightRotate(u, 8) ^ v;
-        s[2] ^= leftRotate(v, 16) ^ u;
-        s[3] ^= leftRotate(u, 8);
-
-        t1 = s[2] ^ skey[2 + keyoff];
-        u = sbox4((t1 & 0xff));
-        u |= sbox3(((t1 >>> 8) & 0xff)) << 8;
-        u |= sbox2(((t1 >>> 16) & 0xff)) << 16;
-        u |= ((int)SBOX1[((t1 >>> 24) & 0xff)] & 0xff) << 24;
-
-        t2 = s[3] ^ skey[3 + keyoff];
-        v = ((int)SBOX1[(t2 & 0xff)] & 0xff);
-        v |= sbox4(((t2 >>> 8) & 0xff)) << 8;
-        v |= sbox3(((t2 >>> 16) & 0xff)) << 16;
-        v |= sbox2(((t2 >>> 24) & 0xff)) << 24;
-
-        v = leftRotate(v, 8);
-        u ^= v;
-        v = leftRotate(v, 8) ^ u;
-        u = rightRotate(u, 8) ^ v;
-        s[0] ^= leftRotate(v, 16) ^ u;
-        s[1] ^= leftRotate(u, 8);
-    }
-
-    private void init(byte[] key, boolean isEncrypt) {
-        keySize = key.length;
-
-        int[] k = new int[8];
-        int[] ka = new int[4];
-        int[] kb = new int[4];
-        int[] t = new int[4];
-
-        switch (key.length) {
-            case 16:
-                k[0] = BytesUtil.bytes2int(key, 0, true);
-                k[1] = BytesUtil.bytes2int(key, 4, true);
-                k[2] = BytesUtil.bytes2int(key, 8, true);
-                k[3] = BytesUtil.bytes2int(key, 12, true);
-                k[4] = k[5] = k[6] = k[7] = 0;
-                break;
-            case 24:
-                k[0] = BytesUtil.bytes2int(key, 0, true);
-                k[1] = BytesUtil.bytes2int(key, 4, true);
-                k[2] = BytesUtil.bytes2int(key, 8, true);
-                k[3] = BytesUtil.bytes2int(key, 12, true);
-                k[4] = BytesUtil.bytes2int(key, 16, true);
-                k[5] = BytesUtil.bytes2int(key, 20, true);
-                k[6] = ~k[4];
-                k[7] = ~k[5];
-                break;
-            case 32:
-                k[0] = BytesUtil.bytes2int(key, 0, true);
-                k[1] = BytesUtil.bytes2int(key, 4, true);
-                k[2] = BytesUtil.bytes2int(key, 8, true);
-                k[3] = BytesUtil.bytes2int(key, 12, true);
-                k[4] = BytesUtil.bytes2int(key, 16, true);
-                k[5] = BytesUtil.bytes2int(key, 20, true);
-                k[6] = BytesUtil.bytes2int(key, 24, true);
-                k[7] = BytesUtil.bytes2int(key, 28, true);
-                break;
-            default:
-                throw new
-                        IllegalArgumentException("Invalid key size, only support 16/24/32 bytes");
-        }
-
-        for (int i = 0; i < 4; i++) {
-            ka[i] = k[i] ^ k[i + 4];
-        }
-
-        /* compute KA */
-        f2(ka, SIGMA, 0);
-        for (int i = 0; i < 4; i++) {
-            ka[i] ^= k[i];
-        }
-        f2(ka, SIGMA, 4);
-
-        if (keySize == 16) {
-            if (isEncrypt) {
-                /* KL dependant keys */
-                kw[0] = k[0];
-                kw[1] = k[1];
-                kw[2] = k[2];
-                kw[3] = k[3];
-                roldq(15, k, 0, subkey, 4);
-                roldq(30, k, 0, subkey, 12);
-                roldq(15, k, 0, t, 0);
-                subkey[18] = t[2];
-                subkey[19] = t[3];
-                roldq(17, k, 0, ke, 4);
-                roldq(17, k, 0, subkey, 24);
-                roldq(17, k, 0, subkey, 32);
-                /* KA dependant keys */
-                subkey[0] = ka[0];
-                subkey[1] = ka[1];
-                subkey[2] = ka[2];
-                subkey[3] = ka[3];
-                roldq(15, ka, 0, subkey, 8);
-                roldq(15, ka, 0, ke, 0);
-                roldq(15, ka, 0, t, 0);
-                subkey[16] = t[0];
-                subkey[17] = t[1];
-                roldq(15, ka, 0, subkey, 20);
-                roldqo32(34, ka, 0, subkey, 28);
-                roldq(17, ka, 0, kw, 4);
-
-            } else { // decryption
-                /* KL dependant keys */
-                kw[4] = k[0];
-                kw[5] = k[1];
-                kw[6] = k[2];
-                kw[7] = k[3];
-                decroldq(15, k, 0, subkey, 28);
-                decroldq(30, k, 0, subkey, 20);
-                decroldq(15, k, 0, t, 0);
-                subkey[16] = t[0];
-                subkey[17] = t[1];
-                decroldq(17, k, 0, ke, 0);
-                decroldq(17, k, 0, subkey, 8);
-                decroldq(17, k, 0, subkey, 0);
-                /* KA dependant keys */
-                subkey[34] = ka[0];
-                subkey[35] = ka[1];
-                subkey[32] = ka[2];
-                subkey[33] = ka[3];
-                decroldq(15, ka, 0, subkey, 24);
-                decroldq(15, ka, 0, ke, 4);
-                decroldq(15, ka, 0, t, 0);
-                subkey[18] = t[2];
-                subkey[19] = t[3];
-                decroldq(15, ka, 0, subkey, 12);
-                decroldqo32(34, ka, 0, subkey, 4);
-                roldq(17, ka, 0, kw, 0);
-            }
-        } else { // 192bit or 256bit
-            /* compute KB */
-            for (int i = 0; i < 4; i++) {
-                kb[i] = ka[i] ^ k[i + 4];
-            }
-            f2(kb, SIGMA, 8);
-
-            if (isEncrypt) {
-                /* KL dependant keys */
-                kw[0] = k[0];
-                kw[1] = k[1];
-                kw[2] = k[2];
-                kw[3] = k[3];
-                roldqo32(45, k, 0, subkey, 16);
-                roldq(15, k, 0, ke, 4);
-                roldq(17, k, 0, subkey, 32);
-                roldqo32(34, k, 0, subkey, 44);
-                /* KR dependant keys */
-                roldq(15, k, 4, subkey, 4);
-                roldq(15, k, 4, ke, 0);
-                roldq(30, k, 4, subkey, 24);
-                roldqo32(34, k, 4, subkey, 36);
-                /* KA dependant keys */
-                roldq(15, ka, 0, subkey, 8);
-                roldq(30, ka, 0, subkey, 20);
-                /* 32bit rotation */
-                ke[8] = ka[1];
-                ke[9] = ka[2];
-                ke[10] = ka[3];
-                ke[11] = ka[0];
-                roldqo32(49, ka, 0, subkey, 40);
-
-                /* KB dependant keys */
-                subkey[0] = kb[0];
-                subkey[1] = kb[1];
-                subkey[2] = kb[2];
-                subkey[3] = kb[3];
-                roldq(30, kb, 0, subkey, 12);
-                roldq(30, kb, 0, subkey, 28);
-                roldqo32(51, kb, 0, kw, 4);
-
-            } else { // decryption
-                /* KL dependant keys */
-                kw[4] = k[0];
-                kw[5] = k[1];
-                kw[6] = k[2];
-                kw[7] = k[3];
-                decroldqo32(45, k, 0, subkey, 28);
-                decroldq(15, k, 0, ke, 4);
-                decroldq(17, k, 0, subkey, 12);
-                decroldqo32(34, k, 0, subkey, 0);
-                /* KR dependant keys */
-                decroldq(15, k, 4, subkey, 40);
-                decroldq(15, k, 4, ke, 8);
-                decroldq(30, k, 4, subkey, 20);
-                decroldqo32(34, k, 4, subkey, 8);
-                /* KA dependant keys */
-                decroldq(15, ka, 0, subkey, 36);
-                decroldq(30, ka, 0, subkey, 24);
-                /* 32bit rotation */
-                ke[2] = ka[1];
-                ke[3] = ka[2];
-                ke[0] = ka[3];
-                ke[1] = ka[0];
-                decroldqo32(49, ka, 0, subkey, 4);
-
-                /* KB dependant keys */
-                subkey[46] = kb[0];
-                subkey[47] = kb[1];
-                subkey[44] = kb[2];
-                subkey[45] = kb[3];
-                decroldq(30, kb, 0, subkey, 32);
-                decroldq(30, kb, 0, subkey, 16);
-                roldqo32(51, kb, 0, kw, 0);
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumHandler.java
index 2cad95b..1d4dc60 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumHandler.java
@@ -26,6 +26,11 @@ import org.apache.kerby.kerberos.kerb.spec.common.CheckSum;
 import org.apache.kerby.kerberos.kerb.spec.common.CheckSumType;
 import org.apache.kerby.kerberos.kerb.spec.common.KeyUsage;
 
+/**
+ * Checksum handler as the highest level API for checksum stuffs defined in
+ * Kerberos RFC3961. It supports all the checksum types. New checksum type
+ * should be added updating this.
+ */
 public class CheckSumHandler {
 
     public static CheckSumTypeHandler getCheckSumHandler(String cksumType) throws KrbException {
@@ -42,11 +47,13 @@ public class CheckSumHandler {
         return getCheckSumHandler(cksumType, true) != null;
     }
 
-    public static CheckSumTypeHandler getCheckSumHandler(CheckSumType cksumType) throws KrbException {
+    public static CheckSumTypeHandler getCheckSumHandler(
+            CheckSumType cksumType) throws KrbException {
         return getCheckSumHandler(cksumType, false);
     }
 
-    private static CheckSumTypeHandler getCheckSumHandler(CheckSumType cksumType, boolean check) throws KrbException {
+    private static CheckSumTypeHandler getCheckSumHandler(CheckSumType cksumType,
+                                                          boolean check) throws KrbException {
         CheckSumTypeHandler cksumHandler = null;
         switch (cksumType) {
             case CRC32:
@@ -118,7 +125,8 @@ public class CheckSumHandler {
         return cksumHandler;
     }
 
-    public static CheckSum checksum(CheckSumType checkSumType, byte[] bytes) throws KrbException {
+    public static CheckSum checksum(CheckSumType checkSumType,
+                                    byte[] bytes) throws KrbException {
         CheckSumTypeHandler handler = getCheckSumHandler(checkSumType);
         byte[] checksumBytes = handler.checksum(bytes);
         CheckSum checkSum = new CheckSum();

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Cmac.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Cmac.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Cmac.java
deleted file mode 100644
index 23314da..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Cmac.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
-import org.apache.kerby.kerberos.kerb.KrbException;
-
-import java.util.Arrays;
-
-/**
- * Based on MIT krb5 cmac.c
- */
-public class Cmac {
-
-    private static byte[] constRb = {
-            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0x87
-    };
-
-    public static byte[] cmac(EncryptProvider encProvider, byte[] key,
-                       byte[] data, int outputSize) throws KrbException {
-        return cmac(encProvider, key, data, 0, data.length, outputSize);
-    }
-
-    public static byte[] cmac(EncryptProvider encProvider, byte[] key, byte[] data,
-                       int start, int len, int outputSize) throws KrbException {
-        byte[] hash = Cmac.cmac(encProvider, key, data, start, len);
-        if (hash.length > outputSize) {
-            byte[] output = new byte[outputSize];
-            System.arraycopy(hash, 0, output, 0, outputSize);
-            return output;
-        } else {
-            return hash;
-        }
-    }
-
-    public static byte[] cmac(EncryptProvider encProvider,
-                              byte[] key, byte[] data) throws KrbException {
-        return cmac(encProvider, key, data, 0, data.length);
-    }
-
-    public static byte[] cmac(EncryptProvider encProvider,
-                              byte[] key, byte[] data, int start, int len) throws KrbException {
-
-        int blockSize = encProvider.blockSize();
-
-        byte[] Y = new byte[blockSize];
-        byte[] mLast = new byte[blockSize];
-        byte[] padded = new byte[blockSize];
-        byte[] K1 = new byte[blockSize];
-        byte[] K2 = new byte[blockSize];
-
-        // step 1
-        makeSubkey(encProvider, key, K1, K2);
-
-        // step 2
-        int n = (len + blockSize - 1) / blockSize;
-
-        // step 3
-        boolean lastIsComplete;
-        if (n == 0) {
-            n = 1;
-            lastIsComplete = false;
-        } else {
-            lastIsComplete = ((len % blockSize) == 0);
-        }
-
-        // Step 6 (all but last block)
-        byte[] cipherState = new byte[blockSize];
-        byte[] cipher = new byte[blockSize];
-        for (int i = 0; i < n - 1; i++) {
-            System.arraycopy(data, i * blockSize, cipher, 0, blockSize);
-            encryptBlock(encProvider, key, cipherState, cipher);
-            System.arraycopy(cipher, 0, cipherState, 0, blockSize);
-        }
-
-        // step 5
-        System.arraycopy(cipher, 0, Y, 0, blockSize);
-
-        // step 4
-        int lastPos = (n - 1) * blockSize;
-        int lastLen = lastIsComplete ? blockSize : len % blockSize;
-        byte[] lastBlock = new byte[lastLen];
-        System.arraycopy(data, lastPos, lastBlock, 0, lastLen);
-        if (lastIsComplete) {
-            BytesUtil.xor(lastBlock, K1, mLast);
-        } else {
-            padding(lastBlock, padded);
-            BytesUtil.xor(padded, K2, mLast);
-        }
-
-        // Step 6 (last block)
-        encryptBlock(encProvider, key, cipherState, mLast);
-
-        return mLast;
-    }
-
-    // Generate subkeys K1 and K2 as described in RFC 4493 figure 2.2.
-    private static void makeSubkey(EncryptProvider encProvider,
-                              byte[] key, byte[] K1, byte[] K2) throws KrbException {
-
-        // L := encrypt(K, const_Zero)
-        byte[] L = new byte[K1.length];
-        Arrays.fill(L, (byte) 0);
-        encryptBlock(encProvider, key, null, L);
-
-        // K1 := (MSB(L) == 0) ? L << 1 : (L << 1) XOR const_Rb
-        if ((L[0] & 0x80) == 0) {
-            leftShiftByOne(L, K1);
-        } else {
-            byte[] tmp = new byte[K1.length];
-            leftShiftByOne(L, tmp);
-            BytesUtil.xor(tmp, constRb, K1);
-        }
-
-        // K2 := (MSB(K1) == 0) ? K1 << 1 : (K1 << 1) XOR const_Rb
-        if ((K1[0] & 0x80) == 0) {
-            leftShiftByOne(K1, K2);
-        } else {
-            byte[] tmp = new byte[K1.length];
-            leftShiftByOne(K1, tmp);
-            BytesUtil.xor(tmp, constRb, K2);
-        }
-    }
-
-    private static void encryptBlock(EncryptProvider encProvider,
-                                     byte[] key, byte[] cipherState, byte[] block) throws KrbException {
-        if (cipherState == null) {
-            cipherState = new byte[encProvider.blockSize()];
-        }
-        if (encProvider.supportCbcMac()) {
-            encProvider.cbcMac(key, cipherState, block);
-        } else {
-            encProvider.encrypt(key, cipherState, block);
-        }
-    }
-
-    private static void leftShiftByOne(byte[] input, byte[] output) {
-        byte overflow = 0;
-
-        for (int i = input.length - 1; i >= 0; i--) {
-            output[i] = (byte) (input[i] << 1);
-            output[i] |= overflow;
-            overflow = (byte) ((input[i] & 0x80) != 0 ? 1 : 0);
-        }
-    }
-
-    // Padding out data with a 1 bit followed by 0 bits, placing the result in pad
-    private static void padding(byte[] data, byte[] padded) {
-        int len = data.length;
-
-        // original last block
-        System.arraycopy(data, 0, padded, 0, len);
-
-        padded[len] = (byte) 0x80;
-
-        for (int i = len + 1; i < padded.length; i++) {
-            padded[i] = 0x00;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Confounder.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Confounder.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Confounder.java
deleted file mode 100644
index 79f5848..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Confounder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-import java.security.SecureRandom;
-
-public final class Confounder {
-
-    private static SecureRandom srand = new SecureRandom();
-
-    public static byte[] makeBytes(int size) {
-        byte[] data = new byte[size];
-        srand.nextBytes(data);
-        return data;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Crc32.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Crc32.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Crc32.java
deleted file mode 100644
index 59feee8..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Crc32.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-/**
- * Reference: http://introcs.cs.princeton.edu/java/51data/CRC32.java
- */
-public class Crc32 {
-
-    private static long[] table = {
-            0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
-            0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
-            0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
-            0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
-            0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
-            0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
-            0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
-            0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
-            0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
-            0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
-            0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
-            0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
-            0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
-            0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
-            0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
-            0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
-            0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
-            0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
-            0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
-            0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
-            0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
-            0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
-            0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
-            0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
-            0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
-            0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
-            0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
-            0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
-            0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
-            0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
-            0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
-            0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
-    };
-
-    public static byte[] crc(byte[] data, int start, int size) {
-        long c = crc(0, data, start, size);
-        return BytesUtil.int2bytes((int) c, false);
-    }
-
-    public static long crc(long initial, byte[] data, int start, int len) {
-        long c = initial;
-
-        int idx;
-        for (int i = 0; i < len; i++) {
-            idx = (int) ((data[start + i] ^ c) & 0xff);
-            c = ((c & 0xffffffffL) >>> 8) ^ table[idx]; // why?
-        }
-
-        return c;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Des.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Des.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Des.java
deleted file mode 100644
index db3e637..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Des.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-/**
- * Based on MIT krb5 weak_key.c
- */
-public class Des {
-
-    /*
-     * The following are the weak DES keys:
-     */
-    static byte[][] WEAK_KEYS = {
-    /* weak keys */
-            {(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01},
-            {(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe},
-            {(byte) 0x1f,(byte) 0x1f,(byte) 0x1f,(byte) 0x1f,(byte) 0x0e,(byte) 0x0e,(byte) 0x0e,(byte) 0x0e},
-            {(byte) 0xe0,(byte) 0xe0,(byte) 0xe0,(byte) 0xe0,(byte) 0xf1,(byte) 0xf1,(byte) 0xf1,(byte) 0xf1},
-
-    /* semi-weak */
-            {(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe},
-            {(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01},
-
-            {(byte) 0x1f,(byte) 0xe0,(byte) 0x1f,(byte) 0xe0,(byte) 0x0e,(byte) 0xf1,(byte) 0x0e,(byte) 0xf1},
-            {(byte) 0xe0,(byte) 0x1f,(byte) 0xe0,(byte) 0x1f,(byte) 0xf1,(byte) 0x0e,(byte) 0xf1,(byte) 0x0e},
-
-            {(byte) 0x01,(byte) 0xe0,(byte) 0x01,(byte) 0xe0,(byte) 0x01,(byte) 0xf1,(byte) 0x01,(byte) 0xf1},
-            {(byte) 0xe0,(byte) 0x01,(byte) 0xe0,(byte) 0x01,(byte) 0xf1,(byte) 0x01,(byte) 0xf1,(byte) 0x01},
-
-            {(byte) 0x1f,(byte) 0xfe,(byte) 0x1f,(byte) 0xfe,(byte) 0x0e,(byte) 0xfe,(byte) 0x0e,(byte) 0xfe},
-            {(byte) 0xfe,(byte) 0x1f,(byte) 0xfe,(byte) 0x1f,(byte) 0xfe,(byte) 0x0e,(byte) 0xfe,(byte) 0x0e},
-
-            {(byte) 0x01,(byte) 0x1f,(byte) 0x01,(byte) 0x1f,(byte) 0x01,(byte) 0x0e,(byte) 0x01,(byte) 0x0e},
-            {(byte) 0x1f,(byte) 0x01,(byte) 0x1f,(byte) 0x01,(byte) 0x0e,(byte) 0x01,(byte) 0x0e,(byte) 0x01},
-
-            {(byte) 0xe0,(byte) 0xfe,(byte) 0xe0,(byte) 0xfe,(byte) 0xf1,(byte) 0xfe,(byte) 0xf1,(byte) 0xfe},
-            {(byte) 0xfe,(byte) 0xe0,(byte) 0xfe,(byte) 0xe0,(byte) 0xfe,(byte) 0xf1,(byte) 0xfe,(byte) 0xf1}
-    };
-
-    public static boolean isWeakKey(byte[] key, int offset, int len) {
-        boolean match;
-        for (byte[] weakKey : WEAK_KEYS) {
-            match = true;
-            if (weakKey.length == len) {
-                for (int i = 0; i < len; i++) {
-                    if (weakKey[i] != key[i]) {
-                        match = false;
-                        break;
-                    }
-                }
-            }
-            if (match) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * MIT krb5 FIXUP(k) in s2k_des.c
-     */
-    public static void fixKey(byte[] key, int offset, int len) {
-        if (isWeakKey(key, offset, len)) {
-            key[offset + 7] ^= (byte) 0xf0;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
index ac0f6be..e645a32 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
@@ -22,8 +22,14 @@ package org.apache.kerby.kerberos.kerb.crypto;
 import org.apache.kerby.kerberos.kerb.KrbErrorCode;
 import org.apache.kerby.kerberos.kerb.crypto.enc.*;
 import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.crypto.util.Random;
 import org.apache.kerby.kerberos.kerb.spec.common.*;
 
+/**
+ * Encryption handler as the highest level API for encryption stuffs defined in
+ * Kerberos RFC3961. It supports all the encryption types. New encryption type
+ * should be added updating this.
+ */
 public class EncryptionHandler {
 
     public static EncryptionType getEncryptionType(String eType) throws KrbException {
@@ -45,7 +51,8 @@ public class EncryptionHandler {
         return getEncHandler(eType, false);
     }
 
-    private static EncTypeHandler getEncHandler(EncryptionType eType, boolean check) throws KrbException {
+    private static EncTypeHandler getEncHandler(EncryptionType eType,
+                                                boolean check) throws KrbException {
         EncTypeHandler encHandler = null;
 
         switch (eType) {
@@ -113,7 +120,8 @@ public class EncryptionHandler {
         return encHandler;
     }
 
-    public static EncryptedData encrypt(byte[] plainText, EncryptionKey key, KeyUsage usage) throws KrbException {
+    public static EncryptedData encrypt(byte[] plainText, EncryptionKey key,
+                                        KeyUsage usage) throws KrbException {
         EncTypeHandler handler = getEncHandler(key.getKeyType());
         byte[] cipher = handler.encrypt(plainText, key.getKeyData(), usage.getValue());
 
@@ -125,17 +133,20 @@ public class EncryptionHandler {
         return ed;
     }
 
-    public static byte[] decrypt(byte[] data, EncryptionKey key, KeyUsage usage) throws KrbException {
+    public static byte[] decrypt(byte[] data, EncryptionKey key,
+                                 KeyUsage usage) throws KrbException {
         EncTypeHandler handler = getEncHandler(key.getKeyType());
 
         byte[] plainData = handler.decrypt(data, key.getKeyData(), usage.getValue());
         return plainData;
     }
 
-    public static byte[] decrypt(EncryptedData data, EncryptionKey key, KeyUsage usage) throws KrbException {
+    public static byte[] decrypt(EncryptedData data, EncryptionKey key,
+                                 KeyUsage usage) throws KrbException {
         EncTypeHandler handler = getEncHandler(key.getKeyType());
 
-        byte[] plainData = handler.decrypt(data.getCipher(), key.getKeyData(), usage.getValue());
+        byte[] plainData = handler.decrypt(data.getCipher(),
+                key.getKeyData(), usage.getValue());
         return plainData;
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Hmac.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Hmac.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Hmac.java
deleted file mode 100644
index e7a7614..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Hmac.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-import org.apache.kerby.kerberos.kerb.crypto.cksum.HashProvider;
-import org.apache.kerby.kerberos.kerb.KrbException;
-
-import java.util.Arrays;
-
-/**
- * Based on MIT krb5 hmac.c
- */
-public class Hmac {
-
-    public static byte[] hmac(HashProvider hashProvider, byte[] key,
-                       byte[] data, int outputSize) throws KrbException {
-        return hmac(hashProvider, key, data, 0, data.length, outputSize);
-    }
-
-    public static byte[] hmac(HashProvider hashProvider, byte[] key, byte[] data,
-                       int start, int len, int outputSize) throws KrbException {
-        byte[] hash = Hmac.hmac(hashProvider, key, data, start, len);
-
-        byte[] output = new byte[outputSize];
-        System.arraycopy(hash, 0, output, 0, outputSize);
-        return output;
-    }
-
-    public static byte[] hmac(HashProvider hashProvider,
-                              byte[] key, byte[] data) throws KrbException {
-        return hmac(hashProvider, key, data, 0, data.length);
-    }
-
-    public static byte[] hmac(HashProvider hashProvider,
-                              byte[] key, byte[] data, int start, int len) throws KrbException {
-
-        int blockLen = hashProvider.blockSize();
-        byte[] innerPaddedKey = new byte[blockLen];
-        byte[] outerPaddedKey = new byte[blockLen];
-
-        // Create the inner padded key
-        Arrays.fill(innerPaddedKey, (byte)0x36);
-        for (int i = 0; i < key.length; i++) {
-            innerPaddedKey[i] ^= key[i];
-        }
-
-        // Create the outer padded key
-        Arrays.fill(outerPaddedKey, (byte)0x5c);
-        for (int i = 0; i < key.length; i++) {
-            outerPaddedKey[i] ^= key[i];
-        }
-
-        hashProvider.hash(innerPaddedKey);
-
-        hashProvider.hash(data, start, len);
-
-        byte[] tmp = hashProvider.output();
-
-        hashProvider.hash(outerPaddedKey);
-        hashProvider.hash(tmp);
-
-        tmp = hashProvider.output();
-        return tmp;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Md4.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Md4.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Md4.java
deleted file mode 100644
index 4a4f1a0..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Md4.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-import java.security.DigestException;
-import java.security.MessageDigest;
-
-/**
- * MD4.java - An implementation of Ron Rivest's MD4 message digest algorithm.
- * The MD4 algorithm is designed to be quite fast on 32-bit machines. In
- * addition, the MD4 algorithm does not require any large substitution
- * tables.
- *
- * @see The <a href="http://www.ietf.org/rfc/rfc1320.txt">MD4</a> Message-
- *    Digest Algorithm by R. Rivest.
- *
- * @author <a href="http://mina.apache.org">Apache MINA Project</a>
- * @since MINA 2.0.0-M3
- */
-
-/**
- * Copied from Mina project and modified a bit
- */
-public class Md4 extends MessageDigest {
-
-    /**
-     * The MD4 algorithm message digest length is 16 bytes wide.
-     */
-    public static final int BYTE_DIGEST_LENGTH = 16;
-
-    /**
-     * The MD4 algorithm block length is 64 bytes wide.
-     */
-    public static final int BYTE_BLOCK_LENGTH = 64;
-
-    /**
-     * The initial values of the four registers. RFC gives the values 
-     * in LE so we converted it as JAVA uses BE endianness.
-     */
-    private final static int A = 0x67452301;
-
-    private final static int B = 0xefcdab89;
-
-    private final static int C = 0x98badcfe;
-
-    private final static int D = 0x10325476;
-
-    /**
-     * The four registers initialized with the above IVs.
-     */
-    private int a = A;
-
-    private int b = B;
-
-    private int c = C;
-
-    private int d = D;
-
-    /**
-     * Counts the total length of the data being digested.
-     */
-    private long msgLength;
-
-    /**
-     * The internal buffer is {@link BLOCK_LENGTH} wide.
-     */
-    private final byte[] buffer = new byte[BYTE_BLOCK_LENGTH];
-
-    /**
-     * Default constructor.
-     */
-    public Md4() {
-        super("MD4");
-        engineReset();
-    }
-
-    /**
-     * Returns the digest length in bytes.
-     *
-     * @return the digest length in bytes.
-     */
-    protected int engineGetDigestLength() {
-        return BYTE_DIGEST_LENGTH;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected void engineUpdate(byte b) {
-        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);
-        buffer[pos] = b;
-        msgLength++;
-
-        // If buffer contains enough data then process it.
-        if (pos == (BYTE_BLOCK_LENGTH - 1)) {
-            process(buffer, 0);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected void engineUpdate(byte[] b, int offset, int len) {
-        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);
-        int nbOfCharsToFillBuf = BYTE_BLOCK_LENGTH - pos;
-        int blkStart = 0;
-
-        msgLength += len;
-
-        // Process each full block
-        if (len >= nbOfCharsToFillBuf) {
-            System.arraycopy(b, offset, buffer, pos, nbOfCharsToFillBuf);
-            process(buffer, 0);
-            for (blkStart = nbOfCharsToFillBuf; blkStart + BYTE_BLOCK_LENGTH - 1 < len; blkStart += BYTE_BLOCK_LENGTH) {
-                process(b, offset + blkStart);
-            }
-            pos = 0;
-        }
-
-        // Fill buffer with the remaining data
-        if (blkStart < len) {
-            System.arraycopy(b, offset + blkStart, buffer, pos, len - blkStart);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected byte[] engineDigest() {
-        byte[] p = pad();
-        engineUpdate(p, 0, p.length);
-        byte[] digest = { (byte) a, (byte) (a >>> 8), (byte) (a >>> 16), (byte) (a >>> 24), (byte) b, (byte) (b >>> 8),
-                (byte) (b >>> 16), (byte) (b >>> 24), (byte) c, (byte) (c >>> 8), (byte) (c >>> 16), (byte) (c >>> 24),
-                (byte) d, (byte) (d >>> 8), (byte) (d >>> 16), (byte) (d >>> 24) };
-
-        engineReset();
-
-        return digest;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected int engineDigest(byte[] buf, int offset, int len) throws DigestException {
-        if (offset < 0 || offset + len >= buf.length) {
-            throw new DigestException("Wrong offset or not enough space to store the digest");
-        }
-        int destLength = Math.min(len, BYTE_DIGEST_LENGTH);
-        System.arraycopy(engineDigest(), 0, buf, offset, destLength);
-        return destLength;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    protected void engineReset() {
-        a = A;
-        b = B;
-        c = C;
-        d = D;
-        msgLength = 0;
-    }
-
-    /**
-     * Pads the buffer by appending the byte 0x80, then append as many zero 
-     * bytes as necessary to make the buffer length a multiple of 64 bytes.  
-     * The last 8 bytes will be filled with the length of the buffer in bits.
-     * If there's no room to store the length in bits in the block i.e the block 
-     * is larger than 56 bytes then an additionnal 64-bytes block is appended.
-     * 
-     * @see sections 3.1 & 3.2 of the RFC 1320.
-     * 
-     * @return the pad byte array
-     */
-    private byte[] pad() {
-        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);
-        int padLength = (pos < 56) ? (64 - pos) : (128 - pos);
-        byte[] pad = new byte[padLength];
-
-        // First bit of the padding set to 1
-        pad[0] = (byte) 0x80;
-
-        long bits = msgLength << 3;
-        int index = padLength - 8;
-        for (int i = 0; i < 8; i++) {
-            pad[index++] = (byte) (bits >>> (i << 3));
-        }
-
-        return pad;
-    }
-
-    /** 
-     * Process one 64-byte block. Algorithm is constituted by three rounds.
-     * Note that F, G and H functions were inlined for improved performance.
-     * 
-     * @param in the byte array to process
-     * @param offset the offset at which the 64-byte block is stored
-     */
-    private void process(byte[] in, int offset) {
-        // Save previous state.
-        int aa = a;
-        int bb = b;
-        int cc = c;
-        int dd = d;
-
-        // Copy the block to process into X array
-        int[] X = new int[16];
-        for (int i = 0; i < 16; i++) {
-            X[i] = (in[offset++] & 0xff) | (in[offset++] & 0xff) << 8 | (in[offset++] & 0xff) << 16
-                    | (in[offset++] & 0xff) << 24;
-        }
-
-        // Round 1
-        a += ((b & c) | (~b & d)) + X[0];
-        a = a << 3 | a >>> (32 - 3);
-        d += ((a & b) | (~a & c)) + X[1];
-        d = d << 7 | d >>> (32 - 7);
-        c += ((d & a) | (~d & b)) + X[2];
-        c = c << 11 | c >>> (32 - 11);
-        b += ((c & d) | (~c & a)) + X[3];
-        b = b << 19 | b >>> (32 - 19);
-        a += ((b & c) | (~b & d)) + X[4];
-        a = a << 3 | a >>> (32 - 3);
-        d += ((a & b) | (~a & c)) + X[5];
-        d = d << 7 | d >>> (32 - 7);
-        c += ((d & a) | (~d & b)) + X[6];
-        c = c << 11 | c >>> (32 - 11);
-        b += ((c & d) | (~c & a)) + X[7];
-        b = b << 19 | b >>> (32 - 19);
-        a += ((b & c) | (~b & d)) + X[8];
-        a = a << 3 | a >>> (32 - 3);
-        d += ((a & b) | (~a & c)) + X[9];
-        d = d << 7 | d >>> (32 - 7);
-        c += ((d & a) | (~d & b)) + X[10];
-        c = c << 11 | c >>> (32 - 11);
-        b += ((c & d) | (~c & a)) + X[11];
-        b = b << 19 | b >>> (32 - 19);
-        a += ((b & c) | (~b & d)) + X[12];
-        a = a << 3 | a >>> (32 - 3);
-        d += ((a & b) | (~a & c)) + X[13];
-        d = d << 7 | d >>> (32 - 7);
-        c += ((d & a) | (~d & b)) + X[14];
-        c = c << 11 | c >>> (32 - 11);
-        b += ((c & d) | (~c & a)) + X[15];
-        b = b << 19 | b >>> (32 - 19);
-
-        // Round 2
-        a += ((b & (c | d)) | (c & d)) + X[0] + 0x5a827999;
-        a = a << 3 | a >>> (32 - 3);
-        d += ((a & (b | c)) | (b & c)) + X[4] + 0x5a827999;
-        d = d << 5 | d >>> (32 - 5);
-        c += ((d & (a | b)) | (a & b)) + X[8] + 0x5a827999;
-        c = c << 9 | c >>> (32 - 9);
-        b += ((c & (d | a)) | (d & a)) + X[12] + 0x5a827999;
-        b = b << 13 | b >>> (32 - 13);
-        a += ((b & (c | d)) | (c & d)) + X[1] + 0x5a827999;
-        a = a << 3 | a >>> (32 - 3);
-        d += ((a & (b | c)) | (b & c)) + X[5] + 0x5a827999;
-        d = d << 5 | d >>> (32 - 5);
-        c += ((d & (a | b)) | (a & b)) + X[9] + 0x5a827999;
-        c = c << 9 | c >>> (32 - 9);
-        b += ((c & (d | a)) | (d & a)) + X[13] + 0x5a827999;
-        b = b << 13 | b >>> (32 - 13);
-        a += ((b & (c | d)) | (c & d)) + X[2] + 0x5a827999;
-        a = a << 3 | a >>> (32 - 3);
-        d += ((a & (b | c)) | (b & c)) + X[6] + 0x5a827999;
-        d = d << 5 | d >>> (32 - 5);
-        c += ((d & (a | b)) | (a & b)) + X[10] + 0x5a827999;
-        c = c << 9 | c >>> (32 - 9);
-        b += ((c & (d | a)) | (d & a)) + X[14] + 0x5a827999;
-        b = b << 13 | b >>> (32 - 13);
-        a += ((b & (c | d)) | (c & d)) + X[3] + 0x5a827999;
-        a = a << 3 | a >>> (32 - 3);
-        d += ((a & (b | c)) | (b & c)) + X[7] + 0x5a827999;
-        d = d << 5 | d >>> (32 - 5);
-        c += ((d & (a | b)) | (a & b)) + X[11] + 0x5a827999;
-        c = c << 9 | c >>> (32 - 9);
-        b += ((c & (d | a)) | (d & a)) + X[15] + 0x5a827999;
-        b = b << 13 | b >>> (32 - 13);
-
-        // Round 3
-        a += (b ^ c ^ d) + X[0] + 0x6ed9eba1;
-        a = a << 3 | a >>> (32 - 3);
-        d += (a ^ b ^ c) + X[8] + 0x6ed9eba1;
-        d = d << 9 | d >>> (32 - 9);
-        c += (d ^ a ^ b) + X[4] + 0x6ed9eba1;
-        c = c << 11 | c >>> (32 - 11);
-        b += (c ^ d ^ a) + X[12] + 0x6ed9eba1;
-        b = b << 15 | b >>> (32 - 15);
-        a += (b ^ c ^ d) + X[2] + 0x6ed9eba1;
-        a = a << 3 | a >>> (32 - 3);
-        d += (a ^ b ^ c) + X[10] + 0x6ed9eba1;
-        d = d << 9 | d >>> (32 - 9);
-        c += (d ^ a ^ b) + X[6] + 0x6ed9eba1;
-        c = c << 11 | c >>> (32 - 11);
-        b += (c ^ d ^ a) + X[14] + 0x6ed9eba1;
-        b = b << 15 | b >>> (32 - 15);
-        a += (b ^ c ^ d) + X[1] + 0x6ed9eba1;
-        a = a << 3 | a >>> (32 - 3);
-        d += (a ^ b ^ c) + X[9] + 0x6ed9eba1;
-        d = d << 9 | d >>> (32 - 9);
-        c += (d ^ a ^ b) + X[5] + 0x6ed9eba1;
-        c = c << 11 | c >>> (32 - 11);
-        b += (c ^ d ^ a) + X[13] + 0x6ed9eba1;
-        b = b << 15 | b >>> (32 - 15);
-        a += (b ^ c ^ d) + X[3] + 0x6ed9eba1;
-        a = a << 3 | a >>> (32 - 3);
-        d += (a ^ b ^ c) + X[11] + 0x6ed9eba1;
-        d = d << 9 | d >>> (32 - 9);
-        c += (d ^ a ^ b) + X[7] + 0x6ed9eba1;
-        c = c << 11 | c >>> (32 - 11);
-        b += (c ^ d ^ a) + X[15] + 0x6ed9eba1;
-        b = b << 15 | b >>> (32 - 15);
-
-        //Update state.
-        a += aa;
-        b += bb;
-        c += cc;
-        d += dd;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Nfold.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Nfold.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Nfold.java
deleted file mode 100644
index 9c98fcc..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Nfold.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-import java.util.Arrays;
-
-/**
- * Based on MIT krb5 nfold.c
- */
-
-/*
- * n-fold(k-bits):
- * l = lcm(n,k)
- * r = l/k
- * s = k-bits | k-bits rot 13 | k-bits rot 13*2 | ... | k-bits rot 13*(r-1)
- * compute the 1's complement sum:
- * n-fold = s[0..n-1]+s[n..2n-1]+s[2n..3n-1]+..+s[(k-1)*n..k*n-1]
- */
-public class Nfold {
-
-    /**
-     * representation: msb first, assume n and k are multiples of 8, and
-     * that k>=16.  this is the case of all the cryptosystems which are
-     * likely to be used.  this function can be replaced if that
-     * assumption ever fails.
-     */
-    public static byte[] nfold(byte[] inBytes, int size) {
-        int inBytesNum = inBytes.length; // count inBytes byte
-        int outBytesNum = size; // count inBytes byte
-
-        int a, b, c, lcm;
-        a = outBytesNum;
-        b = inBytesNum;
-
-        while (b != 0) {
-            c = b;
-            b = a % b;
-            a = c;
-        }
-        lcm = (outBytesNum * inBytesNum) / a;
-
-        byte[] outBytes = new byte[outBytesNum];
-        Arrays.fill(outBytes, (byte)0);
-
-        int tmpByte = 0;
-        int msbit, i, tmp;
-
-        for (i = lcm-1; i >= 0; i--) {
-            // first, start with the msbit inBytes the first, unrotated byte
-            tmp = ((inBytesNum<<3)-1);
-            // then, for each byte, shift to the right for each repetition
-            tmp += (((inBytesNum<<3)+13)*(i/inBytesNum));
-            // last, pick outBytes the correct byte within that shifted repetition
-            tmp += ((inBytesNum-(i%inBytesNum)) << 3);
-
-            msbit = tmp % (inBytesNum << 3);
-
-            // pull outBytes the byte value itself
-            tmp =  ((((inBytes[((inBytesNum - 1)-(msbit >>> 3)) % inBytesNum] & 0xff) << 8) |
-                (inBytes[((inBytesNum) - (msbit >>> 3)) % inBytesNum] & 0xff))
-                >>>((msbit & 7)+1)) & 0xff;
-
-            tmpByte += tmp;
-            tmp = (outBytes[i % outBytesNum] & 0xff);
-            tmpByte += tmp;
-
-            outBytes[i % outBytesNum] = (byte) (tmpByte & 0xff);
-
-            tmpByte >>>= 8;
-        }
-
-        // if there's a carry bit left over, add it back inBytes
-        if (tmpByte != 0) {
-            for (i = outBytesNum-1; i >= 0; i--) {
-                // do the addition
-                tmpByte += (outBytes[i] & 0xff);
-                outBytes[i] = (byte) (tmpByte & 0xff);
-
-                tmpByte >>>= 8;
-            }
-        }
-
-        return outBytes;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Nonce.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Nonce.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Nonce.java
deleted file mode 100644
index 0f22f97..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Nonce.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-import java.security.SecureRandom;
-
-public class Nonce {
-
-    private static SecureRandom srand = new SecureRandom();
-
-    public static synchronized int value() {
-        int value = srand.nextInt();
-        return value & 0x7fffffff;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Pbkdf.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Pbkdf.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Pbkdf.java
deleted file mode 100644
index 989772b..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Pbkdf.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-import javax.crypto.SecretKey;
-import javax.crypto.SecretKeyFactory;
-import javax.crypto.spec.PBEKeySpec;
-import java.security.GeneralSecurityException;
-
-public class Pbkdf {
-
-    public static byte[] PBKDF2(char[] secret, byte[] salt,
-                                   int count, int keySize) throws GeneralSecurityException {
-
-        PBEKeySpec ks = new PBEKeySpec(secret, salt, count, keySize * 8);
-        SecretKeyFactory skf =
-                SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
-        SecretKey key = skf.generateSecret(ks);
-        byte[] result = key.getEncoded();
-
-        return result;
-    }
-}


[17/30] directory-kerberos git commit: Adding some stuff to the root pom

Posted by dr...@apache.org.
Adding some stuff to the root pom


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

Branch: refs/heads/installation
Commit: 35ab61ee878b13ef24d7c1f6864e45a1b301b72d
Parents: 82a472f
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Feb 4 12:04:10 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Feb 4 12:04:10 2015 +0000

----------------------------------------------------------------------
 pom.xml | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/35ab61ee/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ab19a89..6df81b6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,6 +25,27 @@
   <url>http://www.kerby.org</url>
   <inceptionYear>2014</inceptionYear>
 
+  <scm>
+    <connection>scm:git:http://git-wip-us.apache.org/repos/asf/directory-kerberos.git</connection>
+    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/directory-kerberos.git</developerConnection>
+    <tag>HEAD</tag>
+  </scm>
+  <issueManagement>
+    <system>jira</system>
+    <url>https://issues.apache.org/jira/browse/DIRKRB</url>
+  </issueManagement>
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <organization>
+    <name>The Apache Software Foundation</name>
+    <url>http://www.apache.org/</url>
+  </organization>
+
   <properties>
     <junit.version>4.12</junit.version>
     <slf4j.version>1.7.10</slf4j.version>
@@ -191,4 +212,18 @@
       </plugin>
     </plugins>
   </build>
+
+  <distributionManagement>
+    <repository>
+      <id>apache.releases.https</id>
+      <name>Apache Release Distribution Repository</name>
+      <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>
+    </repository>
+    <snapshotRepository>
+      <id>apache.snapshots.https</id>
+      <name>Apache Development Snapshot Repository</name>
+      <url>https://repository.apache.org/content/repositories/snapshots</url>
+    </snapshotRepository>
+  </distributionManagement>
+
 </project>


[16/30] directory-kerberos git commit: Updating some dependencies

Posted by dr...@apache.org.
Updating some dependencies


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

Branch: refs/heads/installation
Commit: 82a472f3043bad6e5a1f3e6c22e8187198faceb2
Parents: 8423c04
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Feb 4 11:57:34 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Feb 4 11:57:34 2015 +0000

----------------------------------------------------------------------
 benchmark/pom.xml       | 19 ++++++++++++-------
 lib/kerby-token/pom.xml |  2 +-
 pom.xml                 |  2 +-
 3 files changed, 14 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/82a472f3/benchmark/pom.xml
----------------------------------------------------------------------
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index aa81e51..5d112ea 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -26,6 +26,11 @@
   <name>Kerby benchmark</name>
   <description>Kerby benchmark tests</description>
 
+  <properties>
+    <apache.ds.version>2.0.0-M19</apache.ds.version>
+    <apache.ds.api.version>1.0.0-M28</apache.ds.api.version>
+  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.kerby</groupId>
@@ -40,7 +45,7 @@
     <dependency>
       <groupId>org.apache.directory.server</groupId>
       <artifactId>apacheds-core-api</artifactId>
-      <version>2.0.0-M15</version>
+      <version>${apache.ds.version}</version>
       <scope>compile</scope>
       <exclusions>
         <exclusion>
@@ -52,7 +57,7 @@
     <dependency>
       <groupId>org.apache.directory.server</groupId>
       <artifactId>apacheds-interceptor-kerberos</artifactId>
-      <version>2.0.0-M15</version>
+      <version>${apache.ds.version}</version>
       <scope>compile</scope>
       <exclusions>
         <exclusion>
@@ -64,13 +69,13 @@
     <dependency>
       <groupId>org.apache.directory.server</groupId>
       <artifactId>apacheds-protocol-shared</artifactId>
-      <version>2.0.0-M15</version>
+      <version>${apache.ds.version}</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.directory.server</groupId>
       <artifactId>apacheds-protocol-kerberos</artifactId>
-      <version>2.0.0-M15</version>
+      <version>${apache.ds.version}</version>
       <scope>compile</scope>
       <exclusions>
       </exclusions>
@@ -78,7 +83,7 @@
     <dependency>
       <groupId>org.apache.directory.server</groupId>
       <artifactId>apacheds-ldif-partition</artifactId>
-      <version>2.0.0-M15</version>
+      <version>${apache.ds.version}</version>
       <scope>compile</scope>
       <exclusions>
         <exclusion>
@@ -90,7 +95,7 @@
     <dependency>
       <groupId>org.apache.directory.server</groupId>
       <artifactId>apacheds-mavibot-partition</artifactId>
-      <version>2.0.0-M15</version>
+      <version>${apache.ds.version}</version>
       <scope>compile</scope>
       <exclusions>
         <exclusion>
@@ -102,7 +107,7 @@
     <dependency>
       <groupId>org.apache.directory.api</groupId>
       <artifactId>api-all</artifactId>
-      <version>1.0.0-M20</version>
+      <version>${apache.ds.api.version}</version>
       <scope>compile</scope>
       <exclusions>
         <exclusion>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/82a472f3/lib/kerby-token/pom.xml
----------------------------------------------------------------------
diff --git a/lib/kerby-token/pom.xml b/lib/kerby-token/pom.xml
index 60a8dfd..a018130 100644
--- a/lib/kerby-token/pom.xml
+++ b/lib/kerby-token/pom.xml
@@ -32,7 +32,7 @@
     <dependency>
       <groupId>com.nimbusds</groupId>
       <artifactId>nimbus-jose-jwt</artifactId>
-      <version>3.2</version>
+      <version>3.8.2</version>
     </dependency>
     <dependency>
       <groupId>org.apache.kerby</groupId>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/82a472f3/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c48f2e5..ab19a89 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,10 +49,10 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
-        <scope>test</scope>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${junit.version}</version>
+        <scope>test</scope>
       </dependency>
 
       <dependency>


[11/30] directory-kerberos git commit: Cleaned some bit and refactored some codes in kerb-crypto

Posted by dr...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Hmac.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Hmac.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Hmac.java
new file mode 100644
index 0000000..cebb3a1
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Hmac.java
@@ -0,0 +1,82 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+import org.apache.kerby.kerberos.kerb.crypto.cksum.HashProvider;
+import org.apache.kerby.kerberos.kerb.KrbException;
+
+import java.util.Arrays;
+
+/**
+ * Ref. MIT krb5 hmac.c
+ */
+public class Hmac {
+
+    public static byte[] hmac(HashProvider hashProvider, byte[] key,
+                       byte[] data, int outputSize) throws KrbException {
+        return hmac(hashProvider, key, data, 0, data.length, outputSize);
+    }
+
+    public static byte[] hmac(HashProvider hashProvider, byte[] key, byte[] data,
+                       int start, int len, int outputSize) throws KrbException {
+        byte[] hash = Hmac.hmac(hashProvider, key, data, start, len);
+
+        byte[] output = new byte[outputSize];
+        System.arraycopy(hash, 0, output, 0, outputSize);
+        return output;
+    }
+
+    public static byte[] hmac(HashProvider hashProvider,
+                              byte[] key, byte[] data) throws KrbException {
+        return hmac(hashProvider, key, data, 0, data.length);
+    }
+
+    public static byte[] hmac(HashProvider hashProvider,
+                              byte[] key, byte[] data, int start, int len) throws KrbException {
+
+        int blockLen = hashProvider.blockSize();
+        byte[] innerPaddedKey = new byte[blockLen];
+        byte[] outerPaddedKey = new byte[blockLen];
+
+        // Create the inner padded key
+        Arrays.fill(innerPaddedKey, (byte)0x36);
+        for (int i = 0; i < key.length; i++) {
+            innerPaddedKey[i] ^= key[i];
+        }
+
+        // Create the outer padded key
+        Arrays.fill(outerPaddedKey, (byte)0x5c);
+        for (int i = 0; i < key.length; i++) {
+            outerPaddedKey[i] ^= key[i];
+        }
+
+        hashProvider.hash(innerPaddedKey);
+
+        hashProvider.hash(data, start, len);
+
+        byte[] tmp = hashProvider.output();
+
+        hashProvider.hash(outerPaddedKey);
+        hashProvider.hash(tmp);
+
+        tmp = hashProvider.output();
+        return tmp;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Md4.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Md4.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Md4.java
new file mode 100644
index 0000000..c5a4a2a
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Md4.java
@@ -0,0 +1,338 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+import java.security.DigestException;
+import java.security.MessageDigest;
+
+/**
+ * MD4.java - An implementation of Ron Rivest's MD4 message digest algorithm.
+ * The MD4 algorithm is designed to be quite fast on 32-bit machines. In
+ * addition, the MD4 algorithm does not require any large substitution
+ * tables.
+ *
+ * @see The <a href="http://www.ietf.org/rfc/rfc1320.txt">MD4</a> Message-
+ *    Digest Algorithm by R. Rivest.
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ * @since MINA 2.0.0-M3
+ */
+
+/**
+ * Copied from Mina project and modified a bit
+ */
+public class Md4 extends MessageDigest {
+
+    /**
+     * The MD4 algorithm message digest length is 16 bytes wide.
+     */
+    public static final int BYTE_DIGEST_LENGTH = 16;
+
+    /**
+     * The MD4 algorithm block length is 64 bytes wide.
+     */
+    public static final int BYTE_BLOCK_LENGTH = 64;
+
+    /**
+     * The initial values of the four registers. RFC gives the values 
+     * in LE so we converted it as JAVA uses BE endianness.
+     */
+    private final static int A = 0x67452301;
+
+    private final static int B = 0xefcdab89;
+
+    private final static int C = 0x98badcfe;
+
+    private final static int D = 0x10325476;
+
+    /**
+     * The four registers initialized with the above IVs.
+     */
+    private int a = A;
+
+    private int b = B;
+
+    private int c = C;
+
+    private int d = D;
+
+    /**
+     * Counts the total length of the data being digested.
+     */
+    private long msgLength;
+
+    /**
+     * The internal buffer is {@link BLOCK_LENGTH} wide.
+     */
+    private final byte[] buffer = new byte[BYTE_BLOCK_LENGTH];
+
+    /**
+     * Default constructor.
+     */
+    public Md4() {
+        super("MD4");
+        engineReset();
+    }
+
+    /**
+     * Returns the digest length in bytes.
+     *
+     * @return the digest length in bytes.
+     */
+    protected int engineGetDigestLength() {
+        return BYTE_DIGEST_LENGTH;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void engineUpdate(byte b) {
+        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);
+        buffer[pos] = b;
+        msgLength++;
+
+        // If buffer contains enough data then process it.
+        if (pos == (BYTE_BLOCK_LENGTH - 1)) {
+            process(buffer, 0);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void engineUpdate(byte[] b, int offset, int len) {
+        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);
+        int nbOfCharsToFillBuf = BYTE_BLOCK_LENGTH - pos;
+        int blkStart = 0;
+
+        msgLength += len;
+
+        // Process each full block
+        if (len >= nbOfCharsToFillBuf) {
+            System.arraycopy(b, offset, buffer, pos, nbOfCharsToFillBuf);
+            process(buffer, 0);
+            for (blkStart = nbOfCharsToFillBuf; blkStart + BYTE_BLOCK_LENGTH - 1 < len; blkStart += BYTE_BLOCK_LENGTH) {
+                process(b, offset + blkStart);
+            }
+            pos = 0;
+        }
+
+        // Fill buffer with the remaining data
+        if (blkStart < len) {
+            System.arraycopy(b, offset + blkStart, buffer, pos, len - blkStart);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected byte[] engineDigest() {
+        byte[] p = pad();
+        engineUpdate(p, 0, p.length);
+        byte[] digest = { (byte) a, (byte) (a >>> 8), (byte) (a >>> 16), (byte) (a >>> 24), (byte) b, (byte) (b >>> 8),
+                (byte) (b >>> 16), (byte) (b >>> 24), (byte) c, (byte) (c >>> 8), (byte) (c >>> 16), (byte) (c >>> 24),
+                (byte) d, (byte) (d >>> 8), (byte) (d >>> 16), (byte) (d >>> 24) };
+
+        engineReset();
+
+        return digest;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected int engineDigest(byte[] buf, int offset, int len) throws DigestException {
+        if (offset < 0 || offset + len >= buf.length) {
+            throw new DigestException("Wrong offset or not enough space to store the digest");
+        }
+        int destLength = Math.min(len, BYTE_DIGEST_LENGTH);
+        System.arraycopy(engineDigest(), 0, buf, offset, destLength);
+        return destLength;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void engineReset() {
+        a = A;
+        b = B;
+        c = C;
+        d = D;
+        msgLength = 0;
+    }
+
+    /**
+     * Pads the buffer by appending the byte 0x80, then append as many zero 
+     * bytes as necessary to make the buffer length a multiple of 64 bytes.  
+     * The last 8 bytes will be filled with the length of the buffer in bits.
+     * If there's no room to store the length in bits in the block i.e the block 
+     * is larger than 56 bytes then an additionnal 64-bytes block is appended.
+     * 
+     * @see sections 3.1 & 3.2 of the RFC 1320.
+     * 
+     * @return the pad byte array
+     */
+    private byte[] pad() {
+        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);
+        int padLength = (pos < 56) ? (64 - pos) : (128 - pos);
+        byte[] pad = new byte[padLength];
+
+        // First bit of the padding set to 1
+        pad[0] = (byte) 0x80;
+
+        long bits = msgLength << 3;
+        int index = padLength - 8;
+        for (int i = 0; i < 8; i++) {
+            pad[index++] = (byte) (bits >>> (i << 3));
+        }
+
+        return pad;
+    }
+
+    /** 
+     * Process one 64-byte block. Algorithm is constituted by three rounds.
+     * Note that F, G and H functions were inlined for improved performance.
+     * 
+     * @param in the byte array to process
+     * @param offset the offset at which the 64-byte block is stored
+     */
+    private void process(byte[] in, int offset) {
+        // Save previous state.
+        int aa = a;
+        int bb = b;
+        int cc = c;
+        int dd = d;
+
+        // Copy the block to process into X array
+        int[] X = new int[16];
+        for (int i = 0; i < 16; i++) {
+            X[i] = (in[offset++] & 0xff) | (in[offset++] & 0xff) << 8 | (in[offset++] & 0xff) << 16
+                    | (in[offset++] & 0xff) << 24;
+        }
+
+        // Round 1
+        a += ((b & c) | (~b & d)) + X[0];
+        a = a << 3 | a >>> (32 - 3);
+        d += ((a & b) | (~a & c)) + X[1];
+        d = d << 7 | d >>> (32 - 7);
+        c += ((d & a) | (~d & b)) + X[2];
+        c = c << 11 | c >>> (32 - 11);
+        b += ((c & d) | (~c & a)) + X[3];
+        b = b << 19 | b >>> (32 - 19);
+        a += ((b & c) | (~b & d)) + X[4];
+        a = a << 3 | a >>> (32 - 3);
+        d += ((a & b) | (~a & c)) + X[5];
+        d = d << 7 | d >>> (32 - 7);
+        c += ((d & a) | (~d & b)) + X[6];
+        c = c << 11 | c >>> (32 - 11);
+        b += ((c & d) | (~c & a)) + X[7];
+        b = b << 19 | b >>> (32 - 19);
+        a += ((b & c) | (~b & d)) + X[8];
+        a = a << 3 | a >>> (32 - 3);
+        d += ((a & b) | (~a & c)) + X[9];
+        d = d << 7 | d >>> (32 - 7);
+        c += ((d & a) | (~d & b)) + X[10];
+        c = c << 11 | c >>> (32 - 11);
+        b += ((c & d) | (~c & a)) + X[11];
+        b = b << 19 | b >>> (32 - 19);
+        a += ((b & c) | (~b & d)) + X[12];
+        a = a << 3 | a >>> (32 - 3);
+        d += ((a & b) | (~a & c)) + X[13];
+        d = d << 7 | d >>> (32 - 7);
+        c += ((d & a) | (~d & b)) + X[14];
+        c = c << 11 | c >>> (32 - 11);
+        b += ((c & d) | (~c & a)) + X[15];
+        b = b << 19 | b >>> (32 - 19);
+
+        // Round 2
+        a += ((b & (c | d)) | (c & d)) + X[0] + 0x5a827999;
+        a = a << 3 | a >>> (32 - 3);
+        d += ((a & (b | c)) | (b & c)) + X[4] + 0x5a827999;
+        d = d << 5 | d >>> (32 - 5);
+        c += ((d & (a | b)) | (a & b)) + X[8] + 0x5a827999;
+        c = c << 9 | c >>> (32 - 9);
+        b += ((c & (d | a)) | (d & a)) + X[12] + 0x5a827999;
+        b = b << 13 | b >>> (32 - 13);
+        a += ((b & (c | d)) | (c & d)) + X[1] + 0x5a827999;
+        a = a << 3 | a >>> (32 - 3);
+        d += ((a & (b | c)) | (b & c)) + X[5] + 0x5a827999;
+        d = d << 5 | d >>> (32 - 5);
+        c += ((d & (a | b)) | (a & b)) + X[9] + 0x5a827999;
+        c = c << 9 | c >>> (32 - 9);
+        b += ((c & (d | a)) | (d & a)) + X[13] + 0x5a827999;
+        b = b << 13 | b >>> (32 - 13);
+        a += ((b & (c | d)) | (c & d)) + X[2] + 0x5a827999;
+        a = a << 3 | a >>> (32 - 3);
+        d += ((a & (b | c)) | (b & c)) + X[6] + 0x5a827999;
+        d = d << 5 | d >>> (32 - 5);
+        c += ((d & (a | b)) | (a & b)) + X[10] + 0x5a827999;
+        c = c << 9 | c >>> (32 - 9);
+        b += ((c & (d | a)) | (d & a)) + X[14] + 0x5a827999;
+        b = b << 13 | b >>> (32 - 13);
+        a += ((b & (c | d)) | (c & d)) + X[3] + 0x5a827999;
+        a = a << 3 | a >>> (32 - 3);
+        d += ((a & (b | c)) | (b & c)) + X[7] + 0x5a827999;
+        d = d << 5 | d >>> (32 - 5);
+        c += ((d & (a | b)) | (a & b)) + X[11] + 0x5a827999;
+        c = c << 9 | c >>> (32 - 9);
+        b += ((c & (d | a)) | (d & a)) + X[15] + 0x5a827999;
+        b = b << 13 | b >>> (32 - 13);
+
+        // Round 3
+        a += (b ^ c ^ d) + X[0] + 0x6ed9eba1;
+        a = a << 3 | a >>> (32 - 3);
+        d += (a ^ b ^ c) + X[8] + 0x6ed9eba1;
+        d = d << 9 | d >>> (32 - 9);
+        c += (d ^ a ^ b) + X[4] + 0x6ed9eba1;
+        c = c << 11 | c >>> (32 - 11);
+        b += (c ^ d ^ a) + X[12] + 0x6ed9eba1;
+        b = b << 15 | b >>> (32 - 15);
+        a += (b ^ c ^ d) + X[2] + 0x6ed9eba1;
+        a = a << 3 | a >>> (32 - 3);
+        d += (a ^ b ^ c) + X[10] + 0x6ed9eba1;
+        d = d << 9 | d >>> (32 - 9);
+        c += (d ^ a ^ b) + X[6] + 0x6ed9eba1;
+        c = c << 11 | c >>> (32 - 11);
+        b += (c ^ d ^ a) + X[14] + 0x6ed9eba1;
+        b = b << 15 | b >>> (32 - 15);
+        a += (b ^ c ^ d) + X[1] + 0x6ed9eba1;
+        a = a << 3 | a >>> (32 - 3);
+        d += (a ^ b ^ c) + X[9] + 0x6ed9eba1;
+        d = d << 9 | d >>> (32 - 9);
+        c += (d ^ a ^ b) + X[5] + 0x6ed9eba1;
+        c = c << 11 | c >>> (32 - 11);
+        b += (c ^ d ^ a) + X[13] + 0x6ed9eba1;
+        b = b << 15 | b >>> (32 - 15);
+        a += (b ^ c ^ d) + X[3] + 0x6ed9eba1;
+        a = a << 3 | a >>> (32 - 3);
+        d += (a ^ b ^ c) + X[11] + 0x6ed9eba1;
+        d = d << 9 | d >>> (32 - 9);
+        c += (d ^ a ^ b) + X[7] + 0x6ed9eba1;
+        c = c << 11 | c >>> (32 - 11);
+        b += (c ^ d ^ a) + X[15] + 0x6ed9eba1;
+        b = b << 15 | b >>> (32 - 15);
+
+        //Update state.
+        a += aa;
+        b += bb;
+        c += cc;
+        d += dd;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nfold.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nfold.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nfold.java
new file mode 100644
index 0000000..4d9bcba
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nfold.java
@@ -0,0 +1,102 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+import java.util.Arrays;
+
+/**
+ * Based on RFC3961, with ref. MIT krb5 nfold.c
+ */
+
+/*
+ * n-fold(k-bits):
+ * l = lcm(n,k)
+ * r = l/k
+ * s = k-bits | k-bits rot 13 | k-bits rot 13*2 | ... | k-bits rot 13*(r-1)
+ * compute the 1's complement sum:
+ * n-fold = s[0..n-1]+s[n..2n-1]+s[2n..3n-1]+..+s[(k-1)*n..k*n-1]
+ */
+public class Nfold {
+
+    /**
+     * representation: msb first, assume n and k are multiples of 8, and
+     * that k>=16.  this is the case of all the cryptosystems which are
+     * likely to be used.  this function can be replaced if that
+     * assumption ever fails.
+     */
+    public static byte[] nfold(byte[] inBytes, int size) {
+        int inBytesNum = inBytes.length; // count inBytes byte
+        int outBytesNum = size; // count inBytes byte
+
+        int a, b, c, lcm;
+        a = outBytesNum;
+        b = inBytesNum;
+
+        while (b != 0) {
+            c = b;
+            b = a % b;
+            a = c;
+        }
+        lcm = (outBytesNum * inBytesNum) / a;
+
+        byte[] outBytes = new byte[outBytesNum];
+        Arrays.fill(outBytes, (byte)0);
+
+        int tmpByte = 0;
+        int msbit, i, tmp;
+
+        for (i = lcm-1; i >= 0; i--) {
+            // first, start with the msbit inBytes the first, unrotated byte
+            tmp = ((inBytesNum<<3)-1);
+            // then, for each byte, shift to the right for each repetition
+            tmp += (((inBytesNum<<3)+13)*(i/inBytesNum));
+            // last, pick outBytes the correct byte within that shifted repetition
+            tmp += ((inBytesNum-(i%inBytesNum)) << 3);
+
+            msbit = tmp % (inBytesNum << 3);
+
+            // pull outBytes the byte value itself
+            tmp =  ((((inBytes[((inBytesNum - 1)-(msbit >>> 3)) % inBytesNum] & 0xff) << 8) |
+                (inBytes[((inBytesNum) - (msbit >>> 3)) % inBytesNum] & 0xff))
+                >>>((msbit & 7)+1)) & 0xff;
+
+            tmpByte += tmp;
+            tmp = (outBytes[i % outBytesNum] & 0xff);
+            tmpByte += tmp;
+
+            outBytes[i % outBytesNum] = (byte) (tmpByte & 0xff);
+
+            tmpByte >>>= 8;
+        }
+
+        // if there's a carry bit left over, add it back inBytes
+        if (tmpByte != 0) {
+            for (i = outBytesNum-1; i >= 0; i--) {
+                // do the addition
+                tmpByte += (outBytes[i] & 0xff);
+                outBytes[i] = (byte) (tmpByte & 0xff);
+
+                tmpByte >>>= 8;
+            }
+        }
+
+        return outBytes;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nonce.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nonce.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nonce.java
new file mode 100644
index 0000000..170414f
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nonce.java
@@ -0,0 +1,32 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+import java.security.SecureRandom;
+
+public class Nonce {
+
+    private static SecureRandom srand = new SecureRandom();
+
+    public static synchronized int value() {
+        int value = srand.nextInt();
+        return value & 0x7fffffff;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Pbkdf.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Pbkdf.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Pbkdf.java
new file mode 100644
index 0000000..7dac089
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Pbkdf.java
@@ -0,0 +1,40 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.PBEKeySpec;
+import java.security.GeneralSecurityException;
+
+public class Pbkdf {
+
+    public static byte[] PBKDF2(char[] secret, byte[] salt,
+                                   int count, int keySize) throws GeneralSecurityException {
+
+        PBEKeySpec ks = new PBEKeySpec(secret, salt, count, keySize * 8);
+        SecretKeyFactory skf =
+                SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
+        SecretKey key = skf.generateSecret(ks);
+        byte[] result = key.getEncoded();
+
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Random.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Random.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Random.java
new file mode 100644
index 0000000..81712dd
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Random.java
@@ -0,0 +1,33 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+import java.security.SecureRandom;
+
+public final class Random {
+
+    private static SecureRandom instance = new SecureRandom();
+
+    public static byte[] makeBytes(int size) {
+        byte[] data = new byte[size];
+        instance.nextBytes(data);
+        return data;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Rc4.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Rc4.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Rc4.java
new file mode 100644
index 0000000..8d62ab3
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Rc4.java
@@ -0,0 +1,63 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+/**
+ * Ref. MIT krb5 enc_rc4.c
+ */
+public class Rc4 {
+
+    private static byte[] L40 = "fortybits".getBytes();
+
+    public static byte[] getSalt(int usage, boolean exportable) {
+        int newUsage = convertUsage(usage);
+        byte[] salt;
+
+        if (exportable) {
+            salt = new byte[14];
+            System.arraycopy(L40, 0, salt, 0, 9);
+            BytesUtil.int2bytes(newUsage, salt, 10, false);
+        } else {
+            salt = new byte[4];
+            BytesUtil.int2bytes(newUsage, salt, 0, false);
+        }
+
+        return salt;
+    }
+
+    private static int convertUsage(int usage) {
+        switch (usage) {
+            case 1:  return 1;   /* AS-REQ PA-ENC-TIMESTAMP padata timestamp,  */
+            case 2:  return 2;   /* ticket from kdc */
+            case 3:  return 8;   /* as-rep encrypted part */
+            case 4:  return 4;   /* tgs-req authz data */
+            case 5:  return 5;   /* tgs-req authz data in subkey */
+            case 6:  return 6;   /* tgs-req authenticator cksum */
+            case 7:  return 7;   /* tgs-req authenticator */
+            case 8:  return 8;
+            case 9:  return 9;   /* tgs-rep encrypted with subkey */
+            case 10: return 10;  /* ap-rep authentication cksum (never used by MS) */
+            case 11: return 11;  /* app-req authenticator */
+            case 12: return 12;  /* app-rep encrypted part */
+            case 23: return 13;  /* sign wrap token*/
+            default: return usage;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/resources/kdc-krb5.conf
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/resources/kdc-krb5.conf b/kerby-kerb/kerb-crypto/src/main/resources/kdc-krb5.conf
deleted file mode 100644
index d118dd1..0000000
--- a/kerby-kerb/kerb-crypto/src/main/resources/kdc-krb5.conf
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# 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.
-#
-[libdefaults]
-    default_realm = {0}
-    udp_preference_limit = 1
-
-[realms]
-    {0} = '{'
-        kdc = {1}:{2}
-    '}'
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/resources/kdc.ldiff
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/resources/kdc.ldiff b/kerby-kerb/kerb-crypto/src/main/resources/kdc.ldiff
deleted file mode 100644
index bc989c3..0000000
--- a/kerby-kerb/kerb-crypto/src/main/resources/kdc.ldiff
+++ /dev/null
@@ -1,46 +0,0 @@
-# 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.
-dn: ou=users,dc=${0},dc=${1}
-objectClass: organizationalUnit
-objectClass: top
-ou: users
-
-dn: uid=krbtgt,ou=users,dc=${0},dc=${1}
-objectClass: top
-objectClass: person
-objectClass: inetOrgPerson
-objectClass: krb5principal
-objectClass: krb5kdcentry
-cn: KDC Service
-sn: Service
-uid: krbtgt
-userPassword: secret
-krb5PrincipalName: krbtgt/${2}.${3}@${2}.${3}
-krb5KeyVersionNumber: 0
-
-dn: uid=ldap,ou=users,dc=${0},dc=${1}
-objectClass: top
-objectClass: person
-objectClass: inetOrgPerson
-objectClass: krb5principal
-objectClass: krb5kdcentry
-cn: LDAP
-sn: Service
-uid: ldap
-userPassword: secret
-krb5PrincipalName: ldap/${4}@${2}.${3}
-krb5KeyVersionNumber: 0

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
index 30af03f..e210709 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
@@ -22,6 +22,7 @@ package org.apache.kerby.kerberos.kerb.crypto;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Camellia128Provider;
+import org.apache.kerby.kerberos.kerb.crypto.util.Cmac;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java
index e8de993..2b42f54 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/Crc32Test.java
@@ -19,6 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto;
 
+import org.apache.kerby.kerberos.kerb.crypto.util.Crc32;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 


[04/30] directory-kerberos git commit: Added some javadoc in kerby-asn1 module

Posted by dr...@apache.org.
Added some javadoc in kerby-asn1 module


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

Branch: refs/heads/installation
Commit: 0228e16db4c3e102f530d0375b945f99c1a0a6a6
Parents: 66a3df6
Author: Drankye <dr...@gmail.com>
Authored: Sun Feb 1 09:26:00 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Sun Feb 1 09:26:00 2015 +0800

----------------------------------------------------------------------
 .../java/org/apache/kerby/asn1/Asn1Factory.java | 13 ++++
 .../org/apache/kerby/asn1/Asn1InputBuffer.java  | 27 ++++++-
 .../java/org/apache/kerby/asn1/TagClass.java    | 25 ++++++
 .../org/apache/kerby/asn1/TaggingOption.java    | 50 +++++++++++-
 .../kerby/asn1/type/AbstractAsn1Type.java       | 12 +++
 .../org/apache/kerby/asn1/type/Asn1Type.java    | 80 ++++++++++++++++++++
 6 files changed, 204 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0228e16d/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Factory.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Factory.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Factory.java
index 2762476..ea4eca8 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Factory.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Factory.java
@@ -23,8 +23,16 @@ import org.apache.kerby.asn1.type.Asn1Collection;
 import org.apache.kerby.asn1.type.Asn1Simple;
 import org.apache.kerby.asn1.type.Asn1Type;
 
+/**
+ * ASN1 type factory
+ */
 public class Asn1Factory {
 
+    /**
+     * Create an ASN1 type with specified tag number
+     * @param tagNo
+     * @return ASN1 type
+     */
     public static Asn1Type create(int tagNo) {
         UniversalTag tagNoEnum = UniversalTag.fromValue(tagNo);
         if (tagNoEnum != UniversalTag.UNKNOWN) {
@@ -33,6 +41,11 @@ public class Asn1Factory {
         throw new IllegalArgumentException("Unexpected tag " + tagNo);
     }
 
+    /**
+     * Create an ASN1 type with specified tag
+     * @param tagNo
+     * @return ASN1 type
+     */
     public static Asn1Type create(UniversalTag tagNo) {
         if (Asn1Simple.isSimple(tagNo)) {
             return Asn1Simple.createSimple(tagNo);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0228e16d/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1InputBuffer.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1InputBuffer.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1InputBuffer.java
index 934b0c1..985bd7e 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1InputBuffer.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1InputBuffer.java
@@ -27,23 +27,43 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 
 /**
- * Asn1 decoder
+ * Asn1 decoder. Given an input stream, it validates and parses
+ * according to ASN1 spec, and the resultant object can be read
+ * and read until exhausted.
  */
 public class Asn1InputBuffer {
     private final LimitedByteBuffer limitedBuffer;
 
+    /**
+     * Constructor with bytes.
+     * @param bytes
+     */
     public Asn1InputBuffer(byte[] bytes) {
         this(new LimitedByteBuffer(bytes));
     }
 
+    /**
+     * Constructor with a ByteBuffer.
+     * @param byteBuffer
+     */
     public Asn1InputBuffer(ByteBuffer byteBuffer) {
         this(new LimitedByteBuffer(byteBuffer));
     }
 
+    /**
+     * Constructor with LimitedByteBuffer.
+     * @param limitedByteBuffer
+     */
     public Asn1InputBuffer(LimitedByteBuffer limitedByteBuffer) {
         this.limitedBuffer = limitedByteBuffer;
     }
 
+    /**
+     * Parse and read ASN1 object from the stream. If it's already
+     * exhausted then null will be returned to indicate the end.
+     * @return an ASN1 object if available otherwise null
+     * @throws IOException
+     */
     public Asn1Type read() throws IOException {
         if (! limitedBuffer.available()) {
             return null;
@@ -60,6 +80,11 @@ public class Asn1InputBuffer {
         return one;
     }
 
+    /**
+     *
+     * @param bytes
+     * @throws IOException
+     */
     public void readBytes(byte[] bytes) throws IOException {
         limitedBuffer.readBytes(bytes);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0228e16d/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java
index 430630f..bac9db8 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java
@@ -19,6 +19,9 @@
  */
 package org.apache.kerby.asn1;
 
+/**
+ * Tag class defined by the spec.
+ */
 public enum TagClass {
     UNKNOWN(-1),
     UNIVERSAL(0x00),
@@ -28,14 +31,26 @@ public enum TagClass {
 
     private int value;
 
+    /**
+     * The constructor given the value.
+     * @param value
+     */
     private TagClass(int value) {
         this.value = value;
     }
 
+    /**
+     * Get the tag class value.
+     * @return value
+     */
     public int getValue() {
         return value;
     }
 
+    /**
+     * Tell it's universal or not.
+     * @return true if it's universal otherwise false
+     */
     public boolean isUniversal() {
         return this == UNIVERSAL;
     }
@@ -52,6 +67,11 @@ public enum TagClass {
         return this == APPLICATION || this == CONTEXT_SPECIFIC;
     }
 
+    /**
+     * Converted from an integer
+     * @param value
+     * @return tag class
+     */
     public static TagClass fromValue(int value) {
         // Optimized by Emmanuel
         switch (value) {
@@ -68,6 +88,11 @@ public enum TagClass {
         }
     }
 
+    /**
+     * Converted from a tag value, which contains tag class info.
+     * @param tag
+     * @return tag class
+     */
     public static TagClass fromTagFlags(int tag) {
         return fromValue(tag & 0xC0);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0228e16d/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java
index 534977b..0911a1c 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java
@@ -19,49 +19,95 @@
  */
 package org.apache.kerby.asn1;
 
-public class TaggingOption
-{
+/**
+ * Tagging option for tagging an ASN1 type.
+ */
+public class TaggingOption {
     private int tagNo;
     private boolean isImplicit;
     private boolean isAppSpecific;
 
+    /**
+     * Create an implicit application specific tagging option with tagNo.
+     * @param tagNo
+     * @return tagging option
+     */
     public static TaggingOption newImplicitAppSpecific(int tagNo) {
         return new TaggingOption(tagNo, true, true);
     }
 
+    /**
+     * Create an explicit application specific tagging option with tagNo.
+     * @param tagNo
+     * @return tagging option
+     */
     public static TaggingOption newExplicitAppSpecific(int tagNo) {
         return new TaggingOption(tagNo, false, true);
     }
 
+    /**
+     * Create an implicit context specific tagging option with tagNo.
+     * @param tagNo
+     * @return tagging option
+     */
     public static TaggingOption newImplicitContextSpecific(int tagNo) {
         return new TaggingOption(tagNo, true, false);
     }
 
+    /**
+     * Create an explicit context specific tagging option with tagNo.
+     * @param tagNo
+     * @return tagging option
+     */
     public static TaggingOption newExplicitContextSpecific(int tagNo) {
         return new TaggingOption(tagNo, false, false);
     }
 
+    /**
+     * The private constructor.
+     * @param tagNo
+     * @param isImplicit
+     * @param isAppSpecific
+     */
     private TaggingOption(int tagNo, boolean isImplicit, boolean isAppSpecific) {
         this.tagNo = tagNo;
         this.isImplicit = isImplicit;
         this.isAppSpecific = isAppSpecific;
     }
 
+    /**
+     * Make tag flags giving it's tagged constructed.
+     * @param isTaggedConstructed
+     * @return tag flag
+     */
     public int tagFlags(boolean isTaggedConstructed) {
         boolean isConstructed = isImplicit ? isTaggedConstructed : true;
         TagClass tagClass = isAppSpecific ? TagClass.APPLICATION : TagClass.CONTEXT_SPECIFIC;
         int flags = tagClass.getValue() | (isConstructed ? EncodingOption.CONSTRUCTED_FLAG : 0x00);
+
         return flags;
     }
 
+    /**
+     * Get the tag number.
+     * @return tag number
+     */
     public int getTagNo() {
         return tagNo;
     }
 
+    /**
+     * Tell it's application specific or not.
+     * @return true if it's application specific otherwise false
+     */
     public boolean isAppSpecific() {
         return isAppSpecific;
     }
 
+    /**
+     * Tell it's implicit or not.
+     * @return true if it's implicit otherwise false
+     */
     public boolean isImplicit() {
         return isImplicit;
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0228e16d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
index 3aefed7..99b54fb 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
@@ -28,14 +28,26 @@ import java.io.EOFException;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * The abstract ASN1 type for all the ASN1 types. It provides basic
+ * encoding and decoding utilities.
+ *
+ * @param <T> the type of the value encoded/decoded or wrapped by this
+ */
 public abstract class AbstractAsn1Type<T> implements Asn1Type {
     private TagClass tagClass = TagClass.UNKNOWN;
     private int tagNo = -1;
     private int tagFlags = -1;
     protected EncodingOption encodingOption = EncodingOption.UNKNOWN;
     private int encodingLen = -1;
+    // The wrapped real value.
     private T value;
 
+    /**
+     *
+     * @param tagClass
+     * @param tagNo
+     */
     public AbstractAsn1Type(TagClass tagClass, int tagNo) {
         this(tagClass, tagNo, null);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/0228e16d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
index 48f0d26..95f8855 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
@@ -25,17 +25,97 @@ import org.apache.kerby.asn1.TaggingOption;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * The ASN1 type interface for all ASN1 types.
+ */
 public interface Asn1Type {
+    /**
+     *
+     * @return
+     */
     public int tagFlags();
+
+    /**
+     * Get tag number for the type
+     * @return tag number
+     */
     public int tagNo();
+
+    /**
+     * Set encoding option.
+     * See {@link org.apache.kerby.asn1.EncodingOption}.
+     * @param encodingOption
+     */
     public void setEncodingOption(EncodingOption encodingOption);
+
+    /**
+     * Get length of encoding bytes by just calculating without real encoding.
+     * Generally it's called to prepare for the encoding buffer.
+     * @return length of encoding bytes
+     */
     public int encodingLength();
+
+    /**
+     * Encode the type, by recursively.
+     * @return encoded bytes
+     */
     public byte[] encode();
+
+    /**
+     * Encode the type, by recursively, using the provided buffer.
+     * @param buffer
+     */
     public void encode(ByteBuffer buffer);
+
+    /**
+     * Decode the content bytes into this type.
+     * @param content
+     * @throws IOException
+     */
     public void decode(byte[] content) throws IOException;
+
+    /**
+     * Decode the content bytes into this type.
+     * @param content
+     * @throws IOException
+     */
     public void decode(ByteBuffer content) throws IOException;
+
+    /**
+     * Tag and encode this type using the provided tagging option.
+     * @param taggingOption
+     * @return encoded bytes
+     */
     public byte[] taggedEncode(TaggingOption taggingOption);
+
+    /**
+     * Tag and encode this type using the provided tagging option.
+     * @param taggingOption
+     * @return encoded bytes
+     */
     public void taggedEncode(ByteBuffer buffer, TaggingOption taggingOption);
+
+    /**
+     * Decode the content bytes into this type as it's tagged with the provided
+     * tagging option.
+     *
+     * See {@link org.apache.kerby.asn1.TaggingOption}
+     *
+     * @param content
+     * @param taggingOption
+     * @throws IOException
+     */
     public void taggedDecode(ByteBuffer content, TaggingOption taggingOption) throws IOException;
+
+    /**
+     * Decode the content bytes into this type as it's tagged with the provided
+     * tagging option.
+     *
+     * See {@link org.apache.kerby.asn1.TaggingOption}
+     *
+     * @param content
+     * @param taggingOption
+     * @throws IOException
+     */
     public void taggedDecode(byte[] content, TaggingOption taggingOption) throws IOException;
 }


[15/30] directory-kerberos git commit: Some trivial grammatical changes + haox -> kerby in the README

Posted by dr...@apache.org.
Some trivial grammatical changes + haox -> kerby in the README


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

Branch: refs/heads/installation
Commit: 8423c04deff1a7b8fed249afe0ded58feeaee0a6
Parents: 64404d7
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Feb 4 11:43:10 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Feb 4 11:43:10 2015 +0000

----------------------------------------------------------------------
 README.md | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/8423c04d/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 32a1fff..0f81606 100644
--- a/README.md
+++ b/README.md
@@ -15,27 +15,27 @@
 # specific language governing permissions and limitations
 # under the License.
 
-Haox
-====
+Apache Kerby
+============
 
-Haox aims for a Java Kerberos binding, and provides richful, inituitive and interoperable implementation, library and various facilities that integrate Kerberos, PKI and token (OAuth) as desired in modern environments such as mobile, cloud and Hadoop. 
+Apache Kerby is a Java Kerberos binding. It provides a rich, intuitive and interoperable implementation, library and various facilities that integrate Kerberos, PKI and token (OAuth) as desired in modern environments such as mobile, cloud and Hadoop. 
 
 ### The Initiatives/Goals 
-* Aims as a Java Kerberos binding, with richful and integrated facilities that integrate Kerberos, PKI and token (OAuth) for both client and server sides.
-+ Provides client APIs in Kerberos protocol level to interact with a KDC server thru AS and TGS exchanges.
-+ Provides an embeded KDC server that applications can easily integrate into products, unit tests or integration tests.
+* Aims as a Java Kerberos binding, with rich and integrated facilities that integrate Kerberos, PKI and token (OAuth) for both client and server sides.
++ Provides client APIs at the Kerberos protocol level to interact with a KDC server through AS and TGS exchanges.
++ Provides an embedded KDC server that applications can easily integrate into products, unit tests or integration tests.
 + Supports FAST/Preauthentication framework to allow popular and useful authentication mechanisms.
-+ Supports PKINIT mechanism to allow clients to request tickets using x509 certificate credential.
++ Supports PKINIT mechanism to allow clients to request tickets using x509 certificate credentials.
 + Supports Token Preauth mechanism to allow clients to request tickets using JWT tokens.
 + Provides support for JAAS, GSSAPI and SASL frameworks that applications can leverage.
-+ Least dependency, the core part is ensured to depend only on JRE, for easy use and maintain.
++ Minimal dependencies, the core part is ensured to depend only on JRE, for easy use and maintenance.
 
 ### Update
 We’re collaborating with ApacheDS community and preparing this project to be ready for a sub project. Feedback is welcome.
 
 ### Status
 As follows, with the core and critical parts done, important features are still ongoing.
-It's going to release 0.1 version in the early next year. We do not suggest production usage prior to the release.
+The 0.1 version will be released early next year. We do not suggest production usage prior to the release.
 <pre>
 ASN-1 (done)
 Kerberos core and codec (done)
@@ -48,7 +48,7 @@ PKINIT (ongoing)
 Keytab util (credential cache and keytab support, done)
 </pre>
 
-### Desired KrbClient APIs (partialy done)
+### Desired KrbClient APIs (partially done)
 * Initiate a KrbClient
 <pre>
 KrbClient krbClient = new KrbClient(kdcHost, kdcPort);
@@ -74,13 +74,13 @@ krbClient.requestServiceTicket(tgt, serverPrincipal);
 krbClient.requestServiceTicket(accessToken, serverPrincipal);
 </pre>
 
-### The ASN-1 support
-Please look at [haox-asn1](https://github.com/drankye/haox/blob/master/haox-asn1/README.md) for details.
+### ASN-1 support
+Please look at [kerby-asn1](https://git-wip-us.apache.org/repos/asf?p=directory-kerberos.git;a=blob;f=kerby-asn1/README.md;h=eb35929d15bc88e91063df9ed0de78ae8fc255eb;hb=HEAD) for details.
 
 ### Kerberos Crypto and Encryption Types
 Implementing des, des3, rc4, aes, camellia encryption and corresponding checksum types
 Interoperates with MIT Kerberos and Microsoft AD
-Independent with Kerberos codes in JRE, but rely on JCE
+Independent of Kerberos code in JRE, but rely on JCE
 
 | Encryption Type | Description |
 | --------------- | ----------- |
@@ -102,13 +102,13 @@ Independent with Kerberos codes in JRE, but rely on JCE
 | camellia | The Camellia family: camellia256-cts-cmac and camellia128-cts-cmac |
 
 ### Dependency
-The core part is ensured to only depend on JRE. Every external dependency is taken carefully and maintained separately.
+The core part is ensured to only depend on the JRE. Every external dependency is taken carefully and maintained separately.
 
 ##### Contrib Projects
-- haox-asn1. A model driven ASN-1 encoding and decoding framework
-- haox-event. A pure event driven application framework aiming to construct applications of asynchronous and concurrent handlers. It includes UDP and TCP transport based on pure Java NIO and concurrency pattern.
-- haox-config. A unified configuration API that aims to support various configuration file formats, like XML, JNI, CSV and Java Properties file.
-- haox-token. Implements a JWT token API for Kerberos that's defined in TokenPreauth drafts.
+- kerby-asn1. A model driven ASN-1 encoding and decoding framework
+- kerby-event. A pure event driven application framework aiming to construct applications of asynchronous and concurrent handlers. It includes UDP and TCP transports based on pure Java NIO and concurrency pattern.
+- kerby-config. A unified configuration API that aims to support various configuration file formats, like XML, JNI, CSV and Java Properties file.
+- kerby-token. Implements a JWT token API for Kerberos that's defined in TokenPreauth drafts.
 
 ### License
 Apache License V2.0


[27/30] directory-kerberos git commit: DIRKRB-158. Decouple the mixed aspects in EncodingOption in kerby-asn1

Posted by dr...@apache.org.
DIRKRB-158. Decouple the mixed aspects in EncodingOption in kerby-asn1


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

Branch: refs/heads/installation
Commit: 57e75f088d489b37f8480924cbb83d58ccdc24a4
Parents: 44a42d1
Author: Drankye <dr...@gmail.com>
Authored: Mon Feb 9 11:13:08 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Mon Feb 9 11:13:08 2015 +0800

----------------------------------------------------------------------
 .../org/apache/kerby/asn1/EncodingOption.java   | 185 ++++++++++++-------
 .../kerby/asn1/type/AbstractAsn1Type.java       |  42 +++--
 .../org/apache/kerby/asn1/type/Asn1Choice.java  |   2 +-
 .../apache/kerby/asn1/type/Asn1Collection.java  |   2 +-
 .../kerby/asn1/type/Asn1CollectionType.java     |   2 +-
 .../org/apache/kerby/asn1/type/Asn1Simple.java  |   3 +-
 .../org/apache/kerby/asn1/type/Asn1Tagging.java |  11 +-
 .../kerby/asn1/type/TaggingCollection.java      |   8 +-
 .../org/apache/kerby/asn1/PersonnelRecord.java  |  10 +-
 .../org/apache/kerby/asn1/TestAsn1Boolean.java  |  14 +-
 .../org/apache/kerby/asn1/TestAsn1Integer.java  |   4 +-
 .../kerby/asn1/TestAsn1ObjectIdentifier.java    |   4 +-
 .../org/apache/kerby/asn1/TestAsn1UtcTime.java  |   4 +-
 .../apache/kerby/asn1/TestTaggingEncoding.java  |  25 ++-
 .../kerby/kerberos/kerb/codec/KrbCodec.java     |   4 +-
 15 files changed, 204 insertions(+), 116 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
index bac3d19..0308065 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
@@ -21,20 +21,32 @@ package org.apache.kerby.asn1;
 
 /**
  * An enum used to represent the various Encoding options.
- * 
+ *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public enum EncodingOption {
-    UNKNOWN(-1),
-    PRIMITIVE(1),
-    CONSTRUCTED(2),
-    CONSTRUCTED_DEFLEN(3),
-    CONSTRUCTED_INDEFLEN(4),
-    IMPLICIT(5),
-    EXPLICIT(6),
-    BER(7),
-    DER(8),
-    CER(9);
+public class EncodingOption {
+    /**
+     * Encoding type
+     */
+    protected static enum EncodingType {
+        BER,
+        DER,
+        CER;
+    }
+
+    private EncodingType encodingType;
+    private boolean isPrimitive;
+    private boolean isDefLen;
+    private boolean isImplicit;
+
+    /**
+     * The default constructor with default values.
+     */
+    public EncodingOption() {
+        this.encodingType = EncodingType.BER;
+        this.isPrimitive = true;
+        this.isImplicit = true;
+    }
 
     /** 
      * A mask to determinate if a Tag is CONSTRUCTED. The fifth bit should be set to 1 if
@@ -42,24 +54,15 @@ public enum EncodingOption {
      */
     public static int CONSTRUCTED_FLAG = 0x20;
 
-    /** The associated value */
-    private int value;
-
-    /** Create a instance of EncodingOption */
-    private EncodingOption(int value) {
-        this.value = value;
+    public static boolean isConstructed(int tag) {
+        return (tag & CONSTRUCTED_FLAG) != 0;
     }
 
-
     /**
-     * @return The integer value associated with the EncodingOption instance
+     * Use primitive.
      */
-    public int getValue() {
-        return value;
-    }
-
-    public static boolean isConstructed(int tag) {
-        return (tag & CONSTRUCTED_FLAG) != 0;
+    public void usePrimitive() {
+        this.isPrimitive = true;
     }
 
     /**
@@ -68,82 +71,132 @@ public enum EncodingOption {
      * @return true if using PRIMITIVE, false otherwise
      */
     public boolean isPrimitive() {
-        return this == PRIMITIVE;
+        return this.isPrimitive;
     }
 
     /**
-     * Tells if the EncodingOption is for an encoded type (CONSTRUCTED, CONSTRUCTED_DEFLEN
-     * or CONSTRUCTED_INDEFLEN)
+     * Use constructed.
+     */
+    public void useConstructed() {
+        this.isPrimitive = false;
+        useNonDefLen();
+    }
+
+    /**
+     * Tells if it's constructed (not primitive).
      * 
-     * @return true if the EncodingOption is CONSTRUCTED, false otherwise
+     * @return true if it's constructed, false otherwise
      */
     public boolean isConstructed() {
-        return this == CONSTRUCTED || this == CONSTRUCTED_DEFLEN || this == CONSTRUCTED_INDEFLEN;
+        return ! isPrimitive;
+    }
+
+    /**
+     * Use definitive length, only makes sense when it's constructed.
+     */
+    public void useDefLen() {
+        if (isPrimitive()) {
+            throw new IllegalArgumentException("It's only for constructed");
+        }
+        this.isDefLen = true;
+    }
+
+    /**
+     * Use non-definitive length, only makes sense when it's constructed.
+     */
+    public void useNonDefLen() {
+        if (isPrimitive()) {
+            throw new IllegalArgumentException("It's only for constructed");
+        }
+        this.isDefLen = false;
     }
 
     /**
-     * Tells if the EncodingOption is IMPLICIT
+     * Tells if it's definitive length or not.
+     * @return
+     */
+    public boolean isDefLen() {
+        return this.isDefLen;
+    }
+
+    /**
+     * Use implicit, which will discard the value set by useExplicit.
+     */
+    public void useImplicit() {
+        this.isImplicit = true;
+    }
+
+    /**
+     * Tells if it's is IMPLICIT
      * 
      * @return true if using IMPLICIT, false otherwise
      */
     public boolean isImplicit() {
-        return this == IMPLICIT;
+        return isImplicit;
+    }
+
+    /**
+     * Use explicit, which will discard the value set by useImplicit.
+     */
+    public void useExplicit() {
+        this.isImplicit = false;
     }
 
     /**
-     * Tells if the EncodingOption is EXPLICIT
+     * Tells if it's is EXPLICIT
      * 
      * @return true if using EXPLICIT, false otherwise
      */
     public boolean isExplicit() {
-        return this == EXPLICIT;
+        return ! isImplicit;
+    }
+
+    /**
+     * Set encoding type as DER.
+     */
+    public void useDer() {
+        this.encodingType = EncodingType.DER;
     }
 
     /**
-     * Tells if the EncodingOption is DER
+     * Tells if it's is DER
      * 
      * @return true if using DER, false otherwise
      */
     public boolean isDer() {
-        return this == DER;
+        return encodingType == EncodingType.DER;
     }
 
     /**
-     * Tells if the EncodingOption is CER
-     * 
-     * @return true if using CER, false otherwise
+     * Set encoding type as BER.
      */
-    public boolean isCer() {
-        return this == CER;
+    public void useBer() {
+        this.encodingType = EncodingType.BER;
     }
 
     /**
-     * Tells if the EncodingOption is BER
-     * 
+     * Tells if it's is BER
+     *
      * @return true if using BER, false otherwise
      */
     public boolean isBer() {
-        return this == BER;
-    }
-
-    
-    /**
-     * Get the EncodingOption given an integer value
-     * @param value The value to translate
-     * @return The associated EncodingOption
-     */
-    public static EncodingOption fromValue(int value) {
-        switch (value) {
-            case 1 : return PRIMITIVE;
-            case 2 : return CONSTRUCTED;
-            case 3 : return CONSTRUCTED_DEFLEN;
-            case 4 : return CONSTRUCTED_INDEFLEN;
-            case 5 : return IMPLICIT;
-            case 6 : return EXPLICIT;
-            case 7 : return BER;
-            case 8 : return DER;
-            case 9 : return CER;
-            default : return UNKNOWN;
-        }
+        return encodingType == EncodingType.BER;
+    }
+
+    /**
+     * Set encoding type as CER.
+     */
+    public void useCer() {
+        this.encodingType = EncodingType.CER;
     }
+
+    /**
+     * Tells if it's is CER
+     * 
+     * @return true if using CER, false otherwise
+     */
+    public boolean isCer() {
+        return encodingType == EncodingType.CER;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
index a00591d..bf0ec9b 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
@@ -38,7 +38,7 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
     private TagClass tagClass = TagClass.UNKNOWN;
     private int tagNo = -1;
     private int tagFlags = -1;
-    private EncodingOption encodingOption = EncodingOption.BER;
+    private EncodingOption encodingOption = new EncodingOption();
     private int encodingLen = -1;
     // The wrapped real value.
     private T value;
@@ -214,12 +214,16 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
         decode(tag, tagNo, new LimitedByteBuffer(content, length));
     }
 
-    public void decode(int tagFlags, int tagNo, LimitedByteBuffer content) throws IOException {
-        if (this.tagClass != TagClass.UNKNOWN && this.tagClass != TagClass.fromTagFlags(tagFlags)) {
-            throw new IOException("Unexpected tagFlags " + tagFlags + ", expecting " + this.tagClass);
+    public void decode(int tagFlags, int tagNo,
+                       LimitedByteBuffer content) throws IOException {
+        if (this.tagClass != TagClass.UNKNOWN && this.tagClass !=
+                TagClass.fromTagFlags(tagFlags)) {
+            throw new IOException("Unexpected tagFlags " + tagFlags +
+                    ", expecting " + this.tagClass);
         }
         if (this.tagNo != -1 && this.tagNo != tagNo) {
-            throw new IOException("Unexpected tagNo " + tagNo + ", expecting " + this.tagNo);
+            throw new IOException("Unexpected tagNo " + tagNo + ", " +
+                    "expecting " + this.tagNo);
         }
 
         this.tagClass = TagClass.fromTagFlags(tagFlags);
@@ -233,8 +237,10 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
 
     protected int taggedEncodingLength(TaggingOption taggingOption) {
         int taggingTagNo = taggingOption.getTagNo();
-        int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength() : encodingLength();
-        int taggingEncodingLen = lengthOfTagLength(taggingTagNo) + lengthOfBodyLength(taggingBodyLen) + taggingBodyLen;
+        int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength() :
+                encodingLength();
+        int taggingEncodingLen = lengthOfTagLength(taggingTagNo) +
+                lengthOfBodyLength(taggingBodyLen) + taggingBodyLen;
         return taggingEncodingLen;
     }
 
@@ -249,7 +255,8 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
     public void taggedEncode(ByteBuffer buffer, TaggingOption taggingOption) {
         int taggingTagFlags = taggingOption.tagFlags(isConstructed());
         encodeTag(buffer, taggingTagFlags, taggingOption.getTagNo());
-        int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength() : encodingLength();
+        int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength() :
+                encodingLength();
         encodeLength(buffer, taggingBodyLen);
         if (taggingOption.isImplicit()) {
             encodeBody(buffer);
@@ -258,17 +265,20 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
         }
     }
 
-    public void taggedDecode(byte[] content, TaggingOption taggingOption) throws IOException {
+    public void taggedDecode(byte[] content,
+                             TaggingOption taggingOption) throws IOException {
         taggedDecode(ByteBuffer.wrap(content), taggingOption);
     }
 
     @Override
-    public void taggedDecode(ByteBuffer content, TaggingOption taggingOption) throws IOException {
+    public void taggedDecode(ByteBuffer content,
+                             TaggingOption taggingOption) throws IOException {
         LimitedByteBuffer limitedBuffer = new LimitedByteBuffer(content);
         taggedDecode(limitedBuffer, taggingOption);
     }
 
-    protected void taggedDecode(LimitedByteBuffer content, TaggingOption taggingOption) throws IOException {
+    protected void taggedDecode(LimitedByteBuffer content,
+                                TaggingOption taggingOption) throws IOException {
         int taggingTag = readTag(content);
         int taggingTagNo = readTagNo(content, taggingTag);
         int taggingLength = readLength(content);
@@ -278,13 +288,17 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
         taggedDecode(tagFlags, taggingTagNo, newContent, taggingOption);
     }
 
-    protected void taggedDecode(int taggingTagFlags, int taggingTagNo, LimitedByteBuffer content, TaggingOption taggingOption) throws IOException {
+    protected void taggedDecode(int taggingTagFlags, int taggingTagNo,
+                                LimitedByteBuffer content,
+                                TaggingOption taggingOption) throws IOException {
         int expectedTaggingTagFlags = taggingOption.tagFlags(isConstructed());
         if (expectedTaggingTagFlags != taggingTagFlags) {
-            throw new IOException("Unexpected tag flags" + taggingTagFlags + ", expecting " + expectedTaggingTagFlags);
+            throw new IOException("Unexpected tag flags " + taggingTagFlags +
+                    ", expecting " + expectedTaggingTagFlags);
         }
         if (taggingOption.getTagNo() != taggingTagNo) {
-            throw new IOException("Unexpected tagNo " + taggingTagNo + ", expecting " + taggingOption.getTagNo());
+            throw new IOException("Unexpected tagNo " + taggingTagNo + ", " +
+                    "expecting " + taggingOption.getTagNo());
         }
 
         if (taggingOption.isImplicit()) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java
index 69b1fd6..7c65e7c 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java
@@ -34,7 +34,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
         setValue(this);
         this.fieldInfos = fieldInfos;
         this.fields = new Asn1Type[fieldInfos.length];
-        setEncodingOption(EncodingOption.CONSTRUCTED);
+        getEncodingOption().useConstructed();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
index 5ea02f1..796092e 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
@@ -36,7 +36,7 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
     public Asn1Collection(TagClass tagClass, int tagNo) {
         super(tagClass, tagNo);
         setValue(new ArrayList<Asn1Item>());
-        setEncodingOption(EncodingOption.CONSTRUCTED);
+        getEncodingOption().useConstructed();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
index 4187209..bb42988 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
@@ -39,7 +39,7 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
         setValue(this);
         this.fieldInfos = fieldInfos;
         this.fields = new Asn1Type[fieldInfos.length];
-        setEncodingOption(EncodingOption.CONSTRUCTED);
+        getEncodingOption().useConstructed();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
index 6c4352c..66c542b 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.asn1.type;
 
-import org.apache.kerby.asn1.EncodingOption;
 import org.apache.kerby.asn1.LimitedByteBuffer;
 import org.apache.kerby.asn1.TagClass;
 import org.apache.kerby.asn1.UniversalTag;
@@ -49,7 +48,7 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
      */
     public Asn1Simple(UniversalTag tagNo, T value) {
         super(TagClass.UNIVERSAL, tagNo.getValue(), value);
-        setEncodingOption(EncodingOption.PRIMITIVE);
+        getEncodingOption().usePrimitive();
     }
 
     protected byte[] getBytes() {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
index b1e919c..89fccaa 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
@@ -38,7 +38,7 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
 
     public Asn1Tagging(int tagNo, T value, boolean isAppSpecific) {
         super(isAppSpecific ? TagClass.APPLICATION : TagClass.CONTEXT_SPECIFIC, tagNo, value);
-        setEncodingOption(EncodingOption.EXPLICIT);
+        getEncodingOption().useExplicit();
         if (value == null) {
             initValue();
         }
@@ -52,7 +52,8 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
         } else if (getEncodingOption().isImplicit()) {
             return value.encodingBodyLength();
         } else {
-            throw new RuntimeException("Invalid util option, only allowing explicit/implicit");
+            throw new RuntimeException("Invalid decoding option, " +
+                    "only allowing explicit/implicit");
         }
     }
 
@@ -75,7 +76,8 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
         } else if (getEncodingOption().isImplicit()) {
             value.encodeBody(buffer);
         } else {
-            throw new RuntimeException("Invalid util option, only allowing explicit/implicit");
+            throw new RuntimeException("Invalid decoding option, " +
+                    "only allowing explicit/implicit");
         }
     }
 
@@ -87,7 +89,8 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
         } else if (getEncodingOption().isImplicit()) {
             value.decodeBody(content);
         } else {
-            throw new RuntimeException("Invalid util option, only allowing explicit/implicit");
+            throw new RuntimeException("Invalid decoding option, " +
+                    "only allowing explicit/implicit");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingCollection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingCollection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingCollection.java
index 48a815c..d316b7b 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingCollection.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingCollection.java
@@ -38,16 +38,22 @@ public abstract class TaggingCollection extends AbstractAsn1Type<Asn1CollectionT
         this.tagged = createTaggedCollection(tags);
         setValue(tagged);
         this.tagging = new Asn1Tagging<Asn1CollectionType>(taggingTagNo, tagged, isAppSpecific);
-        setEncodingOption(EncodingOption.EXPLICIT);
+        getEncodingOption().useExplicit();
     }
 
     protected abstract Asn1CollectionType createTaggedCollection(Asn1FieldInfo[] tags);
 
+    @Override
     public void setEncodingOption(EncodingOption encodingOption) {
         tagging.setEncodingOption(encodingOption);
     }
 
     @Override
+    public EncodingOption getEncodingOption() {
+        return tagging.getEncodingOption();
+    }
+
+    @Override
     public boolean isConstructed() {
         return tagging.isConstructed();
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/test/java/org/apache/kerby/asn1/PersonnelRecord.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/PersonnelRecord.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/PersonnelRecord.java
index 20e4f5c..6c6fc04 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/PersonnelRecord.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/PersonnelRecord.java
@@ -44,7 +44,7 @@ public class PersonnelRecord extends TaggingSet {
 
     public PersonnelRecord() {
         super(0, fieldInfos, true);
-        setEncodingOption(EncodingOption.IMPLICIT);
+        getEncodingOption().useImplicit();
     }
 
     public void setName(Name name) {
@@ -151,7 +151,7 @@ public class PersonnelRecord extends TaggingSet {
 
         public Name() {
             super(1, tags, true);
-            setEncodingOption(EncodingOption.IMPLICIT);
+            getEncodingOption().useImplicit();
         }
 
         public Name(String givenName, String initial, String familyName) {
@@ -189,19 +189,19 @@ public class PersonnelRecord extends TaggingSet {
     public static class EmployeeNumber extends Asn1Tagging<Asn1Integer> {
         public EmployeeNumber(Integer value) {
             super(2, new Asn1Integer(value), true);
-            setEncodingOption(EncodingOption.IMPLICIT);
+            getEncodingOption().useImplicit();
         }
 
         public EmployeeNumber() {
             super(2, new Asn1Integer(), true);
-            setEncodingOption(EncodingOption.IMPLICIT);
+            getEncodingOption().useImplicit();
         }
     }
 
     public static class Date extends Asn1Tagging<Asn1VisibleString> {
         public Date(String value) {
             super(3, new Asn1VisibleString(value), true);
-            setEncodingOption(EncodingOption.IMPLICIT);
+            getEncodingOption().useImplicit();
         }
         public Date() {
             this(null);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
index 691c8fe..947f30f 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
@@ -38,8 +38,11 @@ public class TestAsn1Boolean {
                                   boolean isDer) {
         byte[] expected = Util.hex2bytes(expectedEncoding);
         Asn1Boolean aValue = new Asn1Boolean(value);
-        aValue.setEncodingOption(isDer ? EncodingOption.DER :
-                EncodingOption.BER);
+        if (isDer) {
+            aValue.getEncodingOption().useDer();
+        } else {
+            aValue.getEncodingOption().useBer();
+        }
         byte[] encodingBytes = aValue.encode();
         assertThat(encodingBytes).isEqualTo(expected);
     }
@@ -55,8 +58,11 @@ public class TestAsn1Boolean {
     private void testDecodingWith(Boolean expectedValue, String content,
                                   boolean isDer) throws IOException {
         Asn1Boolean decoded = new Asn1Boolean();
-        decoded.setEncodingOption(isDer ? EncodingOption.DER :
-                EncodingOption.BER);
+        if (isDer) {
+            decoded.getEncodingOption().useDer();
+        } else {
+            decoded.getEncodingOption().useBer();
+        }
         decoded.decode(Util.hex2bytes(content));
         assertThat(decoded.getValue()).isEqualTo(expectedValue);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
index 29df679..f9a774e 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
@@ -44,7 +44,7 @@ public class TestAsn1Integer {
     private void testEncodingWith(int value, String expectedEncoding) {
         byte[] expected = Util.hex2bytes(expectedEncoding);
         Asn1Integer aValue = new Asn1Integer(value);
-        aValue.setEncodingOption(EncodingOption.DER);
+        aValue.getEncodingOption().useDer();
         byte[] encodingBytes = aValue.encode();
         assertThat(encodingBytes).isEqualTo(expected);
     }
@@ -64,7 +64,7 @@ public class TestAsn1Integer {
 
     private void testDecodingWith(int expectedValue, String content) throws IOException {
         Asn1Integer decoded = new Asn1Integer();
-        decoded.setEncodingOption(EncodingOption.DER);
+        decoded.getEncodingOption().useDer();
         decoded.decode(Util.hex2bytes(content));
         assertThat(decoded.getValue().intValue()).isEqualTo(expectedValue);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
index 4299eab..cb97922 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
@@ -45,7 +45,7 @@ public class TestAsn1ObjectIdentifier {
     private void testEncodingWith(String oid, String expectedEncoding) {
         byte[] expected = Util.hex2bytes(expectedEncoding);
         Asn1ObjectIdentifier aValue = new Asn1ObjectIdentifier(oid);
-        aValue.setEncodingOption(EncodingOption.DER);
+        aValue.getEncodingOption().useDer();
         byte[] encodingBytes = aValue.encode();
         assertThat(encodingBytes).isEqualTo(expected);
     }
@@ -58,7 +58,7 @@ public class TestAsn1ObjectIdentifier {
 
     private void testDecodingWith(String expectedValue, String content) throws IOException {
         Asn1ObjectIdentifier decoded = new Asn1ObjectIdentifier();
-        decoded.setEncodingOption(EncodingOption.DER);
+        decoded.getEncodingOption().useDer();
         decoded.decode(Util.hex2bytes(content));
         assertThat(decoded.getValue()).isEqualTo(expectedValue);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
index 20e5c30..6d4d2a2 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
@@ -48,7 +48,7 @@ public class TestAsn1UtcTime {
     private void testEncodingWith(Date value, String expectedEncoding) {
         byte[] expected = Util.hex2bytes(expectedEncoding);
         Asn1UtcTime aValue = new Asn1UtcTime(value);
-        aValue.setEncodingOption(EncodingOption.DER);
+        aValue.getEncodingOption().useDer();
         byte[] encodingBytes = aValue.encode();
         assertThat(encodingBytes).isEqualTo(expected);
     }
@@ -64,7 +64,7 @@ public class TestAsn1UtcTime {
 
     private void testDecodingWith(Date expectedValue, String content) throws IOException {
         Asn1UtcTime decoded = new Asn1UtcTime();
-        decoded.setEncodingOption(EncodingOption.DER);
+        decoded.getEncodingOption().useDer();
         decoded.decode(Util.hex2bytes(content));
         assertThat(decoded.getValue()).isEqualTo(expectedValue);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestTaggingEncoding.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestTaggingEncoding.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestTaggingEncoding.java
index a6ada58..c836217 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestTaggingEncoding.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestTaggingEncoding.java
@@ -62,11 +62,18 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 public class TestTaggingEncoding {
     static final String TEST_STRING = "Jones";
-    static byte[] TYPE1_EXPECTED_BYTES = new byte[] {(byte) 0x1A, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73};
-    static byte[] TYPE2_EXPECTED_BYTES = new byte[] {(byte) 0x43, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73};
-    static byte[] TYPE3_EXPECTED_BYTES = new byte[] {(byte) 0xA2, (byte) 0x07, (byte) 0x43, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73};
-    static byte[] TYPE4_EXPECTED_BYTES = new byte[] {(byte) 0x67, (byte) 0x07, (byte) 0x43, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73};
-    static byte[] TYPE5_EXPECTED_BYTES = new byte[] {(byte) 0x82, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73};
+    static byte[] TYPE1_EXPECTED_BYTES = new byte[] {(byte) 0x1A, (byte) 0x05,
+            (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73};
+    static byte[] TYPE2_EXPECTED_BYTES = new byte[] {(byte) 0x43, (byte) 0x05,
+            (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73};
+    static byte[] TYPE3_EXPECTED_BYTES = new byte[] {(byte) 0xA2, (byte) 0x07,
+            (byte) 0x43, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E,
+            (byte) 0x65, (byte) 0x73};
+    static byte[] TYPE4_EXPECTED_BYTES = new byte[] {(byte) 0x67, (byte) 0x07,
+            (byte) 0x43, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E,
+            (byte) 0x65, (byte) 0x73};
+    static byte[] TYPE5_EXPECTED_BYTES = new byte[] {(byte) 0x82, (byte) 0x05,
+            (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73};
 
 
     public static class Type1 extends Asn1VisibleString {
@@ -81,7 +88,7 @@ public class TestTaggingEncoding {
     public static class Type2 extends Asn1Tagging<Type1> {
         public Type2(Type1 value) {
             super(3, value, true);
-            setEncodingOption(EncodingOption.IMPLICIT);
+            getEncodingOption().useImplicit();
         }
         public Type2() {
             this(null);
@@ -91,7 +98,7 @@ public class TestTaggingEncoding {
     public static class Type3 extends Asn1Tagging<Type2> {
         public Type3(Type2 value) {
             super(2, value, false);
-            setEncodingOption(EncodingOption.EXPLICIT);
+            getEncodingOption().useExplicit();
         }
         public Type3() {
             this(null);
@@ -101,7 +108,7 @@ public class TestTaggingEncoding {
     public static class Type4 extends Asn1Tagging<Type3> {
         public Type4(Type3 value) {
             super(7, value, true);
-            setEncodingOption(EncodingOption.IMPLICIT);
+            getEncodingOption().useImplicit();
         }
         public Type4() {
             this(null);
@@ -111,7 +118,7 @@ public class TestTaggingEncoding {
     public static class Type5 extends Asn1Tagging<Type2> {
         public Type5(Type2 value) {
             super(2, value, false);
-            setEncodingOption(EncodingOption.IMPLICIT);
+            getEncodingOption().useImplicit();
         }
         public Type5() {
             this(null);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/57e75f08/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/codec/KrbCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/codec/KrbCodec.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/codec/KrbCodec.java
index 8204267..3e26c30 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/codec/KrbCodec.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/codec/KrbCodec.java
@@ -45,7 +45,7 @@ public class KrbCodec {
     }
 
     public static <T extends Asn1Type> T decode(ByteBuffer content, Class<T> krbType) throws KrbException {
-        Asn1Type implObj = null;
+        Asn1Type implObj;
         try {
             implObj = krbType.newInstance();
         } catch (Exception e) {
@@ -68,7 +68,7 @@ public class KrbCodec {
         int length = AbstractAsn1Type.readLength(limitedBuffer);
         LimitedByteBuffer valueBuffer = new LimitedByteBuffer(limitedBuffer, length);
 
-        KrbMessage msg = null;
+        KrbMessage msg;
         KrbMessageType msgType = KrbMessageType.fromValue(tagNo);
         if (msgType == KrbMessageType.TGS_REQ) {
             msg = new TgsReq();


[28/30] directory-kerberos git commit: Updated the comment for EncodingOption

Posted by dr...@apache.org.
Updated the comment for EncodingOption


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

Branch: refs/heads/installation
Commit: 7c323a3bab643e2f6d8c4c5bb68e5995a97948a9
Parents: 57e75f0
Author: Drankye <dr...@gmail.com>
Authored: Mon Feb 9 19:14:57 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Mon Feb 9 19:14:57 2015 +0800

----------------------------------------------------------------------
 kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c323a3b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
index 0308065..ac9fa48 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.asn1;
 
 /**
- * An enum used to represent the various Encoding options.
+ * A class used to hold the various encoding options for a type.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */


[08/30] directory-kerberos git commit: Merge branch 'master' of http://git-wip-us.apache.org/repos/asf/directory-kerberos

Posted by dr...@apache.org.
Merge branch 'master' of http://git-wip-us.apache.org/repos/asf/directory-kerberos


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

Branch: refs/heads/installation
Commit: c69f3853bcdab25a0cce0e4d45a4f454dff1bc46
Parents: 989a56f 377814b
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Sun Feb 1 10:13:09 2015 +0100
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Sun Feb 1 10:13:09 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/kerby/asn1/Asn1Factory.java | 13 ++++
 .../org/apache/kerby/asn1/Asn1InputBuffer.java  | 27 ++++++-
 .../org/apache/kerby/asn1/EncodingOption.java   | 12 +++
 .../java/org/apache/kerby/asn1/TagClass.java    | 25 ++++++
 .../org/apache/kerby/asn1/TaggingOption.java    | 50 +++++++++++-
 .../kerby/asn1/type/AbstractAsn1Type.java       | 26 ++++++-
 .../org/apache/kerby/asn1/type/Asn1Boolean.java |  9 ++-
 .../org/apache/kerby/asn1/type/Asn1Tagging.java | 16 ++--
 .../org/apache/kerby/asn1/type/Asn1Type.java    | 80 ++++++++++++++++++++
 .../org/apache/kerby/asn1/TestAsn1Boolean.java  | 22 ++++--
 .../kerberos/kerb/server/TestKdcConfigLoad.java |  4 +-
 11 files changed, 260 insertions(+), 24 deletions(-)
----------------------------------------------------------------------



[22/30] directory-kerberos git commit: Use random ports for kerby-event tests. Switch to use "int" instead of "short" for the ports, as short is inadequate

Posted by dr...@apache.org.
Use random ports for kerby-event tests. Switch to use "int" instead of "short" for the ports, as short is inadequate


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

Branch: refs/heads/installation
Commit: cacd2837965fe8fc58274b3f719282afc5b85e76
Parents: fe44b27
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Feb 4 16:27:49 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Feb 4 16:27:49 2015 +0000

----------------------------------------------------------------------
 .../org/apache/kerby/transport/Acceptor.java    |  2 +-
 .../org/apache/kerby/transport/Connector.java   |  2 +-
 .../org/apache/kerby/transport/Network.java     |  8 ++++----
 .../kerby/event/network/TestNetworkBase.java    |  4 ++--
 .../kerby/event/network/TestNetworkClient.java  |  4 ++++
 .../kerby/event/network/TestNetworkServer.java  | 11 ++++++++++
 .../org/apache/kerby/event/tcp/TestTcpBase.java |  2 +-
 .../apache/kerby/event/tcp/TestTcpClient.java   |  6 ++++--
 .../apache/kerby/event/tcp/TestTcpServer.java   | 21 ++++++++++++--------
 .../org/apache/kerby/event/udp/TestUdpBase.java |  2 +-
 .../apache/kerby/event/udp/TestUdpClient.java   |  2 ++
 .../apache/kerby/event/udp/TestUdpServer.java   |  5 +++++
 12 files changed, 49 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/main/java/org/apache/kerby/transport/Acceptor.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/main/java/org/apache/kerby/transport/Acceptor.java b/lib/kerby-event/src/main/java/org/apache/kerby/transport/Acceptor.java
index 8fa25d7..efa827a 100644
--- a/lib/kerby-event/src/main/java/org/apache/kerby/transport/Acceptor.java
+++ b/lib/kerby-event/src/main/java/org/apache/kerby/transport/Acceptor.java
@@ -27,7 +27,7 @@ public abstract class Acceptor extends TransportSelector {
         super(transportHandler);
     }
 
-    public void listen(String address, short listenPort) {
+    public void listen(String address, int listenPort) {
         InetSocketAddress socketAddress = new InetSocketAddress(address, listenPort);
         doListen(socketAddress);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/main/java/org/apache/kerby/transport/Connector.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/main/java/org/apache/kerby/transport/Connector.java b/lib/kerby-event/src/main/java/org/apache/kerby/transport/Connector.java
index ece171f..720f481 100644
--- a/lib/kerby-event/src/main/java/org/apache/kerby/transport/Connector.java
+++ b/lib/kerby-event/src/main/java/org/apache/kerby/transport/Connector.java
@@ -27,7 +27,7 @@ public abstract class Connector extends TransportSelector {
         super(transportHandler);
     }
 
-    public void connect(String serverAddress, short serverPort) {
+    public void connect(String serverAddress, int serverPort) {
         InetSocketAddress sa = new InetSocketAddress(serverAddress, serverPort);
         doConnect(sa);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/main/java/org/apache/kerby/transport/Network.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/main/java/org/apache/kerby/transport/Network.java b/lib/kerby-event/src/main/java/org/apache/kerby/transport/Network.java
index 4cf346e..707b3a0 100644
--- a/lib/kerby-event/src/main/java/org/apache/kerby/transport/Network.java
+++ b/lib/kerby-event/src/main/java/org/apache/kerby/transport/Network.java
@@ -102,7 +102,7 @@ public class Network extends LongRunningEventHandler {
      * @param serverAddress
      * @param serverPort
      */
-    public void tcpConnect(String serverAddress, short serverPort) {
+    public void tcpConnect(String serverAddress, int serverPort) {
         InetSocketAddress sa = new InetSocketAddress(serverAddress, serverPort);
         checkTcpTransportHandler();
         doTcpConnect(sa);
@@ -114,7 +114,7 @@ public class Network extends LongRunningEventHandler {
      * @param serverAddress
      * @param serverPort
      */
-    public void udpConnect(String serverAddress, short serverPort) {
+    public void udpConnect(String serverAddress, int serverPort) {
         InetSocketAddress sa = new InetSocketAddress(serverAddress, serverPort);
         checkUdpTransportHandler();
         doUdpConnect(sa);
@@ -126,7 +126,7 @@ public class Network extends LongRunningEventHandler {
      * @param serverAddress
      * @param serverPort
      */
-    public void tcpListen(String serverAddress, short serverPort) {
+    public void tcpListen(String serverAddress, int serverPort) {
         InetSocketAddress sa = new InetSocketAddress(serverAddress, serverPort);
         checkTcpTransportHandler();
         doTcpListen(sa);
@@ -138,7 +138,7 @@ public class Network extends LongRunningEventHandler {
      * @param serverAddress
      * @param serverPort
      */
-    public void udpListen(String serverAddress, short serverPort) {
+    public void udpListen(String serverAddress, int serverPort) {
         InetSocketAddress sa = new InetSocketAddress(serverAddress, serverPort);
         checkUdpTransportHandler();
         doUdpListen(sa);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java
index 7526658..04a15a9 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java
@@ -27,8 +27,8 @@ import java.nio.ByteBuffer;
 
 public class TestNetworkBase {
     protected String serverHost = "127.0.0.1";
-    protected short tcpPort = 8183;
-    protected short udpPort = 8184;
+    protected int tcpPort = 0;
+    protected int udpPort = 0;
     protected String TEST_MESSAGE = "Hello world!";
     protected String clientRecvedMessage;
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
index b52a18d..54dc6a9 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
@@ -86,6 +86,8 @@ public class TestNetworkClient extends TestNetworkBase {
         ServerSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(tcpPort));
         serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
+        
+        tcpPort = serverSocket.getLocalPort();
 
         SocketChannel socketChannel;
         while (true) {
@@ -130,6 +132,8 @@ public class TestNetworkClient extends TestNetworkBase {
         DatagramSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(udpPort));
         serverSocketChannel.register(selector, SelectionKey.OP_READ);
+        
+        udpPort = serverSocket.getLocalPort();
 
         while (true) {
             if (selector.selectNow() > 0) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
index 09a8f0e..b22c1d3 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
@@ -31,6 +31,7 @@ import org.junit.Test;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
+import java.net.ServerSocket;
 import java.net.SocketAddress;
 import java.nio.ByteBuffer;
 import java.nio.channels.DatagramChannel;
@@ -65,7 +66,17 @@ public class TestNetworkServer extends TestNetworkBase {
         eventHub.register(network);
 
         eventHub.start();
+        
+        ServerSocket serverSocket = new ServerSocket(0);
+        tcpPort = serverSocket.getLocalPort();
+        serverSocket.close();
+        
         network.tcpListen(serverHost, tcpPort);
+        
+        serverSocket = new ServerSocket(0);
+        udpPort = serverSocket.getLocalPort();
+        serverSocket.close();
+        
         network.udpListen(serverHost, udpPort);
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java
index 263b7fc..8949733 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java
@@ -27,7 +27,7 @@ import java.nio.ByteBuffer;
 
 public class TestTcpBase {
     protected String serverHost = "127.0.0.1";
-    protected short serverPort = 8181;
+    protected int serverPort = 0;
     protected String TEST_MESSAGE = "Hello world!";
     protected String clientRecvedMessage;
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
index 1e895b6..106c3c7 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
@@ -73,11 +73,13 @@ public class TestTcpClient extends TestTcpBase {
 
     private void doRunServer() throws IOException {
         Selector selector = Selector.open();
-        ServerSocketChannel serverSocketChannel = ServerSocketChannel .open();
+        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
         serverSocketChannel.configureBlocking(false);
         ServerSocket serverSocket = serverSocketChannel.socket();
-        serverSocket.bind(new InetSocketAddress(serverPort));
+        serverSocket.bind(new InetSocketAddress(0));
         serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
+        
+        serverPort = serverSocket.getLocalPort();
 
         SocketChannel socketChannel;
         while (true) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
index 3fe791a..66a2df3 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
@@ -19,6 +19,15 @@
  */
 package org.apache.kerby.event.tcp;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.SocketAddress;
+import java.nio.ByteBuffer;
+import java.nio.channels.SocketChannel;
+
 import org.apache.kerby.event.EventHandler;
 import org.apache.kerby.event.EventHub;
 import org.apache.kerby.transport.Acceptor;
@@ -30,14 +39,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.nio.ByteBuffer;
-import java.nio.channels.SocketChannel;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
 public class TestTcpServer extends TestTcpBase {
 
     private EventHub eventHub;
@@ -62,6 +63,10 @@ public class TestTcpServer extends TestTcpBase {
 
         Acceptor acceptor = new TcpAcceptor(createStreamingDecoder());
         eventHub.register(acceptor);
+        
+        ServerSocket serverSocket = new ServerSocket(0);
+        serverPort = serverSocket.getLocalPort();
+        serverSocket.close();
 
         eventHub.start();
         acceptor.listen(serverHost, serverPort);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java
index 63d71ac..f4d3ed1 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java
@@ -25,7 +25,7 @@ import java.nio.ByteBuffer;
 
 public class TestUdpBase {
     protected String serverHost = "127.0.0.1";
-    protected short serverPort = 8181;
+    protected int serverPort = 0;
     protected String TEST_MESSAGE = "Hello world!";
     protected String clientRecvedMessage;
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
index d8d5086..60001f4 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
@@ -77,6 +77,8 @@ public class TestUdpClient extends TestUdpBase {
         DatagramSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(serverPort));
         serverSocketChannel.register(selector, SelectionKey.OP_READ);
+        
+        serverPort = serverSocket.getLocalPort();
 
         while (true) {
             if (selector.selectNow() > 0) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/cacd2837/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
index 188e6de..b525a55 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
@@ -32,6 +32,7 @@ import org.junit.Test;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
+import java.net.ServerSocket;
 import java.net.SocketAddress;
 import java.nio.ByteBuffer;
 import java.nio.channels.DatagramChannel;
@@ -62,6 +63,10 @@ public class TestUdpServer extends TestUdpBase {
 
         Acceptor acceptor = new UdpAcceptor();
         eventHub.register(acceptor);
+        
+        ServerSocket serverSocket = new ServerSocket(0);
+        serverPort = serverSocket.getLocalPort();
+        serverSocket.close();
 
         eventHub.start();
         acceptor.listen(serverHost, serverPort);


[18/30] directory-kerberos git commit: Some consistency changes to the poms

Posted by dr...@apache.org.
Some consistency changes to the poms


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

Branch: refs/heads/installation
Commit: d93c2c65d1cf2cdf4b0b78e2373994fd854a8dc8
Parents: 35ab61e
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Feb 4 12:16:56 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Feb 4 12:16:56 2015 +0000

----------------------------------------------------------------------
 3rdparty/not-yet-commons-ssl/pom.xml |  7 ++++---
 3rdparty/pom.xml                     | 23 -----------------------
 benchmark/pom.xml                    |  4 ++--
 kerby-asn1/README.md                 |  2 +-
 kerby-kdc/pom.xml                    |  1 +
 kerby-kerb/kerb-core-test/pom.xml    |  6 +++---
 kerby-kerb/kerb-core/pom.xml         |  2 +-
 kerby-kerb/pom.xml                   |  1 +
 lib/kerby-token/pom.xml              |  2 +-
 lib/pom.xml                          |  1 +
 10 files changed, 15 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/3rdparty/not-yet-commons-ssl/pom.xml
----------------------------------------------------------------------
diff --git a/3rdparty/not-yet-commons-ssl/pom.xml b/3rdparty/not-yet-commons-ssl/pom.xml
index 819d78d..8f6c402 100644
--- a/3rdparty/not-yet-commons-ssl/pom.xml
+++ b/3rdparty/not-yet-commons-ssl/pom.xml
@@ -29,7 +29,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.18</version>
+        <version>2.18.1</version>
         <configuration>
           <skipTests>true</skipTests>
         </configuration>
@@ -73,20 +73,21 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <scope>test</scope>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcprov-ext-jdk15on</artifactId>
       <version>1.51</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
-      <scope>test</scope>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-all</artifactId>
       <version>1.9.5</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <version>${junit.version}</version>
       <scope>test</scope>
     </dependency>
   </dependencies>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/3rdparty/pom.xml
----------------------------------------------------------------------
diff --git a/3rdparty/pom.xml b/3rdparty/pom.xml
index 9474003..e9fb76e 100644
--- a/3rdparty/pom.xml
+++ b/3rdparty/pom.xml
@@ -30,27 +30,4 @@
     <module>not-yet-commons-ssl</module>
   </modules>
 
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <version>0.11</version>
-          <configuration>
-            <skip>true</skip>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-
 </project>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/benchmark/pom.xml
----------------------------------------------------------------------
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 5d112ea..9e7a2b4 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -35,12 +35,12 @@
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerby-asn1</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerb-core</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.directory.server</groupId>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/kerby-asn1/README.md
----------------------------------------------------------------------
diff --git a/kerby-asn1/README.md b/kerby-asn1/README.md
index eb35929..21c11fc 100644
--- a/kerby-asn1/README.md
+++ b/kerby-asn1/README.md
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
-haox-asn1
+kerby-asn1
 =========
 
 ### A ASN1 parser with easy and simple API

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/kerby-kdc/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-kdc/pom.xml b/kerby-kdc/pom.xml
index 7052a13..ec54b2a 100644
--- a/kerby-kdc/pom.xml
+++ b/kerby-kdc/pom.xml
@@ -49,6 +49,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <version>${junit.version}</version> 
       <scope>test</scope>
     </dependency>
   </dependencies>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/kerby-kerb/kerb-core-test/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/pom.xml b/kerby-kerb/kerb-core-test/pom.xml
index bf980e6..dc79b28 100644
--- a/kerby-kerb/kerb-core-test/pom.xml
+++ b/kerby-kerb/kerb-core-test/pom.xml
@@ -30,17 +30,17 @@
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerby-asn1</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerb-core</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerb-util</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
   </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/kerby-kerb/kerb-core/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/pom.xml b/kerby-kerb/kerb-core/pom.xml
index 9bd0963..aa01230 100644
--- a/kerby-kerb/kerb-core/pom.xml
+++ b/kerby-kerb/kerb-core/pom.xml
@@ -30,7 +30,7 @@
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerby-asn1</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
 
   </dependencies>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/kerby-kerb/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-kerb/pom.xml b/kerby-kerb/pom.xml
index 2ec1b40..4422235 100644
--- a/kerby-kerb/pom.xml
+++ b/kerby-kerb/pom.xml
@@ -42,6 +42,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <version>${junit.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/lib/kerby-token/pom.xml
----------------------------------------------------------------------
diff --git a/lib/kerby-token/pom.xml b/lib/kerby-token/pom.xml
index a018130..e15128c 100644
--- a/lib/kerby-token/pom.xml
+++ b/lib/kerby-token/pom.xml
@@ -37,7 +37,7 @@
     <dependency>
       <groupId>org.apache.kerby</groupId>
       <artifactId>kerby-asn1</artifactId>
-      <version>1.0-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
   </dependencies>
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/d93c2c65/lib/pom.xml
----------------------------------------------------------------------
diff --git a/lib/pom.xml b/lib/pom.xml
index 8a1cd49..e6284ef 100644
--- a/lib/pom.xml
+++ b/lib/pom.xml
@@ -38,6 +38,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <version>${junit.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>


[12/30] directory-kerberos git commit: Cleaned some bit and refactored some codes in kerb-crypto

Posted by dr...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Random.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Random.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Random.java
deleted file mode 100644
index cd6bf71..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Random.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-import java.security.SecureRandom;
-
-public final class Random {
-
-    private static SecureRandom srand = new SecureRandom();
-
-    public static byte[] makeBytes(int size) {
-        byte[] data = new byte[size];
-        srand.nextBytes(data);
-        return data;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Rc4.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Rc4.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Rc4.java
deleted file mode 100644
index b45c4eb..0000000
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/Rc4.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- *  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.kerby.kerberos.kerb.crypto;
-
-/**
- * Based on MIT krb5 enc_rc4.c
- */
-public class Rc4 {
-
-    private static byte[] L40 = "fortybits".getBytes();
-
-    public static byte[] getSalt(int usage, boolean exportable) {
-        int newUsage = convertUsage(usage);
-        byte[] salt;
-
-        if (exportable) {
-            salt = new byte[14];
-            System.arraycopy(L40, 0, salt, 0, 9);
-            BytesUtil.int2bytes(newUsage, salt, 10, false);
-        } else {
-            salt = new byte[4];
-            BytesUtil.int2bytes(newUsage, salt, 0, false);
-        }
-
-        return salt;
-    }
-
-    private static int convertUsage(int usage) {
-        switch (usage) {
-            case 1:  return 1;   /* AS-REQ PA-ENC-TIMESTAMP padata timestamp,  */
-            case 2:  return 2;   /* ticket from kdc */
-            case 3:  return 8;   /* as-rep encrypted part */
-            case 4:  return 4;   /* tgs-req authz data */
-            case 5:  return 5;   /* tgs-req authz data in subkey */
-            case 6:  return 6;   /* tgs-req authenticator cksum */
-            case 7:  return 7;   /* tgs-req authenticator */
-            case 8:  return 8;
-            case 9:  return 9;   /* tgs-rep encrypted with subkey */
-            case 10: return 10;  /* ap-rep authentication cksum (never used by MS) */
-            case 11: return 11;  /* app-req authenticator */
-            case 12: return 12;  /* app-rep encrypted part */
-            case 23: return 13;  /* sign wrap token*/
-            default: return usage;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractCheckSumTypeHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractCheckSumTypeHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractCheckSumTypeHandler.java
index 49a62c7..6f01c38 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractCheckSumTypeHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractCheckSumTypeHandler.java
@@ -30,7 +30,8 @@ public abstract class AbstractCheckSumTypeHandler
     private int computeSize;
     private int outputSize;
 
-    public AbstractCheckSumTypeHandler(EncryptProvider encProvider, HashProvider hashProvider,
+    public AbstractCheckSumTypeHandler(EncryptProvider encProvider,
+                                       HashProvider hashProvider,
                                        int computeSize, int outputSize) {
         super(encProvider, hashProvider);
         this.computeSize = computeSize;
@@ -89,7 +90,8 @@ public abstract class AbstractCheckSumTypeHandler
     }
 
     @Override
-    public boolean verify(byte[] data, int start, int size, byte[] checksum) throws KrbException {
+    public boolean verify(byte[] data, int start, int size,
+                          byte[] checksum) throws KrbException {
         throw new UnsupportedOperationException();
     }
 
@@ -106,7 +108,8 @@ public abstract class AbstractCheckSumTypeHandler
     }
     @Override
     public boolean verifyWithKey(byte[] data,
-                                 byte[] key, int usage, byte[] checksum) throws KrbException {
+                                 byte[] key, int usage,
+                                 byte[] checksum) throws KrbException {
         throw new UnsupportedOperationException();
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractKeyedCheckSumTypeHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractKeyedCheckSumTypeHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractKeyedCheckSumTypeHandler.java
index 3f17454..81bfa0a 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractKeyedCheckSumTypeHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/AbstractKeyedCheckSumTypeHandler.java
@@ -23,11 +23,13 @@ import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 import org.apache.kerby.kerberos.kerb.crypto.key.KeyMaker;
 import org.apache.kerby.kerberos.kerb.KrbException;
 
-public abstract class AbstractKeyedCheckSumTypeHandler extends AbstractCheckSumTypeHandler {
+public abstract class AbstractKeyedCheckSumTypeHandler
+        extends AbstractCheckSumTypeHandler {
 
     private KeyMaker keyMaker;
 
-    public AbstractKeyedCheckSumTypeHandler(EncryptProvider encProvider, HashProvider hashProvider,
+    public AbstractKeyedCheckSumTypeHandler(EncryptProvider encProvider,
+                                            HashProvider hashProvider,
                                             int computeSize, int outputSize) {
         super(encProvider, hashProvider, computeSize, outputSize);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java
index 16122d2..6a51d29 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
-import org.apache.kerby.kerberos.kerb.crypto.Cmac;
+import org.apache.kerby.kerberos.kerb.crypto.util.Cmac;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 import org.apache.kerby.kerberos.kerb.KrbException;
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/ConfounderedDesCheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/ConfounderedDesCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/ConfounderedDesCheckSum.java
index 8259849..5f6a3d6 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/ConfounderedDesCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/ConfounderedDesCheckSum.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
-import org.apache.kerby.kerberos.kerb.crypto.Confounder;
+import org.apache.kerby.kerberos.kerb.crypto.util.Confounder;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.DesProvider;
 import org.apache.kerby.kerberos.kerb.KrbException;
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HashProvider.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HashProvider.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HashProvider.java
index 1586fb1..1eb32db 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HashProvider.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HashProvider.java
@@ -22,7 +22,12 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 import org.apache.kerby.kerberos.kerb.KrbException;
 
 /**
- * krb5_hash_provider
+ * Ref. MIT Krb5: krb5_hash_provider
+ */
+
+/**
+ * Hash provider that provides hash function
+ * for implementing a checksum type defined by Kerberos RFC3961.
  */
 public interface HashProvider {
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java
index 84d9031..03b8c0b 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
-import org.apache.kerby.kerberos.kerb.crypto.Hmac;
+import org.apache.kerby.kerberos.kerb.crypto.util.Hmac;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Sha1Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 import org.apache.kerby.kerberos.kerb.KrbException;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java
index 1ef5489..3123f71 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
-import org.apache.kerby.kerberos.kerb.crypto.Hmac;
-import org.apache.kerby.kerberos.kerb.crypto.Rc4;
+import org.apache.kerby.kerberos.kerb.crypto.util.Hmac;
+import org.apache.kerby.kerberos.kerb.crypto.util.Rc4;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md5Provider;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.spec.common.CheckSumType;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java
index ee8faea..2e7db3b 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
-import org.apache.kerby.kerberos.kerb.crypto.BytesUtil;
+import org.apache.kerby.kerberos.kerb.crypto.util.BytesUtil;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 import org.apache.kerby.kerberos.kerb.crypto.key.DkKeyMaker;
 import org.apache.kerby.kerberos.kerb.KrbException;
@@ -44,5 +44,6 @@ public abstract class KcCheckSum extends AbstractKeyedCheckSumTypeHandler {
         return mac;
     }
 
-    protected abstract byte[] mac(byte[] Kc, byte[] data, int start, int len) throws KrbException;
+    protected abstract byte[] mac(byte[] Kc, byte[] data, int start,
+                                  int len) throws KrbException;
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java
index 4939027..038631e 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
-import org.apache.kerby.kerberos.kerb.crypto.Hmac;
-import org.apache.kerby.kerberos.kerb.crypto.Rc4;
+import org.apache.kerby.kerberos.kerb.crypto.util.Hmac;
+import org.apache.kerby.kerberos.kerb.crypto.util.Rc4;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md5Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Rc4Provider;
 import org.apache.kerby.kerberos.kerb.KrbException;
@@ -55,7 +55,6 @@ public class Md5HmacRc4CheckSum extends AbstractKeyedCheckSumTypeHandler {
     @Override
     protected byte[] doChecksumWithKey(byte[] data, int start, int len,
                                        byte[] key, int usage) throws KrbException {
-
         byte[] Ksign = key;
 
         byte[] salt = Rc4.getSalt(usage, false);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Crc32Provider.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Crc32Provider.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Crc32Provider.java
index de30eca..40e4fa8 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Crc32Provider.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Crc32Provider.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum.provider;
 
-import org.apache.kerby.kerberos.kerb.crypto.Crc32;
+import org.apache.kerby.kerberos.kerb.crypto.util.Crc32;
 
 public class Crc32Provider extends AbstractHashProvider {
     private byte[] output;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Md4Provider.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Md4Provider.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Md4Provider.java
index e00977c..441ad74 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Md4Provider.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/provider/Md4Provider.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum.provider;
 
-import org.apache.kerby.kerberos.kerb.crypto.Md4;
+import org.apache.kerby.kerberos.kerb.crypto.util.Md4;
 
 public class Md4Provider extends MessageDigestHashProvider {
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcEnc.java
index e3aa7d8..a639d56 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcEnc.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.KrbErrorCode;
-import org.apache.kerby.kerberos.kerb.crypto.Confounder;
+import org.apache.kerby.kerberos.kerb.crypto.util.Confounder;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.HashProvider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.DesProvider;
 import org.apache.kerby.kerberos.kerb.crypto.key.DesKeyMaker;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/EncryptProvider.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/EncryptProvider.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/EncryptProvider.java
index 47168cb..87960f4 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/EncryptProvider.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/EncryptProvider.java
@@ -22,7 +22,12 @@ package org.apache.kerby.kerberos.kerb.crypto.enc;
 import org.apache.kerby.kerberos.kerb.KrbException;
 
 /**
- * krb5_enc_provider
+ * Ref. MIT Krb5:krb5_enc_provider
+ */
+
+/**
+ * Encryption provider that provides encryption/decryption functions
+ * for implementing an encryption type defined by Kerberos RFC3961.
  */
 public interface EncryptProvider {
 
@@ -37,7 +42,4 @@ public interface EncryptProvider {
     public byte[] cbcMac(byte[] key, byte[] iv, byte[] data) throws KrbException;
     public boolean supportCbcMac();
 
-    public byte[] initState(byte[] key, int keyUsage);
-    public void cleanState();
-    public void cleanKey();
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiCmacEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiCmacEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiCmacEnc.java
index 890c7ca..efe3abf 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiCmacEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiCmacEnc.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
-import org.apache.kerby.kerberos.kerb.crypto.Cmac;
+import org.apache.kerby.kerberos.kerb.crypto.util.Cmac;
 import org.apache.kerby.kerberos.kerb.KrbException;
 
 public abstract class KeKiCmacEnc extends KeKiEnc {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java
index 9e562c7..b1bc7dc 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.KrbErrorCode;
-import org.apache.kerby.kerberos.kerb.crypto.BytesUtil;
-import org.apache.kerby.kerberos.kerb.crypto.Confounder;
+import org.apache.kerby.kerberos.kerb.crypto.util.BytesUtil;
+import org.apache.kerby.kerberos.kerb.crypto.util.Confounder;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.HashProvider;
 import org.apache.kerby.kerberos.kerb.crypto.key.DkKeyMaker;
 import org.apache.kerby.kerberos.kerb.KrbException;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiHmacSha1Enc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiHmacSha1Enc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiHmacSha1Enc.java
index 70f49c0..0220830 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiHmacSha1Enc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiHmacSha1Enc.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
-import org.apache.kerby.kerberos.kerb.crypto.Hmac;
+import org.apache.kerby.kerberos.kerb.crypto.util.Hmac;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.HashProvider;
 import org.apache.kerby.kerberos.kerb.KrbException;
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
index 126edaf..9d9e90d 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
@@ -20,10 +20,10 @@
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.KrbErrorCode;
-import org.apache.kerby.kerberos.kerb.crypto.BytesUtil;
-import org.apache.kerby.kerberos.kerb.crypto.Confounder;
-import org.apache.kerby.kerberos.kerb.crypto.Rc4;
-import org.apache.kerby.kerberos.kerb.crypto.Hmac;
+import org.apache.kerby.kerberos.kerb.crypto.util.BytesUtil;
+import org.apache.kerby.kerberos.kerb.crypto.util.Confounder;
+import org.apache.kerby.kerberos.kerb.crypto.util.Rc4;
+import org.apache.kerby.kerberos.kerb.crypto.util.Hmac;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md5Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Rc4Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.Rc4KeyMaker;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/AbstractEncryptProvider.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/AbstractEncryptProvider.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/AbstractEncryptProvider.java
index 2fcca14..660ffb6 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/AbstractEncryptProvider.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/AbstractEncryptProvider.java
@@ -49,11 +49,6 @@ public abstract class AbstractEncryptProvider implements EncryptProvider {
     }
 
     @Override
-    public byte[] initState(byte[] key, int keyUsage) {
-        return new byte[0];
-    }
-
-    @Override
     public void encrypt(byte[] key, byte[] cipherState, byte[] data) throws KrbException {
         doEncrypt(data, key, cipherState, true);
     }
@@ -87,13 +82,4 @@ public abstract class AbstractEncryptProvider implements EncryptProvider {
         return false;
     }
 
-    @Override
-    public void cleanState() {
-
-    }
-
-    @Override
-    public void cleanKey() {
-
-    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/CamelliaProvider.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/CamelliaProvider.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/CamelliaProvider.java
index d3b69a6..6e16734 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/CamelliaProvider.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/CamelliaProvider.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.enc.provider;
 
-import org.apache.kerby.kerberos.kerb.crypto.Camellia;
+import org.apache.kerby.kerberos.kerb.crypto.util.Camellia;
 import org.apache.kerby.kerberos.kerb.KrbException;
 
 public abstract class CamelliaProvider extends AbstractEncryptProvider {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AbstractKeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AbstractKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AbstractKeyMaker.java
index 3c2cf9c..f31aeb3 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AbstractKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AbstractKeyMaker.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.key;
 
-import org.apache.kerby.kerberos.kerb.crypto.BytesUtil;
+import org.apache.kerby.kerberos.kerb.crypto.util.BytesUtil;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 import org.apache.kerby.kerberos.kerb.KrbException;
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java
index 8b385da..f777a12 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.crypto.key;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.crypto.Pbkdf;
+import org.apache.kerby.kerberos.kerb.crypto.util.Pbkdf;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.AesProvider;
 
 import java.io.UnsupportedEncodingException;
@@ -49,7 +49,7 @@ public class AesKeyMaker extends DkKeyMaker {
         }
 
         int keySize = encProvider().keySize();
-        byte[] random = new byte[0];
+        byte[] random;
         try {
             random = Pbkdf.PBKDF2(string.toCharArray(), saltBytes, iterCount, keySize);
         } catch (GeneralSecurityException e) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java
index 4feb7c5..a790a38 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.key;
 
-import org.apache.kerby.kerberos.kerb.crypto.BytesUtil;
-import org.apache.kerby.kerberos.kerb.crypto.Cmac;
-import org.apache.kerby.kerberos.kerb.crypto.Pbkdf;
+import org.apache.kerby.kerberos.kerb.crypto.util.BytesUtil;
+import org.apache.kerby.kerberos.kerb.crypto.util.Cmac;
+import org.apache.kerby.kerberos.kerb.crypto.util.Pbkdf;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.CamelliaProvider;
 import org.apache.kerby.kerberos.kerb.KrbException;
 
@@ -51,7 +51,7 @@ public class CamelliaKeyMaker extends DkKeyMaker {
         }
 
         int keySize = encProvider().keySize();
-        byte[] random = new byte[0];
+        byte[] random;
         try {
             random = Pbkdf.PBKDF2(string.toCharArray(), saltBytes, iterCount, keySize);
         } catch (GeneralSecurityException e) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
index 06caeb8..363eb29 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.crypto.key;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.crypto.Des;
-import org.apache.kerby.kerberos.kerb.crypto.Nfold;
+import org.apache.kerby.kerberos.kerb.crypto.util.Des;
+import org.apache.kerby.kerberos.kerb.crypto.util.Nfold;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 
 public class Des3KeyMaker extends DkKeyMaker {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
index 2528b0d..daf15c2 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.crypto.key;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.crypto.BytesUtil;
-import org.apache.kerby.kerberos.kerb.crypto.Des;
+import org.apache.kerby.kerberos.kerb.crypto.util.BytesUtil;
+import org.apache.kerby.kerberos.kerb.crypto.util.Des;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 
 public class DesKeyMaker extends AbstractKeyMaker {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java
index a1a515d..ad38932 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.crypto.key;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.crypto.Nfold;
+import org.apache.kerby.kerberos.kerb.crypto.util.Nfold;
 import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
 
 public abstract class DkKeyMaker extends AbstractKeyMaker {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/BytesUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/BytesUtil.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/BytesUtil.java
new file mode 100644
index 0000000..1c58293
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/BytesUtil.java
@@ -0,0 +1,183 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+public class BytesUtil {
+
+    public static short bytes2short(byte[] bytes, int offset, boolean bigEndian) {
+        short val = 0;
+
+        if (bigEndian) {
+            val += (bytes[offset + 0] & 0xff) << 8;
+            val += (bytes[offset + 1] & 0xff);
+        } else {
+            val += (bytes[offset + 1] & 0xff) << 8;
+            val += (bytes[offset + 0] & 0xff);
+        }
+
+        return val;
+    }
+
+    public static short bytes2short(byte[] bytes, boolean bigEndian) {
+        return bytes2short(bytes, 0, bigEndian);
+    }
+
+    public static byte[] short2bytes(int val, boolean bigEndian) {
+        byte[] bytes = new byte[2];
+
+        short2bytes(val, bytes, 0, bigEndian);
+
+        return bytes;
+    }
+
+    public static void short2bytes(int val, byte[] bytes, int offset, boolean bigEndian) {
+        if (bigEndian) {
+            bytes[offset + 0] = (byte) ((val >> 8) & 0xff);
+            bytes[offset + 1] = (byte) ((val) & 0xff);
+        } else {
+            bytes[offset + 1] = (byte) ((val >>  8) & 0xff);
+            bytes[offset + 0] = (byte) ((val      ) & 0xff);
+        }
+    }
+
+    public static int bytes2int(byte[] bytes, boolean bigEndian) {
+        return bytes2int(bytes, 0, bigEndian);
+    }
+
+    public static int bytes2int(byte[] bytes, int offset, boolean bigEndian) {
+        int val = 0;
+
+        if (bigEndian) {
+            val += (bytes[offset + 0] & 0xff) << 24;
+            val += (bytes[offset + 1] & 0xff) << 16;
+            val += (bytes[offset + 2] & 0xff) << 8;
+            val += (bytes[offset + 3] & 0xff);
+        } else {
+            val += (bytes[offset + 3] & 0xff) << 24;
+            val += (bytes[offset + 2] & 0xff) << 16;
+            val += (bytes[offset + 1] & 0xff) << 8;
+            val += (bytes[offset + 0] & 0xff);
+        }
+
+        return val;
+    }
+
+    public static byte[] int2bytes(int val, boolean bigEndian) {
+        byte[] bytes = new byte[4];
+
+        int2bytes(val, bytes, 0, bigEndian);
+
+        return bytes;
+    }
+
+    public static void int2bytes(int val, byte[] bytes, int offset, boolean bigEndian) {
+        if (bigEndian) {
+            bytes[offset + 0] = (byte) ((val >> 24) & 0xff);
+            bytes[offset + 1] = (byte) ((val >> 16) & 0xff);
+            bytes[offset + 2] = (byte) ((val >> 8) & 0xff);
+            bytes[offset + 3] = (byte) ((val) & 0xff);
+        } else {
+            bytes[offset + 3] = (byte) ((val >> 24) & 0xff);
+            bytes[offset + 2] = (byte) ((val >> 16) & 0xff);
+            bytes[offset + 1] = (byte) ((val >> 8) & 0xff);
+            bytes[offset + 0] = (byte) ((val) & 0xff);
+        }
+    }
+
+    public static byte[] long2bytes(long val, boolean bigEndian) {
+        byte[] bytes = new byte[8];
+        long2bytes(val, bytes, 0, bigEndian);
+        return bytes;
+    }
+
+    public static void long2bytes(long val, byte[] bytes, int offset, boolean bigEndian) {
+        if (bigEndian) {
+            for (int i = 0; i < 8; i++) {
+                bytes[i + offset] = (byte) ((val >> ((7 - i) * 8)) & 0xffL);
+            }
+        } else {
+            for (int i = 0; i < 8; i++) {
+                bytes[i + offset] = (byte) ((val >> (i * 8)) & 0xffL);
+            }
+        }
+    }
+
+    public static long bytes2long(byte[] bytes, boolean bigEndian) {
+        return bytes2long(bytes, 0, bigEndian);
+    }
+
+    public static long bytes2long(byte[] bytes, int offset, boolean bigEndian) {
+        long val = 0;
+
+        if (bigEndian) {
+            for (int i = 0; i < 8; i++) {
+                val |= (((long) bytes[i + offset]) & 0xffL) << ((7 - i) * 8);
+            }
+        } else {
+            for (int i = 0; i < 8; i++) {
+                val |= (((long) bytes[i + offset]) & 0xffL) << (i * 8);
+            }
+        }
+
+        return val;
+    }
+
+    public static byte[] padding(byte[] data, int block) {
+        int len = data.length;
+        int paddingLen = len % block != 0 ? 8 - len % block : 0;
+        if (paddingLen == 0) {
+            return data;
+        }
+
+        byte[] result = new byte[len + + paddingLen];
+        System.arraycopy(data, 0, result, 0, len);
+        return result;
+    }
+
+    public static byte[] duplicate(byte[] bytes) {
+        return duplicate(bytes, 0, bytes.length);
+    }
+
+    public static byte[] duplicate(byte[] bytes, int offset, int len) {
+        byte[] dup = new byte[len];
+        System.arraycopy(bytes, offset, dup, 0, len);
+        return dup;
+    }
+
+    public static void xor(byte[] input, int offset, byte[] output) {
+        int a, b;
+        for (int i = 0; i < output.length / 4; ++i) {
+            a = BytesUtil.bytes2int(input, offset + i * 4, true);
+            b = BytesUtil.bytes2int(output, i * 4, true);
+            b = a ^ b;
+            BytesUtil.int2bytes(b, output, i * 4, true);
+        }
+    }
+
+    public static void xor(byte[] a, byte[] b, byte[] output) {
+        int av, bv, v;
+        for (int i = 0; i < a.length / 4; ++i) {
+            av = BytesUtil.bytes2int(a, i * 4, true);
+            bv = BytesUtil.bytes2int(b, i * 4, true);
+            v = av ^ bv;
+            BytesUtil.int2bytes(v, output, i * 4, true);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Camellia.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Camellia.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Camellia.java
new file mode 100644
index 0000000..3e96c53
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Camellia.java
@@ -0,0 +1,250 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+/**
+ * Camellia - based on RFC 3713, about half the size of CamelliaEngine.
+ *
+ * This is based on CamelliaEngine.java from bouncycastle library.
+ */
+
+public class Camellia {
+    private static final int BLOCK_SIZE = 16;
+    private int[] state = new int[4]; // for encryption and decryption
+
+    private CamelliaKey camKey;
+
+    public void setKey(boolean forEncryption, byte[] key) {
+        camKey = new CamelliaKey(key, forEncryption);
+    }
+
+    private void process128Block(byte[] in, int inOff,
+                                byte[] out, int outOff) {
+        for (int i = 0; i < 4; i++) {
+            state[i] = BytesUtil.bytes2int(in, inOff + (i * 4), true);
+            state[i] ^= camKey.kw[i];
+        }
+
+        camKey.f2(state, camKey.subkey, 0);
+        camKey.f2(state, camKey.subkey, 4);
+        camKey.f2(state, camKey.subkey, 8);
+        camKey.fls(state, camKey.ke, 0);
+        camKey.f2(state, camKey.subkey, 12);
+        camKey.f2(state, camKey.subkey, 16);
+        camKey.f2(state, camKey.subkey, 20);
+        camKey.fls(state, camKey.ke, 4);
+        camKey.f2(state, camKey.subkey, 24);
+        camKey.f2(state, camKey.subkey, 28);
+        camKey.f2(state, camKey.subkey, 32);
+
+        state[2] ^= camKey.kw[4];
+        state[3] ^= camKey.kw[5];
+        state[0] ^= camKey.kw[6];
+        state[1] ^= camKey.kw[7];
+
+        BytesUtil.int2bytes(state[2], out, outOff, true);
+        BytesUtil.int2bytes(state[3], out, outOff + 4, true);
+        BytesUtil.int2bytes(state[0], out, outOff + 8, true);
+        BytesUtil.int2bytes(state[1], out, outOff + 12, true);
+    }
+
+    private void processBlockLargerBlock(byte[] in, int inOff,
+                                        byte[] out, int outOff) {
+        for (int i = 0; i < 4; i++) {
+            state[i] = BytesUtil.bytes2int(in, inOff + (i * 4), true);
+            state[i] ^= camKey.kw[i];
+        }
+
+        camKey.f2(state, camKey.subkey, 0);
+        camKey.f2(state, camKey.subkey, 4);
+        camKey.f2(state, camKey.subkey, 8);
+        camKey.fls(state, camKey.ke, 0);
+        camKey.f2(state, camKey.subkey, 12);
+        camKey.f2(state, camKey.subkey, 16);
+        camKey.f2(state, camKey.subkey, 20);
+        camKey.fls(state, camKey.ke, 4);
+        camKey.f2(state, camKey.subkey, 24);
+        camKey.f2(state, camKey.subkey, 28);
+        camKey.f2(state, camKey.subkey, 32);
+        camKey.fls(state, camKey.ke, 8);
+        camKey.f2(state, camKey.subkey, 36);
+        camKey.f2(state, camKey.subkey, 40);
+        camKey.f2(state, camKey.subkey, 44);
+
+        state[2] ^= camKey.kw[4];
+        state[3] ^= camKey.kw[5];
+        state[0] ^= camKey.kw[6];
+        state[1] ^= camKey.kw[7];
+
+        BytesUtil.int2bytes(state[2], out, outOff, true);
+        BytesUtil.int2bytes(state[3], out, outOff + 4, true);
+        BytesUtil.int2bytes(state[0], out, outOff + 8, true);
+        BytesUtil.int2bytes(state[1], out, outOff + 12, true);
+    }
+
+    public void processBlock(byte[] in, int inOff) {
+        byte[] out = new byte[BLOCK_SIZE];
+
+        if (camKey.is128()) {
+            process128Block(in, inOff, out, 0);
+        } else {
+            processBlockLargerBlock(in, inOff, out, 0);
+        }
+
+        System.arraycopy(out, 0, in, inOff, BLOCK_SIZE);
+    }
+
+    public void encrypt(byte[] data, byte[] iv) {
+        byte[] cipher = new byte[BLOCK_SIZE];
+        byte[] cipherState = new byte[BLOCK_SIZE];
+
+        int blocksNum = (data.length + BLOCK_SIZE - 1) / BLOCK_SIZE;
+        int lastBlockLen = data.length - (blocksNum - 1) * BLOCK_SIZE;
+        if (blocksNum == 1) {
+            cbcEnc(data, 0, 1, cipherState);
+            return;
+        }
+
+        if (iv != null) {
+            System.arraycopy(iv, 0, cipherState, 0, BLOCK_SIZE);
+        }
+
+        int contBlocksNum, offset = 0;
+        while (blocksNum > 2) {
+            contBlocksNum = (data.length - offset) / BLOCK_SIZE;
+            if (contBlocksNum > 0) {
+                // Encrypt a series of contiguous blocks in place if we can, but
+                // don't touch the last two blocks.
+                contBlocksNum = (contBlocksNum > blocksNum - 2) ? blocksNum - 2 : contBlocksNum;
+                cbcEnc(data, offset, contBlocksNum, cipherState);
+                offset += contBlocksNum * BLOCK_SIZE;
+                blocksNum -= contBlocksNum;
+            } else {
+                cbcEnc(data, offset, 1, cipherState);
+                offset += BLOCK_SIZE;
+                blocksNum--;
+            }
+        }
+
+        // Encrypt the last two blocks and store the results in reverse order
+        byte[] blockN2 = new byte[BLOCK_SIZE];
+        byte[] blockN1 = new byte[BLOCK_SIZE];
+
+        System.arraycopy(data, offset, blockN2, 0, BLOCK_SIZE);
+        cbcEnc(blockN2, 0, 1, cipherState);
+        System.arraycopy(data, offset + BLOCK_SIZE, blockN1, 0, lastBlockLen);
+        cbcEnc(blockN1, 0, 1, cipherState);
+
+        System.arraycopy(blockN1, 0, data, offset, BLOCK_SIZE);
+        System.arraycopy(blockN2, 0, data, offset + BLOCK_SIZE, lastBlockLen);
+
+        if (iv != null) {
+            System.arraycopy(cipherState, 0, iv, 0, BLOCK_SIZE);
+        }
+    }
+
+    public void decrypt(byte[] data, byte[] iv) {
+        byte[] cipher = new byte[BLOCK_SIZE];
+        byte[] cipherState = new byte[BLOCK_SIZE];
+
+        int blocksNum = (data.length + BLOCK_SIZE - 1) / BLOCK_SIZE;
+        int lastBlockLen = data.length - (blocksNum - 1) * BLOCK_SIZE;
+        if (blocksNum == 1) {
+            cbcDec(data, 0, 1, cipherState);
+            return;
+        }
+
+        if (iv != null) {
+            System.arraycopy(iv, 0, cipherState, 0, BLOCK_SIZE);
+        }
+
+        int contBlocksNum, offset = 0;
+        while (blocksNum > 2) {
+            contBlocksNum = (data.length - offset) / BLOCK_SIZE;
+            if (contBlocksNum > 0) {
+                // Decrypt a series of contiguous blocks in place if we can, but
+                // don't touch the last two blocks.
+                contBlocksNum = (contBlocksNum > blocksNum - 2) ? blocksNum - 2 : contBlocksNum;
+                cbcDec(data, offset, contBlocksNum, cipherState);
+                offset += contBlocksNum * BLOCK_SIZE;
+                blocksNum -= contBlocksNum;
+            } else {
+                cbcDec(data, offset, 1, cipherState);
+                offset += BLOCK_SIZE;
+                blocksNum--;
+            }
+        }
+
+        // Decrypt the last two blocks
+        byte[] blockN2 = new byte[BLOCK_SIZE];
+        byte[] blockN1 = new byte[BLOCK_SIZE];
+        System.arraycopy(data, offset, blockN2, 0, BLOCK_SIZE);
+        System.arraycopy(data, offset + BLOCK_SIZE, blockN1, 0, lastBlockLen);
+        if (iv != null) {
+            System.arraycopy(blockN2, 0, iv, 0, BLOCK_SIZE);
+        }
+
+        byte[] tmpCipherState = new byte[BLOCK_SIZE];
+        System.arraycopy(blockN1, 0, tmpCipherState, 0, BLOCK_SIZE);
+        cbcDec(blockN2, 0, 1, tmpCipherState);
+        System.arraycopy(blockN2, lastBlockLen, blockN1, lastBlockLen, BLOCK_SIZE - lastBlockLen);
+        cbcDec(blockN1, 0, 1, cipherState);
+
+        System.arraycopy(blockN1, 0, data, offset, BLOCK_SIZE);
+        System.arraycopy(blockN2, 0, data, offset + BLOCK_SIZE, lastBlockLen);
+    }
+
+    /**
+     * CBC encrypt nblocks blocks of data in place, using and updating iv.
+     */
+    public void cbcEnc(byte[] data, int offset, int blocksNum, byte[] cipherState) {
+        byte[] cipher = new byte[BLOCK_SIZE];
+        for (int i = 0; i < blocksNum; ++i) {
+            System.arraycopy(data, offset + i * BLOCK_SIZE, cipher, 0, BLOCK_SIZE);
+            BytesUtil.xor(cipherState, 0, cipher);
+            processBlock(cipher, 0);
+            System.arraycopy(cipher, 0, data, offset + i * BLOCK_SIZE, BLOCK_SIZE);
+            System.arraycopy(cipher, 0, cipherState, 0, BLOCK_SIZE);
+        }
+    }
+
+    /**
+     * CBC encrypt nblocks blocks of data in place, using and updating iv.
+     */
+    public void cbcDec(byte[] data, int offset, int blocksNum, byte[] cipherState) {
+        byte[] lastBlock = new byte[BLOCK_SIZE];
+        byte[] cipher = new byte[BLOCK_SIZE];
+
+        System.arraycopy(data, offset + (blocksNum - 1) * BLOCK_SIZE, lastBlock, 0, BLOCK_SIZE);
+        for (int i = blocksNum; i > 0; i--) {
+            System.arraycopy(data, offset + (i - 1) * BLOCK_SIZE, cipher, 0, BLOCK_SIZE);
+            processBlock(cipher, 0);
+
+            if (i == 1) {
+                BytesUtil.xor(cipherState, 0, cipher);
+            } else {
+                BytesUtil.xor(data, offset + (i - 2) * BLOCK_SIZE, cipher);
+            }
+
+            System.arraycopy(cipher, 0, data, offset + (i - 1) * BLOCK_SIZE, BLOCK_SIZE);
+        }
+        System.arraycopy(lastBlock, 0, cipherState, 0, BLOCK_SIZE);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/CamelliaKey.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/CamelliaKey.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/CamelliaKey.java
new file mode 100644
index 0000000..3a640a8
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/CamelliaKey.java
@@ -0,0 +1,433 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+/**
+ * Camellia - based on RFC 3713, about half the size of CamelliaEngine.
+ *
+ * This is based on CamelliaEngine.java from bouncycastle library.
+ */
+
+public class CamelliaKey {
+    private int keySize;
+
+    protected int[] subkey = new int[24 * 4];
+    protected int[] kw = new int[4 * 2]; // for whitening
+    protected int[] ke = new int[6 * 2]; // for FL and FL^(-1)
+
+    private static final int SIGMA[] = {
+            0xa09e667f, 0x3bcc908b,
+            0xb67ae858, 0x4caa73b2,
+            0xc6ef372f, 0xe94f82be,
+            0x54ff53a5, 0xf1d36f1c,
+            0x10e527fa, 0xde682d1d,
+            0xb05688c2, 0xb3e6c1fd
+    };
+
+    // S-box data
+    protected static final byte SBOX1[] = {
+            (byte)112, (byte)130, (byte)44, (byte)236,
+            (byte)179, (byte)39, (byte)192, (byte)229,
+            (byte)228, (byte)133, (byte)87, (byte)53,
+            (byte)234, (byte)12, (byte)174, (byte)65,
+            (byte)35, (byte)239, (byte)107, (byte)147,
+            (byte)69, (byte)25, (byte)165, (byte)33,
+            (byte)237, (byte)14, (byte)79, (byte)78,
+            (byte)29, (byte)101, (byte)146, (byte)189,
+            (byte)134, (byte)184, (byte)175, (byte)143,
+            (byte)124, (byte)235, (byte)31, (byte)206,
+            (byte)62, (byte)48, (byte)220, (byte)95,
+            (byte)94, (byte)197, (byte)11, (byte)26,
+            (byte)166, (byte)225, (byte)57, (byte)202,
+            (byte)213, (byte)71, (byte)93, (byte)61,
+            (byte)217, (byte)1, (byte)90, (byte)214,
+            (byte)81, (byte)86, (byte)108, (byte)77,
+            (byte)139, (byte)13, (byte)154, (byte)102,
+            (byte)251, (byte)204, (byte)176, (byte)45,
+            (byte)116, (byte)18, (byte)43, (byte)32,
+            (byte)240, (byte)177, (byte)132, (byte)153,
+            (byte)223, (byte)76, (byte)203, (byte)194,
+            (byte)52, (byte)126, (byte)118, (byte)5,
+            (byte)109, (byte)183, (byte)169, (byte)49,
+            (byte)209, (byte)23, (byte)4, (byte)215,
+            (byte)20, (byte)88, (byte)58, (byte)97,
+            (byte)222, (byte)27, (byte)17, (byte)28,
+            (byte)50, (byte)15, (byte)156, (byte)22,
+            (byte)83, (byte)24, (byte)242, (byte)34,
+            (byte)254, (byte)68, (byte)207, (byte)178,
+            (byte)195, (byte)181, (byte)122, (byte)145,
+            (byte)36, (byte)8, (byte)232, (byte)168,
+            (byte)96, (byte)252, (byte)105, (byte)80,
+            (byte)170, (byte)208, (byte)160, (byte)125,
+            (byte)161, (byte)137, (byte)98, (byte)151,
+            (byte)84, (byte)91, (byte)30, (byte)149,
+            (byte)224, (byte)255, (byte)100, (byte)210,
+            (byte)16, (byte)196, (byte)0, (byte)72,
+            (byte)163, (byte)247, (byte)117, (byte)219,
+            (byte)138, (byte)3, (byte)230, (byte)218,
+            (byte)9, (byte)63, (byte)221, (byte)148,
+            (byte)135, (byte)92, (byte)131, (byte)2,
+            (byte)205, (byte)74, (byte)144, (byte)51,
+            (byte)115, (byte)103, (byte)246, (byte)243,
+            (byte)157, (byte)127, (byte)191, (byte)226,
+            (byte)82, (byte)155, (byte)216, (byte)38,
+            (byte)200, (byte)55, (byte)198, (byte)59,
+            (byte)129, (byte)150, (byte)111, (byte)75,
+            (byte)19, (byte)190, (byte)99, (byte)46,
+            (byte)233, (byte)121, (byte)167, (byte)140,
+            (byte)159, (byte)110, (byte)188, (byte)142,
+            (byte)41, (byte)245, (byte)249, (byte)182,
+            (byte)47, (byte)253, (byte)180, (byte)89,
+            (byte)120, (byte)152, (byte)6, (byte)106,
+            (byte)231, (byte)70, (byte)113, (byte)186,
+            (byte)212, (byte)37, (byte)171, (byte)66,
+            (byte)136, (byte)162, (byte)141, (byte)250,
+            (byte)114, (byte)7, (byte)185, (byte)85,
+            (byte)248, (byte)238, (byte)172, (byte)10,
+            (byte)54, (byte)73, (byte)42, (byte)104,
+            (byte)60, (byte)56, (byte)241, (byte)164,
+            (byte)64, (byte)40, (byte)211, (byte)123,
+            (byte)187, (byte)201, (byte)67, (byte)193,
+            (byte)21, (byte)227, (byte)173, (byte)244,
+            (byte)119, (byte)199, (byte)128, (byte)158
+    };
+
+    public CamelliaKey(byte[] key, boolean isEncrypt) {
+        init(key, isEncrypt);
+    }
+
+    protected boolean is128() {
+        return keySize == 16;
+    }
+
+    private static int rightRotate(int x, int s) {
+        return (((x) >>> (s)) + ((x) << (32 - s)));
+    }
+
+    private static int leftRotate(int x, int s) {
+        return ((x) << (s)) + ((x) >>> (32 - s));
+    }
+
+    private static void roldq(int rot, int[] ki, int ioff,
+                              int[] ko, int ooff) {
+        ko[0 + ooff] = (ki[0 + ioff] << rot) | (ki[1 + ioff] >>> (32 - rot));
+        ko[1 + ooff] = (ki[1 + ioff] << rot) | (ki[2 + ioff] >>> (32 - rot));
+        ko[2 + ooff] = (ki[2 + ioff] << rot) | (ki[3 + ioff] >>> (32 - rot));
+        ko[3 + ooff] = (ki[3 + ioff] << rot) | (ki[0 + ioff] >>> (32 - rot));
+        ki[0 + ioff] = ko[0 + ooff];
+        ki[1 + ioff] = ko[1 + ooff];
+        ki[2 + ioff] = ko[2 + ooff];
+        ki[3 + ioff] = ko[3 + ooff];
+    }
+
+    private static void decroldq(int rot, int[] ki, int ioff,
+                                 int[] ko, int ooff) {
+        ko[2 + ooff] = (ki[0 + ioff] << rot) | (ki[1 + ioff] >>> (32 - rot));
+        ko[3 + ooff] = (ki[1 + ioff] << rot) | (ki[2 + ioff] >>> (32 - rot));
+        ko[0 + ooff] = (ki[2 + ioff] << rot) | (ki[3 + ioff] >>> (32 - rot));
+        ko[1 + ooff] = (ki[3 + ioff] << rot) | (ki[0 + ioff] >>> (32 - rot));
+        ki[0 + ioff] = ko[2 + ooff];
+        ki[1 + ioff] = ko[3 + ooff];
+        ki[2 + ioff] = ko[0 + ooff];
+        ki[3 + ioff] = ko[1 + ooff];
+    }
+
+    private static void roldqo32(int rot, int[] ki, int ioff,
+                                 int[] ko, int ooff)
+    {
+        ko[0 + ooff] = (ki[1 + ioff] << (rot - 32)) | (ki[2 + ioff] >>> (64 - rot));
+        ko[1 + ooff] = (ki[2 + ioff] << (rot - 32)) | (ki[3 + ioff] >>> (64 - rot));
+        ko[2 + ooff] = (ki[3 + ioff] << (rot - 32)) | (ki[0 + ioff] >>> (64 - rot));
+        ko[3 + ooff] = (ki[0 + ioff] << (rot - 32)) | (ki[1 + ioff] >>> (64 - rot));
+        ki[0 + ioff] = ko[0 + ooff];
+        ki[1 + ioff] = ko[1 + ooff];
+        ki[2 + ioff] = ko[2 + ooff];
+        ki[3 + ioff] = ko[3 + ooff];
+    }
+
+    private static void decroldqo32(int rot, int[] ki, int ioff,
+                                    int[] ko, int ooff) {
+        ko[2 + ooff] = (ki[1 + ioff] << (rot - 32)) | (ki[2 + ioff] >>> (64 - rot));
+        ko[3 + ooff] = (ki[2 + ioff] << (rot - 32)) | (ki[3 + ioff] >>> (64 - rot));
+        ko[0 + ooff] = (ki[3 + ioff] << (rot - 32)) | (ki[0 + ioff] >>> (64 - rot));
+        ko[1 + ooff] = (ki[0 + ioff] << (rot - 32)) | (ki[1 + ioff] >>> (64 - rot));
+        ki[0 + ioff] = ko[2 + ooff];
+        ki[1 + ioff] = ko[3 + ooff];
+        ki[2 + ioff] = ko[0 + ooff];
+        ki[3 + ioff] = ko[1 + ooff];
+    }
+
+    private byte lRot8(byte v, int rot)
+    {
+        return (byte)((v << rot) | ((v & 0xff) >>> (8 - rot)));
+    }
+
+    private int sbox2(int x)
+    {
+        return (lRot8(SBOX1[x], 1) & 0xff);
+    }
+
+    private int sbox3(int x)
+    {
+        return (lRot8(SBOX1[x], 7) & 0xff);
+    }
+
+    private int sbox4(int x)
+    {
+        return (SBOX1[((int)lRot8((byte)x, 1) & 0xff)] & 0xff);
+    }
+
+    protected void fls(int[] s, int[] fkey, int keyoff) {
+        s[1] ^= leftRotate(s[0] & fkey[0 + keyoff], 1);
+        s[0] ^= fkey[1 + keyoff] | s[1];
+
+        s[2] ^= fkey[3 + keyoff] | s[3];
+        s[3] ^= leftRotate(fkey[2 + keyoff] & s[2], 1);
+    }
+
+    protected void f2(int[] s, int[] skey, int keyoff) {
+        int t1, t2, u, v;
+
+        t1 = s[0] ^ skey[0 + keyoff];
+        u = sbox4((t1 & 0xff));
+        u |= (sbox3(((t1 >>> 8) & 0xff)) << 8);
+        u |= (sbox2(((t1 >>> 16) & 0xff)) << 16);
+        u |= ((int)(SBOX1[((t1 >>> 24) & 0xff)] & 0xff) << 24);
+
+        t2 = s[1] ^ skey[1 + keyoff];
+        v = (int)SBOX1[(t2 & 0xff)] & 0xff;
+        v |= (sbox4(((t2 >>> 8) & 0xff)) << 8);
+        v |= (sbox3(((t2 >>> 16) & 0xff)) << 16);
+        v |= (sbox2(((t2 >>> 24) & 0xff)) << 24);
+
+        v = leftRotate(v, 8);
+        u ^= v;
+        v = leftRotate(v, 8) ^ u;
+        u = rightRotate(u, 8) ^ v;
+        s[2] ^= leftRotate(v, 16) ^ u;
+        s[3] ^= leftRotate(u, 8);
+
+        t1 = s[2] ^ skey[2 + keyoff];
+        u = sbox4((t1 & 0xff));
+        u |= sbox3(((t1 >>> 8) & 0xff)) << 8;
+        u |= sbox2(((t1 >>> 16) & 0xff)) << 16;
+        u |= ((int)SBOX1[((t1 >>> 24) & 0xff)] & 0xff) << 24;
+
+        t2 = s[3] ^ skey[3 + keyoff];
+        v = ((int)SBOX1[(t2 & 0xff)] & 0xff);
+        v |= sbox4(((t2 >>> 8) & 0xff)) << 8;
+        v |= sbox3(((t2 >>> 16) & 0xff)) << 16;
+        v |= sbox2(((t2 >>> 24) & 0xff)) << 24;
+
+        v = leftRotate(v, 8);
+        u ^= v;
+        v = leftRotate(v, 8) ^ u;
+        u = rightRotate(u, 8) ^ v;
+        s[0] ^= leftRotate(v, 16) ^ u;
+        s[1] ^= leftRotate(u, 8);
+    }
+
+    private void init(byte[] key, boolean isEncrypt) {
+        keySize = key.length;
+
+        int[] k = new int[8];
+        int[] ka = new int[4];
+        int[] kb = new int[4];
+        int[] t = new int[4];
+
+        switch (key.length) {
+            case 16:
+                k[0] = BytesUtil.bytes2int(key, 0, true);
+                k[1] = BytesUtil.bytes2int(key, 4, true);
+                k[2] = BytesUtil.bytes2int(key, 8, true);
+                k[3] = BytesUtil.bytes2int(key, 12, true);
+                k[4] = k[5] = k[6] = k[7] = 0;
+                break;
+            case 24:
+                k[0] = BytesUtil.bytes2int(key, 0, true);
+                k[1] = BytesUtil.bytes2int(key, 4, true);
+                k[2] = BytesUtil.bytes2int(key, 8, true);
+                k[3] = BytesUtil.bytes2int(key, 12, true);
+                k[4] = BytesUtil.bytes2int(key, 16, true);
+                k[5] = BytesUtil.bytes2int(key, 20, true);
+                k[6] = ~k[4];
+                k[7] = ~k[5];
+                break;
+            case 32:
+                k[0] = BytesUtil.bytes2int(key, 0, true);
+                k[1] = BytesUtil.bytes2int(key, 4, true);
+                k[2] = BytesUtil.bytes2int(key, 8, true);
+                k[3] = BytesUtil.bytes2int(key, 12, true);
+                k[4] = BytesUtil.bytes2int(key, 16, true);
+                k[5] = BytesUtil.bytes2int(key, 20, true);
+                k[6] = BytesUtil.bytes2int(key, 24, true);
+                k[7] = BytesUtil.bytes2int(key, 28, true);
+                break;
+            default:
+                throw new
+                        IllegalArgumentException("Invalid key size, only support 16/24/32 bytes");
+        }
+
+        for (int i = 0; i < 4; i++) {
+            ka[i] = k[i] ^ k[i + 4];
+        }
+
+        /* compute KA */
+        f2(ka, SIGMA, 0);
+        for (int i = 0; i < 4; i++) {
+            ka[i] ^= k[i];
+        }
+        f2(ka, SIGMA, 4);
+
+        if (keySize == 16) {
+            if (isEncrypt) {
+                /* KL dependant keys */
+                kw[0] = k[0];
+                kw[1] = k[1];
+                kw[2] = k[2];
+                kw[3] = k[3];
+                roldq(15, k, 0, subkey, 4);
+                roldq(30, k, 0, subkey, 12);
+                roldq(15, k, 0, t, 0);
+                subkey[18] = t[2];
+                subkey[19] = t[3];
+                roldq(17, k, 0, ke, 4);
+                roldq(17, k, 0, subkey, 24);
+                roldq(17, k, 0, subkey, 32);
+                /* KA dependant keys */
+                subkey[0] = ka[0];
+                subkey[1] = ka[1];
+                subkey[2] = ka[2];
+                subkey[3] = ka[3];
+                roldq(15, ka, 0, subkey, 8);
+                roldq(15, ka, 0, ke, 0);
+                roldq(15, ka, 0, t, 0);
+                subkey[16] = t[0];
+                subkey[17] = t[1];
+                roldq(15, ka, 0, subkey, 20);
+                roldqo32(34, ka, 0, subkey, 28);
+                roldq(17, ka, 0, kw, 4);
+
+            } else { // decryption
+                /* KL dependant keys */
+                kw[4] = k[0];
+                kw[5] = k[1];
+                kw[6] = k[2];
+                kw[7] = k[3];
+                decroldq(15, k, 0, subkey, 28);
+                decroldq(30, k, 0, subkey, 20);
+                decroldq(15, k, 0, t, 0);
+                subkey[16] = t[0];
+                subkey[17] = t[1];
+                decroldq(17, k, 0, ke, 0);
+                decroldq(17, k, 0, subkey, 8);
+                decroldq(17, k, 0, subkey, 0);
+                /* KA dependant keys */
+                subkey[34] = ka[0];
+                subkey[35] = ka[1];
+                subkey[32] = ka[2];
+                subkey[33] = ka[3];
+                decroldq(15, ka, 0, subkey, 24);
+                decroldq(15, ka, 0, ke, 4);
+                decroldq(15, ka, 0, t, 0);
+                subkey[18] = t[2];
+                subkey[19] = t[3];
+                decroldq(15, ka, 0, subkey, 12);
+                decroldqo32(34, ka, 0, subkey, 4);
+                roldq(17, ka, 0, kw, 0);
+            }
+        } else { // 192bit or 256bit
+            /* compute KB */
+            for (int i = 0; i < 4; i++) {
+                kb[i] = ka[i] ^ k[i + 4];
+            }
+            f2(kb, SIGMA, 8);
+
+            if (isEncrypt) {
+                /* KL dependant keys */
+                kw[0] = k[0];
+                kw[1] = k[1];
+                kw[2] = k[2];
+                kw[3] = k[3];
+                roldqo32(45, k, 0, subkey, 16);
+                roldq(15, k, 0, ke, 4);
+                roldq(17, k, 0, subkey, 32);
+                roldqo32(34, k, 0, subkey, 44);
+                /* KR dependant keys */
+                roldq(15, k, 4, subkey, 4);
+                roldq(15, k, 4, ke, 0);
+                roldq(30, k, 4, subkey, 24);
+                roldqo32(34, k, 4, subkey, 36);
+                /* KA dependant keys */
+                roldq(15, ka, 0, subkey, 8);
+                roldq(30, ka, 0, subkey, 20);
+                /* 32bit rotation */
+                ke[8] = ka[1];
+                ke[9] = ka[2];
+                ke[10] = ka[3];
+                ke[11] = ka[0];
+                roldqo32(49, ka, 0, subkey, 40);
+
+                /* KB dependant keys */
+                subkey[0] = kb[0];
+                subkey[1] = kb[1];
+                subkey[2] = kb[2];
+                subkey[3] = kb[3];
+                roldq(30, kb, 0, subkey, 12);
+                roldq(30, kb, 0, subkey, 28);
+                roldqo32(51, kb, 0, kw, 4);
+
+            } else { // decryption
+                /* KL dependant keys */
+                kw[4] = k[0];
+                kw[5] = k[1];
+                kw[6] = k[2];
+                kw[7] = k[3];
+                decroldqo32(45, k, 0, subkey, 28);
+                decroldq(15, k, 0, ke, 4);
+                decroldq(17, k, 0, subkey, 12);
+                decroldqo32(34, k, 0, subkey, 0);
+                /* KR dependant keys */
+                decroldq(15, k, 4, subkey, 40);
+                decroldq(15, k, 4, ke, 8);
+                decroldq(30, k, 4, subkey, 20);
+                decroldqo32(34, k, 4, subkey, 8);
+                /* KA dependant keys */
+                decroldq(15, ka, 0, subkey, 36);
+                decroldq(30, ka, 0, subkey, 24);
+                /* 32bit rotation */
+                ke[2] = ka[1];
+                ke[3] = ka[2];
+                ke[0] = ka[3];
+                ke[1] = ka[0];
+                decroldqo32(49, ka, 0, subkey, 4);
+
+                /* KB dependant keys */
+                subkey[46] = kb[0];
+                subkey[47] = kb[1];
+                subkey[44] = kb[2];
+                subkey[45] = kb[3];
+                decroldq(30, kb, 0, subkey, 32);
+                decroldq(30, kb, 0, subkey, 16);
+                roldqo32(51, kb, 0, kw, 0);
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Cmac.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Cmac.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Cmac.java
new file mode 100644
index 0000000..36397f1
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Cmac.java
@@ -0,0 +1,178 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+import org.apache.kerby.kerberos.kerb.crypto.enc.EncryptProvider;
+import org.apache.kerby.kerberos.kerb.KrbException;
+
+import java.util.Arrays;
+
+/**
+ * Based on MIT krb5 cmac.c
+ */
+public class Cmac {
+
+    private static byte[] constRb = {
+            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0x87
+    };
+
+    public static byte[] cmac(EncryptProvider encProvider, byte[] key,
+                       byte[] data, int outputSize) throws KrbException {
+        return cmac(encProvider, key, data, 0, data.length, outputSize);
+    }
+
+    public static byte[] cmac(EncryptProvider encProvider, byte[] key, byte[] data,
+                       int start, int len, int outputSize) throws KrbException {
+        byte[] hash = Cmac.cmac(encProvider, key, data, start, len);
+        if (hash.length > outputSize) {
+            byte[] output = new byte[outputSize];
+            System.arraycopy(hash, 0, output, 0, outputSize);
+            return output;
+        } else {
+            return hash;
+        }
+    }
+
+    public static byte[] cmac(EncryptProvider encProvider,
+                              byte[] key, byte[] data) throws KrbException {
+        return cmac(encProvider, key, data, 0, data.length);
+    }
+
+    public static byte[] cmac(EncryptProvider encProvider,
+                              byte[] key, byte[] data, int start, int len) throws KrbException {
+
+        int blockSize = encProvider.blockSize();
+
+        byte[] Y = new byte[blockSize];
+        byte[] mLast = new byte[blockSize];
+        byte[] padded = new byte[blockSize];
+        byte[] K1 = new byte[blockSize];
+        byte[] K2 = new byte[blockSize];
+
+        // step 1
+        makeSubkey(encProvider, key, K1, K2);
+
+        // step 2
+        int n = (len + blockSize - 1) / blockSize;
+
+        // step 3
+        boolean lastIsComplete;
+        if (n == 0) {
+            n = 1;
+            lastIsComplete = false;
+        } else {
+            lastIsComplete = ((len % blockSize) == 0);
+        }
+
+        // Step 6 (all but last block)
+        byte[] cipherState = new byte[blockSize];
+        byte[] cipher = new byte[blockSize];
+        for (int i = 0; i < n - 1; i++) {
+            System.arraycopy(data, i * blockSize, cipher, 0, blockSize);
+            encryptBlock(encProvider, key, cipherState, cipher);
+            System.arraycopy(cipher, 0, cipherState, 0, blockSize);
+        }
+
+        // step 5
+        System.arraycopy(cipher, 0, Y, 0, blockSize);
+
+        // step 4
+        int lastPos = (n - 1) * blockSize;
+        int lastLen = lastIsComplete ? blockSize : len % blockSize;
+        byte[] lastBlock = new byte[lastLen];
+        System.arraycopy(data, lastPos, lastBlock, 0, lastLen);
+        if (lastIsComplete) {
+            BytesUtil.xor(lastBlock, K1, mLast);
+        } else {
+            padding(lastBlock, padded);
+            BytesUtil.xor(padded, K2, mLast);
+        }
+
+        // Step 6 (last block)
+        encryptBlock(encProvider, key, cipherState, mLast);
+
+        return mLast;
+    }
+
+    // Generate subkeys K1 and K2 as described in RFC 4493 figure 2.2.
+    private static void makeSubkey(EncryptProvider encProvider,
+                              byte[] key, byte[] K1, byte[] K2) throws KrbException {
+
+        // L := encrypt(K, const_Zero)
+        byte[] L = new byte[K1.length];
+        Arrays.fill(L, (byte) 0);
+        encryptBlock(encProvider, key, null, L);
+
+        // K1 := (MSB(L) == 0) ? L << 1 : (L << 1) XOR const_Rb
+        if ((L[0] & 0x80) == 0) {
+            leftShiftByOne(L, K1);
+        } else {
+            byte[] tmp = new byte[K1.length];
+            leftShiftByOne(L, tmp);
+            BytesUtil.xor(tmp, constRb, K1);
+        }
+
+        // K2 := (MSB(K1) == 0) ? K1 << 1 : (K1 << 1) XOR const_Rb
+        if ((K1[0] & 0x80) == 0) {
+            leftShiftByOne(K1, K2);
+        } else {
+            byte[] tmp = new byte[K1.length];
+            leftShiftByOne(K1, tmp);
+            BytesUtil.xor(tmp, constRb, K2);
+        }
+    }
+
+    private static void encryptBlock(EncryptProvider encProvider,
+                                     byte[] key, byte[] cipherState, byte[] block) throws KrbException {
+        if (cipherState == null) {
+            cipherState = new byte[encProvider.blockSize()];
+        }
+        if (encProvider.supportCbcMac()) {
+            encProvider.cbcMac(key, cipherState, block);
+        } else {
+            encProvider.encrypt(key, cipherState, block);
+        }
+    }
+
+    private static void leftShiftByOne(byte[] input, byte[] output) {
+        byte overflow = 0;
+
+        for (int i = input.length - 1; i >= 0; i--) {
+            output[i] = (byte) (input[i] << 1);
+            output[i] |= overflow;
+            overflow = (byte) ((input[i] & 0x80) != 0 ? 1 : 0);
+        }
+    }
+
+    // Padding out data with a 1 bit followed by 0 bits, placing the result in pad
+    private static void padding(byte[] data, byte[] padded) {
+        int len = data.length;
+
+        // original last block
+        System.arraycopy(data, 0, padded, 0, len);
+
+        padded[len] = (byte) 0x80;
+
+        for (int i = len + 1; i < padded.length; i++) {
+            padded[i] = 0x00;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Confounder.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Confounder.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Confounder.java
new file mode 100644
index 0000000..b776f6a
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Confounder.java
@@ -0,0 +1,33 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+import java.security.SecureRandom;
+
+public final class Confounder {
+
+    private static SecureRandom instance = new SecureRandom();
+
+    public static byte[] makeBytes(int size) {
+        byte[] data = new byte[size];
+        instance.nextBytes(data);
+        return data;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Crc32.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Crc32.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Crc32.java
new file mode 100644
index 0000000..5807429
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Crc32.java
@@ -0,0 +1,78 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+/**
+ * Reference: http://introcs.cs.princeton.edu/java/51data/CRC32.java
+ */
+public class Crc32 {
+
+    private static long[] table = {
+            0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+            0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+            0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+            0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+            0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+            0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+            0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+            0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+            0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+            0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+            0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
+            0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+            0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
+            0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
+            0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+            0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
+            0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
+            0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+            0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
+            0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+            0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+            0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
+            0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
+            0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+            0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+            0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
+            0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+            0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
+            0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
+            0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+            0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
+            0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
+    };
+
+    public static byte[] crc(byte[] data, int start, int size) {
+        long c = crc(0, data, start, size);
+        return BytesUtil.int2bytes((int) c, false);
+    }
+
+    public static long crc(long initial, byte[] data, int start, int len) {
+        long c = initial;
+
+        int idx;
+        for (int i = 0; i < len; i++) {
+            idx = (int) ((data[start + i] ^ c) & 0xff);
+            c = ((c & 0xffffffffL) >>> 8) ^ table[idx]; // why?
+        }
+
+        return c;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f504a173/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Des.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Des.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Des.java
new file mode 100644
index 0000000..f7997fa
--- /dev/null
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Des.java
@@ -0,0 +1,84 @@
+/**
+ *  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.kerby.kerberos.kerb.crypto.util;
+
+/**
+ * Ref. MIT krb5 weak_key.c
+ */
+public class Des {
+
+    /*
+     * The following are the weak DES keys:
+     */
+    static byte[][] WEAK_KEYS = {
+    /* weak keys */
+            {(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01,(byte) 0x01},
+            {(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe,(byte) 0xfe},
+            {(byte) 0x1f,(byte) 0x1f,(byte) 0x1f,(byte) 0x1f,(byte) 0x0e,(byte) 0x0e,(byte) 0x0e,(byte) 0x0e},
+            {(byte) 0xe0,(byte) 0xe0,(byte) 0xe0,(byte) 0xe0,(byte) 0xf1,(byte) 0xf1,(byte) 0xf1,(byte) 0xf1},
+
+    /* semi-weak */
+            {(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe},
+            {(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01,(byte) 0xfe,(byte) 0x01},
+
+            {(byte) 0x1f,(byte) 0xe0,(byte) 0x1f,(byte) 0xe0,(byte) 0x0e,(byte) 0xf1,(byte) 0x0e,(byte) 0xf1},
+            {(byte) 0xe0,(byte) 0x1f,(byte) 0xe0,(byte) 0x1f,(byte) 0xf1,(byte) 0x0e,(byte) 0xf1,(byte) 0x0e},
+
+            {(byte) 0x01,(byte) 0xe0,(byte) 0x01,(byte) 0xe0,(byte) 0x01,(byte) 0xf1,(byte) 0x01,(byte) 0xf1},
+            {(byte) 0xe0,(byte) 0x01,(byte) 0xe0,(byte) 0x01,(byte) 0xf1,(byte) 0x01,(byte) 0xf1,(byte) 0x01},
+
+            {(byte) 0x1f,(byte) 0xfe,(byte) 0x1f,(byte) 0xfe,(byte) 0x0e,(byte) 0xfe,(byte) 0x0e,(byte) 0xfe},
+            {(byte) 0xfe,(byte) 0x1f,(byte) 0xfe,(byte) 0x1f,(byte) 0xfe,(byte) 0x0e,(byte) 0xfe,(byte) 0x0e},
+
+            {(byte) 0x01,(byte) 0x1f,(byte) 0x01,(byte) 0x1f,(byte) 0x01,(byte) 0x0e,(byte) 0x01,(byte) 0x0e},
+            {(byte) 0x1f,(byte) 0x01,(byte) 0x1f,(byte) 0x01,(byte) 0x0e,(byte) 0x01,(byte) 0x0e,(byte) 0x01},
+
+            {(byte) 0xe0,(byte) 0xfe,(byte) 0xe0,(byte) 0xfe,(byte) 0xf1,(byte) 0xfe,(byte) 0xf1,(byte) 0xfe},
+            {(byte) 0xfe,(byte) 0xe0,(byte) 0xfe,(byte) 0xe0,(byte) 0xfe,(byte) 0xf1,(byte) 0xfe,(byte) 0xf1}
+    };
+
+    public static boolean isWeakKey(byte[] key, int offset, int len) {
+        boolean match;
+        for (byte[] weakKey : WEAK_KEYS) {
+            match = true;
+            if (weakKey.length == len) {
+                for (int i = 0; i < len; i++) {
+                    if (weakKey[i] != key[i]) {
+                        match = false;
+                        break;
+                    }
+                }
+            }
+            if (match) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * MIT krb5 FIXUP(k) in s2k_des.c
+     */
+    public static void fixKey(byte[] key, int offset, int len) {
+        if (isWeakKey(key, offset, len)) {
+            key[offset + 7] ^= (byte) 0xf0;
+        }
+    }
+}


[23/30] directory-kerberos git commit: More code refactoring

Posted by dr...@apache.org.
More code refactoring


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

Branch: refs/heads/installation
Commit: f2ccbc325dbc4c94c4741835d2a71c4623815a67
Parents: cacd283
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Thu Feb 5 11:28:41 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Thu Feb 5 11:28:41 2015 +0000

----------------------------------------------------------------------
 .../java/org/apache/kerby/asn1/Asn1Dump.java    |  6 +++--
 .../org/apache/kerby/asn1/Asn1OutputBuffer.java |  2 +-
 .../kerby/asn1/type/AbstractAsn1Type.java       |  4 ++-
 .../org/apache/kerby/asn1/type/Asn1Any.java     |  6 ++---
 .../apache/kerby/asn1/type/Asn1BmpString.java   |  6 ++---
 .../org/apache/kerby/asn1/type/Asn1Choice.java  | 22 ++++++++---------
 .../kerby/asn1/type/Asn1CollectionType.java     | 26 +++++++++++---------
 .../kerby/asn1/type/Asn1GeneralizedTime.java    |  4 ++-
 .../org/apache/kerby/asn1/type/Asn1Item.java    | 16 +++++++-----
 .../kerby/asn1/type/Asn1ObjectIdentifier.java   |  4 ++-
 .../org/apache/kerby/asn1/type/Asn1Tagging.java | 12 ++++-----
 .../org/apache/kerby/asn1/type/Asn1UtcTime.java |  3 +--
 .../apache/kerby/asn1/TestAsn1Collection.java   |  4 +--
 .../test/java/org/apache/kerby/asn1/Util.java   |  8 +++---
 14 files changed, 68 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
index cfd9c5d..b9199fe 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
@@ -39,7 +39,9 @@ public class Asn1Dump {
         Asn1Type value;
         while (true) {
             value = buffer.read();
-            if (value == null) break;
+            if (value == null) {
+                break;
+            }
             dump(value, sb);
         }
 
@@ -54,7 +56,7 @@ public class Asn1Dump {
 
     private static void dump(Asn1Type value, StringBuilder buffer) {
         if (value instanceof Asn1Simple) {
-            buffer.append(((Asn1Simple) value).getValue().toString());
+            buffer.append(((Asn1Simple<?>) value).getValue().toString());
         } else if (value instanceof Asn1Item) {
             dump((Asn1Item) value, buffer);
         }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1OutputBuffer.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1OutputBuffer.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1OutputBuffer.java
index 42f8ead..76e4d2b 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1OutputBuffer.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1OutputBuffer.java
@@ -56,7 +56,7 @@ public class Asn1OutputBuffer {
         int allLen = 0;
         for (Asn1Type item : objects) {
             if (item != null) {
-                allLen += ((AbstractAsn1Type) item).encodingLength();
+                allLen += ((AbstractAsn1Type<?>) item).encodingLength();
             }
         }
         return allLen;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
index 9605646..a00591d 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
@@ -155,7 +155,9 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
     public int tagFlags() {
         if (tagFlags == -1) {
             int flags = tagClass.getValue();
-            if (isConstructed()) flags |= EncodingOption.CONSTRUCTED_FLAG;
+            if (isConstructed()) {
+                flags |= EncodingOption.CONSTRUCTED_FLAG;
+            }
             return flags;
         }
         return tagFlags;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Any.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Any.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Any.java
index 1474851..e73315d 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Any.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Any.java
@@ -32,16 +32,16 @@ public class Asn1Any extends AbstractAsn1Type<Asn1Type> {
 
     @Override
     protected int encodingBodyLength() {
-        return ((AbstractAsn1Type) getValue()).encodingBodyLength();
+        return ((AbstractAsn1Type<?>) getValue()).encodingBodyLength();
     }
 
     @Override
     protected void encodeBody(ByteBuffer buffer) {
-        ((AbstractAsn1Type) getValue()).encodeBody(buffer);
+        ((AbstractAsn1Type<?>) getValue()).encodeBody(buffer);
     }
 
     @Override
     protected void decodeBody(LimitedByteBuffer content) throws IOException {
-        ((AbstractAsn1Type) getValue()).decodeBody(content);
+        ((AbstractAsn1Type<?>) getValue()).decodeBody(content);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java
index 125b9a2..aa59ed4 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java
@@ -44,9 +44,9 @@ public class Asn1BmpString extends Asn1Simple<String>
         String strValue = getValue();
         int len = strValue.length();
         byte[] bytes = new byte[len * 2];
-        char c;
+        
         for (int i = 0; i != len; i++) {
-            c = strValue.charAt(i);
+            char c = strValue.charAt(i);
             bytes[2 * i] = (byte)(c >> 8);
             bytes[2 * i + 1] = (byte)c;
         }
@@ -55,7 +55,7 @@ public class Asn1BmpString extends Asn1Simple<String>
 
     protected void toValue() throws IOException {
         byte[] bytes = getBytes();
-        char[]  chars = new char[bytes.length / 2];
+        char[] chars = new char[bytes.length / 2];
         for (int i = 0; i != chars.length; i++) {
             chars[i] = (char)((bytes[2 * i] << 8) | (bytes[2 * i + 1] & 0xff));
         }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java
index cb439b2..69b1fd6 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java
@@ -44,13 +44,11 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
 
     @Override
     protected int encodingBodyLength() {
-        AbstractAsn1Type field;
-        TaggingOption taggingOption;
         for (int i = 0; i < fields.length; ++i) {
-            field = (AbstractAsn1Type) fields[i];
+            AbstractAsn1Type<?> field = (AbstractAsn1Type<?>) fields[i];
             if (field != null) {
                 if (fieldInfos[i].isTagged()) {
-                    taggingOption = fieldInfos[i].getTaggingOption();
+                    TaggingOption taggingOption = fieldInfos[i].getTaggingOption();
                     return field.taggedEncodingLength(taggingOption);
                 } else {
                     return field.encodingLength();
@@ -62,13 +60,11 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
 
     @Override
     protected void encodeBody(ByteBuffer buffer) {
-        Asn1Type field;
-        TaggingOption taggingOption;
         for (int i = 0; i < fields.length; ++i) {
-            field = fields[i];
+            Asn1Type field = fields[i];
             if (field != null) {
                 if (fieldInfos[i].isTagged()) {
-                    taggingOption = fieldInfos[i].getTaggingOption();
+                    TaggingOption taggingOption = fieldInfos[i].getTaggingOption();
                     field.taggedEncode(buffer, taggingOption);
                 } else {
                     field.encode(buffer);
@@ -105,7 +101,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
         }
 
         if (! item.isFullyDecoded()) {
-            AbstractAsn1Type fieldValue = (AbstractAsn1Type) fields[foundPos];
+            AbstractAsn1Type<?> fieldValue = (AbstractAsn1Type<?>) fields[foundPos];
             if (item.isContextSpecific()) {
                 item.decodeValueWith(fieldValue, fieldInfos[foundPos].getTaggingOption());
             } else {
@@ -139,7 +135,9 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
 
     protected String getFieldAsString(int index) {
         Asn1Type value = fields[index];
-        if (value == null) return null;
+        if (value == null) {
+            return null;
+        }
 
         if (value instanceof Asn1String) {
             return ((Asn1String) value).getValue();
@@ -150,7 +148,9 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
 
     protected byte[] getFieldAsOctets(int index) {
         Asn1OctetString value = getFieldAs(index, Asn1OctetString.class);
-        if (value != null) return value.getValue();
+        if (value != null) {
+            return value.getValue();
+        }
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
index 28d8a15..4187209 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
@@ -50,13 +50,11 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
     @Override
     protected int encodingBodyLength() {
         int allLen = 0;
-        AbstractAsn1Type field;
-        TaggingOption taggingOption;
         for (int i = 0; i < fields.length; ++i) {
-            field = (AbstractAsn1Type) fields[i];
+            AbstractAsn1Type<?> field = (AbstractAsn1Type<?>) fields[i];
             if (field != null) {
                 if (fieldInfos[i].isTagged()) {
-                    taggingOption = fieldInfos[i].getTaggingOption();
+                    TaggingOption taggingOption = fieldInfos[i].getTaggingOption();
                     allLen += field.taggedEncodingLength(taggingOption);
                 } else {
                     allLen += field.encodingLength();
@@ -68,13 +66,11 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
 
     @Override
     protected void encodeBody(ByteBuffer buffer) {
-        Asn1Type field;
-        TaggingOption taggingOption;
         for (int i = 0; i < fields.length; ++i) {
-            field = fields[i];
+            Asn1Type field = fields[i];
             if (field != null) {
                 if (fieldInfos[i].isTagged()) {
-                    taggingOption = fieldInfos[i].getTaggingOption();
+                    TaggingOption taggingOption = fieldInfos[i].getTaggingOption();
                     field.taggedEncode(buffer, taggingOption);
                 } else {
                     field.encode(buffer);
@@ -111,7 +107,7 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
             }
 
             if (! item.isFullyDecoded()) {
-                AbstractAsn1Type fieldValue = (AbstractAsn1Type) fields[foundPos];
+                AbstractAsn1Type<?> fieldValue = (AbstractAsn1Type<?>) fields[foundPos];
                 if (item.isContextSpecific()) {
                     item.decodeValueWith(fieldValue, fieldInfos[foundPos].getTaggingOption());
                 } else {
@@ -137,7 +133,9 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
 
     protected <T extends Asn1Type> T getFieldAs(int index, Class<T> t) {
         Asn1Type value = fields[index];
-        if (value == null) return null;
+        if (value == null) {
+            return null;
+        }
         return (T) value;
     }
 
@@ -147,7 +145,9 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
 
     protected String getFieldAsString(int index) {
         Asn1Type value = fields[index];
-        if (value == null) return null;
+        if (value == null) {
+            return null;
+        }
 
         if (value instanceof Asn1String) {
             return ((Asn1String) value).getValue();
@@ -158,7 +158,9 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
 
     protected byte[] getFieldAsOctets(int index) {
         Asn1OctetString value = getFieldAs(index, Asn1OctetString.class);
-        if (value != null) return value.getValue();
+        if (value != null) {
+            return value.getValue();
+        }
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java
index 4346f65..020a7b4 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java
@@ -105,7 +105,9 @@ public class Asn1GeneralizedTime extends Asn1Simple<Date> {
                 chr = dateStr.charAt(i);
                 if ('0' <= chr && chr <= '9') {
                     millDigits[j++] = chr;
-                } else break;
+                } else {
+                    break;
+                }
             }
         }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
index a18d135..1249c20 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
@@ -58,7 +58,7 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type>
     @Override
     protected int encodingBodyLength() {
         if (getValue() != null) {
-            return ((AbstractAsn1Type) getValue()).encodingBodyLength();
+            return ((AbstractAsn1Type<?>) getValue()).encodingBodyLength();
         }
         return (int) bodyContent.hasLeft();
     }
@@ -66,7 +66,7 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type>
     @Override
     protected void encodeBody(ByteBuffer buffer) {
         if (getValue() != null) {
-            ((AbstractAsn1Type) getValue()).encodeBody(buffer);
+            ((AbstractAsn1Type<?>) getValue()).encodeBody(buffer);
         } else {
             try {
                 buffer.put(bodyContent.readAllLeftBytes());
@@ -86,7 +86,9 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type>
     }
 
     public void decodeValueAsSimple() throws IOException {
-        if (getValue() != null) return;
+        if (getValue() != null) {
+            return;
+        }
         if (! isSimple()) {
             throw new IllegalArgumentException("Attempting to decode non-simple value as simple");
         }
@@ -96,7 +98,9 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type>
     }
 
     public void decodeValueAsCollection() throws IOException {
-        if (getValue() != null) return;
+        if (getValue() != null) {
+            return;
+        }
         if (! isCollection()) {
             throw new IllegalArgumentException("Attempting to decode non-collection value as collection");
         }
@@ -117,7 +121,7 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type>
 
     public void decodeValueWith(Asn1Type value) throws IOException {
         setValue(value);
-        ((AbstractAsn1Type) value).decode(tagFlags(), tagNo(), bodyContent);
+        ((AbstractAsn1Type<?>) value).decode(tagFlags(), tagNo(), bodyContent);
     }
 
     public void decodeValueAsImplicitTagged(int originalTag, int originalTagNo) throws IOException {
@@ -149,7 +153,7 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type>
         if (! isTagged()) {
             throw new IllegalArgumentException("Attempting to decode non-tagged value using tagging way");
         }
-        ((AbstractAsn1Type) value).taggedDecode(tagFlags(), tagNo(), getBodyContent(), taggingOption);
+        ((AbstractAsn1Type<?>) value).taggedDecode(tagFlags(), tagNo(), getBodyContent(), taggingOption);
         setValue(value);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java
index d12f6ca..0cec9c2 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java
@@ -101,7 +101,9 @@ public class Asn1ObjectIdentifier extends Asn1Simple<String> {
     private byte[][] group(byte[] bytes) {
         int count = 0, i, j;
         int[] countArr = new int[bytes.length]; // how many bytes for each group
-        for (i = 0; i < countArr.length; ++i) countArr[i] = 0;
+        for (i = 0; i < countArr.length; ++i) {
+            countArr[i] = 0;
+        }
 
         for (j = 0, i = 0; i < bytes.length; ++i) {
             if ((bytes[i] & 0x80) != 0) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
index 9f56b39..b1e919c 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
@@ -46,7 +46,7 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
 
     @Override
     protected int encodingBodyLength() {
-        AbstractAsn1Type value = (AbstractAsn1Type) getValue();
+        AbstractAsn1Type<?> value = (AbstractAsn1Type<?>) getValue();
         if (getEncodingOption().isExplicit()) {
             return value.encodingLength();
         } else if (getEncodingOption().isImplicit()) {
@@ -61,7 +61,7 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
         if (getEncodingOption().isExplicit()) {
             return true;
         } else if (getEncodingOption().isImplicit()) {
-            AbstractAsn1Type value = (AbstractAsn1Type) getValue();
+            AbstractAsn1Type<?> value = (AbstractAsn1Type<?>) getValue();
             return value.isConstructed();
         }
         return false;
@@ -69,7 +69,7 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
 
     @Override
     protected void encodeBody(ByteBuffer buffer) {
-        AbstractAsn1Type value = (AbstractAsn1Type) getValue();
+        AbstractAsn1Type<?> value = (AbstractAsn1Type<?>) getValue();
         if (getEncodingOption().isExplicit()) {
             value.encode(buffer);
         } else if (getEncodingOption().isImplicit()) {
@@ -81,7 +81,7 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
 
     @Override
     protected void decodeBody(LimitedByteBuffer content) throws IOException {
-        AbstractAsn1Type value = (AbstractAsn1Type) getValue();
+        AbstractAsn1Type<?> value = (AbstractAsn1Type<?>) getValue();
         if (getEncodingOption().isExplicit()) {
             value.decode(content);
         } else if (getEncodingOption().isImplicit()) {
@@ -93,9 +93,9 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
 
     private void initValue() {
         Class<? extends Asn1Type> valueType = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
-        AbstractAsn1Type value = null;
+        AbstractAsn1Type<?> value = null;
         try {
-            value = (AbstractAsn1Type) valueType.newInstance();
+            value = (AbstractAsn1Type<?>) valueType.newInstance();
         } catch (Exception e) {
             throw new RuntimeException("Failed to create tagged value", e);
         }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1UtcTime.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1UtcTime.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1UtcTime.java
index c39dcdc..220e7c2 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1UtcTime.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1UtcTime.java
@@ -66,8 +66,7 @@ public class Asn1UtcTime extends Asn1Simple<Date>
             throw new IllegalArgumentException("Bad utc time string " + dateStr);
         }
 
-        SimpleDateFormat sdf;
-        sdf = new SimpleDateFormat("yyMMddHHmmssZ");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmssZ");
         sdf.setTimeZone(new SimpleTimeZone(0, "Z"));
         try {
             setValue(sdf.parse(fixedDateStr));

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
index b3e81fc..16c368f 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
@@ -50,10 +50,10 @@ public class TestAsn1Collection {
     public void testSequenceDecoding() throws IOException {
         Asn1Sequence seq = new Asn1Sequence();
         seq.decode(EXPECTED_BYTES);
-        AbstractAsn1Type field = (AbstractAsn1Type) seq.getValue().get(0).getValue();
+        AbstractAsn1Type<?> field = (AbstractAsn1Type<?>) seq.getValue().get(0).getValue();
         assertThat(field.getValue()).isEqualTo(TEST_STR);
 
-        field = (AbstractAsn1Type) seq.getValue().get(1).getValue();
+        field = (AbstractAsn1Type<?>) seq.getValue().get(1).getValue();
         assertThat(field.getValue()).isEqualTo(TEST_BOOL);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/f2ccbc32/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
index 446917a..d3a1570 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
@@ -50,7 +50,7 @@ public class Util {
      * 0x02 02 00 80
      */
     public static byte[] hex2bytes(String hexString) {
-        if (hexString==null) {
+        if (hexString == null) {
             throw new IllegalArgumentException("Invalid hex string to convert : null");
         }
         
@@ -60,7 +60,7 @@ public class Util {
             throw new IllegalArgumentException("Invalid hex string to convert : length below 4");
         }
         
-        if (( hexStr[0] != '0') || ((hexStr[1]!='x') && (hexStr[1]!='X'))) {
+        if (( hexStr[0] != '0') || ((hexStr[1] != 'x') && (hexStr[1] != 'X'))) {
             throw new IllegalArgumentException("Invalid hex string to convert : not starting with '0x'");
         }
         
@@ -69,9 +69,9 @@ public class Util {
         boolean high = false;
         boolean prefix = true;
         
-        for (char c:hexStr) {
+        for (char c : hexStr) {
             if (prefix) {
-                if ((c == 'x')|| (c=='X')) {
+                if ((c == 'x') || (c=='X')) {
                     prefix = false;
                 }
                 


[24/30] directory-kerberos git commit: Some test refactoring

Posted by dr...@apache.org.
Some test refactoring


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

Branch: refs/heads/installation
Commit: 4ae948c6c3cb0458d90c1af547d1ebab99c40849
Parents: f2ccbc3
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Thu Feb 5 11:54:00 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Thu Feb 5 11:54:00 2015 +0000

----------------------------------------------------------------------
 .../src/main/resources/aes128-kerberos-data     | Bin 1712 -> 0 bytes
 .../src/main/resources/aes128-key-data          |   1 -
 .../src/main/resources/aes128-spnego-data       | Bin 1778 -> 0 bytes
 .../src/main/resources/aes256-kerberos-data     | Bin 1744 -> 0 bytes
 .../src/main/resources/aes256-key-data          | Bin 32 -> 0 bytes
 .../src/main/resources/aes256-spnego-data       | Bin 1810 -> 0 bytes
 .../src/main/resources/asrep.token              | Bin 1241 -> 0 bytes
 .../src/main/resources/asreq.token              | Bin 291 -> 0 bytes
 .../src/main/resources/des-kerberos-data        | Bin 1773 -> 0 bytes
 .../src/main/resources/des-key-data             |   1 -
 .../src/main/resources/des-pac-data             | Bin 1072 -> 0 bytes
 .../src/main/resources/des-spnego-data          | Bin 1839 -> 0 bytes
 .../src/main/resources/exceptions.properties    |  55 -------------------
 .../src/main/resources/rc4-kerberos-data        | Bin 1735 -> 0 bytes
 .../src/main/resources/rc4-key-data             |   1 -
 .../src/main/resources/rc4-pac-data             | Bin 1048 -> 0 bytes
 .../src/main/resources/rc4-spnego-data          | Bin 1801 -> 0 bytes
 .../src/main/resources/server.keytab            | Bin 387 -> 0 bytes
 .../src/main/resources/tgsrep.token             | Bin 1189 -> 0 bytes
 .../src/main/resources/tgsreq.token             | Bin 1211 -> 0 bytes
 .../kerb/codec/kerberos/KerberosApRequest.java  |   2 +-
 .../kerb/codec/kerberos/KerberosToken.java      |   6 +-
 .../kerberos/kerb/codec/spnego/SpnegoToken.java |   4 +-
 .../kerberos/kerb/codec/test/CodecTestUtil.java |  13 +++--
 .../kerberos/kerb/codec/test/TestKerberos.java  |   6 +-
 .../kerberos/kerb/codec/test/TestSpnego.java    |   3 +-
 .../src/test/resources/aes128-kerberos-data     | Bin 0 -> 1712 bytes
 .../src/test/resources/aes128-key-data          |   1 +
 .../src/test/resources/aes128-spnego-data       | Bin 0 -> 1778 bytes
 .../src/test/resources/aes256-kerberos-data     | Bin 0 -> 1744 bytes
 .../src/test/resources/aes256-key-data          | Bin 0 -> 32 bytes
 .../src/test/resources/aes256-spnego-data       | Bin 0 -> 1810 bytes
 .../src/test/resources/asrep.token              | Bin 0 -> 1241 bytes
 .../src/test/resources/asreq.token              | Bin 0 -> 291 bytes
 .../src/test/resources/des-kerberos-data        | Bin 0 -> 1773 bytes
 .../src/test/resources/des-key-data             |   1 +
 .../src/test/resources/des-pac-data             | Bin 0 -> 1072 bytes
 .../src/test/resources/des-spnego-data          | Bin 0 -> 1839 bytes
 .../src/test/resources/exceptions.properties    |  55 +++++++++++++++++++
 .../src/test/resources/rc4-kerberos-data        | Bin 0 -> 1735 bytes
 .../src/test/resources/rc4-key-data             |   1 +
 .../src/test/resources/rc4-pac-data             | Bin 0 -> 1048 bytes
 .../src/test/resources/rc4-spnego-data          | Bin 0 -> 1801 bytes
 .../src/test/resources/server.keytab            | Bin 0 -> 387 bytes
 .../src/test/resources/tgsrep.token             | Bin 0 -> 1189 bytes
 .../src/test/resources/tgsreq.token             | Bin 0 -> 1211 bytes
 .../kerby/kerberos/kerb/KrbErrorException.java  |   4 ++
 .../kerby/kerberos/kerb/KrbException.java       |   5 ++
 .../kerby/kerberos/kerb/spec/KerberosTime.java  |  10 +---
 .../kerberos/kerb/spec/KrbAppSequenceType.java  |   3 +-
 .../kerberos/kerb/spec/KrbSequenceType.java     |   3 +-
 .../kerberos/kerb/spec/common/CheckSum.java     |  12 +++-
 .../kerb/spec/common/EncryptedData.java         |  12 +++-
 .../kerb/spec/common/EncryptionKey.java         |  16 ++++--
 .../kerb/spec/common/PrincipalName.java         |   2 +-
 55 files changed, 120 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/aes128-kerberos-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/aes128-kerberos-data b/kerby-kerb/kerb-core-test/src/main/resources/aes128-kerberos-data
deleted file mode 100644
index 7f3b582..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/aes128-kerberos-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/aes128-key-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/aes128-key-data b/kerby-kerb/kerb-core-test/src/main/resources/aes128-key-data
deleted file mode 100644
index 4ba2540..0000000
--- a/kerby-kerb/kerb-core-test/src/main/resources/aes128-key-data
+++ /dev/null
@@ -1 +0,0 @@
-����\���U�s�7"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/aes128-spnego-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/aes128-spnego-data b/kerby-kerb/kerb-core-test/src/main/resources/aes128-spnego-data
deleted file mode 100644
index 13c89e6..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/aes128-spnego-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/aes256-kerberos-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/aes256-kerberos-data b/kerby-kerb/kerb-core-test/src/main/resources/aes256-kerberos-data
deleted file mode 100644
index b7d539f..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/aes256-kerberos-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/aes256-key-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/aes256-key-data b/kerby-kerb/kerb-core-test/src/main/resources/aes256-key-data
deleted file mode 100644
index 24792c1..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/aes256-key-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/aes256-spnego-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/aes256-spnego-data b/kerby-kerb/kerb-core-test/src/main/resources/aes256-spnego-data
deleted file mode 100644
index 6a7e55c..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/aes256-spnego-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/asrep.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/asrep.token b/kerby-kerb/kerb-core-test/src/main/resources/asrep.token
deleted file mode 100644
index d77cff7..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/asrep.token and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/asreq.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/asreq.token b/kerby-kerb/kerb-core-test/src/main/resources/asreq.token
deleted file mode 100644
index 6d503b3..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/asreq.token and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/des-kerberos-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/des-kerberos-data b/kerby-kerb/kerb-core-test/src/main/resources/des-kerberos-data
deleted file mode 100644
index 3db6963..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/des-kerberos-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/des-key-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/des-key-data b/kerby-kerb/kerb-core-test/src/main/resources/des-key-data
deleted file mode 100644
index 84a0c50..0000000
--- a/kerby-kerb/kerb-core-test/src/main/resources/des-key-data
+++ /dev/null
@@ -1 +0,0 @@
-��2^�L�
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/des-pac-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/des-pac-data b/kerby-kerb/kerb-core-test/src/main/resources/des-pac-data
deleted file mode 100644
index 7408111..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/des-pac-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/des-spnego-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/des-spnego-data b/kerby-kerb/kerb-core-test/src/main/resources/des-spnego-data
deleted file mode 100644
index 04a56e8..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/des-spnego-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/exceptions.properties
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/exceptions.properties b/kerby-kerb/kerb-core-test/src/main/resources/exceptions.properties
deleted file mode 100644
index c9cc814..0000000
--- a/kerby-kerb/kerb-core-test/src/main/resources/exceptions.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-# 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.
-object.cast.fail=Unable to cast object from {0} to {1}.
-
-spnego.token.empty=Empty SPNego token.
-spnego.token.invalid=Not a valid SPNego token: {0}.
-spnego.token.malformed=Malformed SPNego token.
-spnego.field.invalid=Not a valid SPNego token field: {0}.
-
-
-kerberos.object.cast=Unable to cast Kerberos object from {0} to {1}.
-kerberos.token.empty=Empty Kerberos token.
-kerberos.token.invalid=Not a Kerberos token.
-kerberos.token.malformed=Malformed Kerberos token.
-kerberos.kdcReq.empty=Empty message.
-kerberos.kdcReq.invalid=Not a KRB_AP_REQ message.
-kerberos.ticket.empty=Empty Kerberos ticket.
-kerberos.ticket.invalid=Not a Kerberos v5 ticket.
-kerberos.ticket.malformed=Malformed Kerberos ticket.
-kerberos.field.invalid=Not a valid Kerberos ticket field: {0}.
-kerberos.field.malformed=Malformed Kerberos ticket field.
-kerberos.key.notfound=Unable to find appropriate key of type {0}.
-kerberos.version.invalid=Invalid version of Kerberos ticket: {0}.
-kerberos.login.fail=Unable to get server keys.
-kerberos.decrypt.fail=Unable to decrypt encrypted data using key of type {0}.
-
-pac.token.empty=Empty PAC token.
-pac.token.malformed=Malformed PAC token.
-pac.logoninfo.malformed=Malformed PAC logon info.
-pac.signature.malformed=Malformed PAC signature.
-pac.signature.invalid=Invalid PAC signature.
-pac.string.notempty=String not empty while expected null.
-pac.string.malformed.size=Inconsistent string lengths.
-pac.string.invalid.size=Inconsistent string size: {1}, expecting {0}.
-pac.groups.invalid.size=Group count ({0}) doesn't match the real number of groups ({1}) in the PAC.
-pac.extrasids.invalid.size=Extra SID count ({0}) doesn't match the real number of extra SID ({1}) in the PAC.
-pac.resourcegroups.invalid.size=Resource group count ({0}) doesn't match the real number of resource groups ({1}) in the PAC.
-pac.sid.malformed.size=Inconsistent SID length.
-pac.subauthority.malformed.size=Incorrect byte array length: {0}; must be multiple of 4.
-pac.version.invalid=Invalid version of PAC token: {0}.
-pac.check.fail=Unable to check PAC signature.

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/rc4-kerberos-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/rc4-kerberos-data b/kerby-kerb/kerb-core-test/src/main/resources/rc4-kerberos-data
deleted file mode 100644
index 6be7086..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/rc4-kerberos-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/rc4-key-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/rc4-key-data b/kerby-kerb/kerb-core-test/src/main/resources/rc4-key-data
deleted file mode 100644
index 64f9d9c..0000000
--- a/kerby-kerb/kerb-core-test/src/main/resources/rc4-key-data
+++ /dev/null
@@ -1 +0,0 @@
-l�܇y#�l�mv��k�
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/rc4-pac-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/rc4-pac-data b/kerby-kerb/kerb-core-test/src/main/resources/rc4-pac-data
deleted file mode 100644
index df45f91..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/rc4-pac-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/rc4-spnego-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/rc4-spnego-data b/kerby-kerb/kerb-core-test/src/main/resources/rc4-spnego-data
deleted file mode 100644
index 91cbe26..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/rc4-spnego-data and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/server.keytab
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/server.keytab b/kerby-kerb/kerb-core-test/src/main/resources/server.keytab
deleted file mode 100644
index b44347c..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/server.keytab and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/tgsrep.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/tgsrep.token b/kerby-kerb/kerb-core-test/src/main/resources/tgsrep.token
deleted file mode 100644
index 25d6270..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/tgsrep.token and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/main/resources/tgsreq.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/main/resources/tgsreq.token b/kerby-kerb/kerb-core-test/src/main/resources/tgsreq.token
deleted file mode 100644
index 69f6b46..0000000
Binary files a/kerby-kerb/kerb-core-test/src/main/resources/tgsreq.token and /dev/null differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosApRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosApRequest.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosApRequest.java
index 4266ea6..3ffb686 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosApRequest.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosApRequest.java
@@ -33,7 +33,7 @@ public class KerberosApRequest {
     private KerberosTicket ticket;
 
     public KerberosApRequest(byte[] token, EncryptionKey key) throws Exception {
-        if(token.length <= 0) {
+        if (token.length <= 0) {
             throw new IOException("kerberos request empty");
         }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosToken.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosToken.java
index f3488c3..bb24611 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosToken.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosToken.java
@@ -35,14 +35,16 @@ public class KerberosToken {
 
     public KerberosToken(byte[] token, EncryptionKey key) throws Exception {
 
-        if(token.length <= 0)
+        if (token.length <= 0) {
             throw new IOException("kerberos.token.empty");
+        }
 
         Asn1InputBuffer buffer = new Asn1InputBuffer(token);
 
         Asn1Item value = (Asn1Item) buffer.read();
-        if(! value.isAppSpecific() && ! value.isConstructed())
+        if(! value.isAppSpecific() && ! value.isConstructed()) {
             throw new IOException("kerberos.token.malformed");
+        }
 
         buffer = new Asn1InputBuffer(value.getBodyContent());
         buffer.skipNext();

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/spnego/SpnegoToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/spnego/SpnegoToken.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/spnego/SpnegoToken.java
index 7c80a59..6e61dc1 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/spnego/SpnegoToken.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/spnego/SpnegoToken.java
@@ -33,8 +33,9 @@ public abstract class SpnegoToken {
     public static SpnegoToken parse(byte[] token) throws IOException {
         SpnegoToken spnegoToken = null;
 
-        if(token.length <= 0)
+        if (token.length <= 0) {
             throw new IOException("spnego.token.empty");
+        }
 
         switch (token[0]) {
         case (byte)0x60:
@@ -45,7 +46,6 @@ public abstract class SpnegoToken {
             break;
         default:
             spnegoToken = null;
-            Object[] args = new Object[]{token[0]};
             throw new IOException("spnego.token.invalid");
         }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTestUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTestUtil.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTestUtil.java
index ed11259..2657093 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTestUtil.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/CodecTestUtil.java
@@ -23,10 +23,11 @@ import java.io.IOException;
 import java.io.InputStream;
 
 public class CodecTestUtil {
-  /*package*/ static byte[] readBinaryFile(String path) throws IOException {
-    InputStream is = CodecTestUtil.class.getResourceAsStream(path);
-    byte[] bytes = new byte[is.available()];
-    is.read(bytes);
-    return bytes;
-  }
+    /*package*/ 
+    static byte[] readBinaryFile(String path) throws IOException {
+        InputStream is = CodecTestUtil.class.getResourceAsStream(path);
+        byte[] bytes = new byte[is.available()];
+        is.read(bytes);
+        return bytes;
+    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
index 900186f..42e5feb 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
@@ -44,10 +44,8 @@ public class TestKerberos {
 
     @Before
     public void setUp() throws IOException {
-        InputStream file;
-        byte[] keyData;
 
-        file = this.getClass().getClassLoader().getResourceAsStream("rc4-kerberos-data");
+        InputStream file = this.getClass().getClassLoader().getResourceAsStream("rc4-kerberos-data");
         rc4Token = new byte[file.available()];
         file.read(rc4Token);
         file.close();
@@ -68,7 +66,7 @@ public class TestKerberos {
         file.close();
 
         file = this.getClass().getClassLoader().getResourceAsStream("rc4-key-data");
-        keyData = new byte[file.available()];
+        byte[] keyData = new byte[file.available()];
         file.read(keyData);
         rc4Key = new EncryptionKey(23, keyData, 2);
         file.close();

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java
index 8c53d3a..35eed4a 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestSpnego.java
@@ -39,9 +39,8 @@ public class TestSpnego {
 
     //@Before
     public void setUp() throws IOException {
-        InputStream file;
 
-        file = this.getClass().getClassLoader().getResourceAsStream("rc4-spnego-data");
+        InputStream file = this.getClass().getClassLoader().getResourceAsStream("rc4-spnego-data");
         rc4Token = new byte[file.available()];
         file.read(rc4Token);
         file.close();

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/aes128-kerberos-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/aes128-kerberos-data b/kerby-kerb/kerb-core-test/src/test/resources/aes128-kerberos-data
new file mode 100644
index 0000000..7f3b582
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/aes128-kerberos-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/aes128-key-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/aes128-key-data b/kerby-kerb/kerb-core-test/src/test/resources/aes128-key-data
new file mode 100644
index 0000000..4ba2540
--- /dev/null
+++ b/kerby-kerb/kerb-core-test/src/test/resources/aes128-key-data
@@ -0,0 +1 @@
+����\���U�s�7"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/aes128-spnego-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/aes128-spnego-data b/kerby-kerb/kerb-core-test/src/test/resources/aes128-spnego-data
new file mode 100644
index 0000000..13c89e6
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/aes128-spnego-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/aes256-kerberos-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/aes256-kerberos-data b/kerby-kerb/kerb-core-test/src/test/resources/aes256-kerberos-data
new file mode 100644
index 0000000..b7d539f
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/aes256-kerberos-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/aes256-key-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/aes256-key-data b/kerby-kerb/kerb-core-test/src/test/resources/aes256-key-data
new file mode 100644
index 0000000..24792c1
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/aes256-key-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/aes256-spnego-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/aes256-spnego-data b/kerby-kerb/kerb-core-test/src/test/resources/aes256-spnego-data
new file mode 100644
index 0000000..6a7e55c
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/aes256-spnego-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/asrep.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/asrep.token b/kerby-kerb/kerb-core-test/src/test/resources/asrep.token
new file mode 100644
index 0000000..d77cff7
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/asrep.token differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/asreq.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/asreq.token b/kerby-kerb/kerb-core-test/src/test/resources/asreq.token
new file mode 100644
index 0000000..6d503b3
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/asreq.token differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/des-kerberos-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/des-kerberos-data b/kerby-kerb/kerb-core-test/src/test/resources/des-kerberos-data
new file mode 100644
index 0000000..3db6963
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/des-kerberos-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/des-key-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/des-key-data b/kerby-kerb/kerb-core-test/src/test/resources/des-key-data
new file mode 100644
index 0000000..84a0c50
--- /dev/null
+++ b/kerby-kerb/kerb-core-test/src/test/resources/des-key-data
@@ -0,0 +1 @@
+��2^�L�
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/des-pac-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/des-pac-data b/kerby-kerb/kerb-core-test/src/test/resources/des-pac-data
new file mode 100644
index 0000000..7408111
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/des-pac-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/des-spnego-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/des-spnego-data b/kerby-kerb/kerb-core-test/src/test/resources/des-spnego-data
new file mode 100644
index 0000000..04a56e8
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/des-spnego-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/exceptions.properties
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/exceptions.properties b/kerby-kerb/kerb-core-test/src/test/resources/exceptions.properties
new file mode 100644
index 0000000..c9cc814
--- /dev/null
+++ b/kerby-kerb/kerb-core-test/src/test/resources/exceptions.properties
@@ -0,0 +1,55 @@
+# 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.
+object.cast.fail=Unable to cast object from {0} to {1}.
+
+spnego.token.empty=Empty SPNego token.
+spnego.token.invalid=Not a valid SPNego token: {0}.
+spnego.token.malformed=Malformed SPNego token.
+spnego.field.invalid=Not a valid SPNego token field: {0}.
+
+
+kerberos.object.cast=Unable to cast Kerberos object from {0} to {1}.
+kerberos.token.empty=Empty Kerberos token.
+kerberos.token.invalid=Not a Kerberos token.
+kerberos.token.malformed=Malformed Kerberos token.
+kerberos.kdcReq.empty=Empty message.
+kerberos.kdcReq.invalid=Not a KRB_AP_REQ message.
+kerberos.ticket.empty=Empty Kerberos ticket.
+kerberos.ticket.invalid=Not a Kerberos v5 ticket.
+kerberos.ticket.malformed=Malformed Kerberos ticket.
+kerberos.field.invalid=Not a valid Kerberos ticket field: {0}.
+kerberos.field.malformed=Malformed Kerberos ticket field.
+kerberos.key.notfound=Unable to find appropriate key of type {0}.
+kerberos.version.invalid=Invalid version of Kerberos ticket: {0}.
+kerberos.login.fail=Unable to get server keys.
+kerberos.decrypt.fail=Unable to decrypt encrypted data using key of type {0}.
+
+pac.token.empty=Empty PAC token.
+pac.token.malformed=Malformed PAC token.
+pac.logoninfo.malformed=Malformed PAC logon info.
+pac.signature.malformed=Malformed PAC signature.
+pac.signature.invalid=Invalid PAC signature.
+pac.string.notempty=String not empty while expected null.
+pac.string.malformed.size=Inconsistent string lengths.
+pac.string.invalid.size=Inconsistent string size: {1}, expecting {0}.
+pac.groups.invalid.size=Group count ({0}) doesn't match the real number of groups ({1}) in the PAC.
+pac.extrasids.invalid.size=Extra SID count ({0}) doesn't match the real number of extra SID ({1}) in the PAC.
+pac.resourcegroups.invalid.size=Resource group count ({0}) doesn't match the real number of resource groups ({1}) in the PAC.
+pac.sid.malformed.size=Inconsistent SID length.
+pac.subauthority.malformed.size=Incorrect byte array length: {0}; must be multiple of 4.
+pac.version.invalid=Invalid version of PAC token: {0}.
+pac.check.fail=Unable to check PAC signature.

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/rc4-kerberos-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/rc4-kerberos-data b/kerby-kerb/kerb-core-test/src/test/resources/rc4-kerberos-data
new file mode 100644
index 0000000..6be7086
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/rc4-kerberos-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/rc4-key-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/rc4-key-data b/kerby-kerb/kerb-core-test/src/test/resources/rc4-key-data
new file mode 100644
index 0000000..64f9d9c
--- /dev/null
+++ b/kerby-kerb/kerb-core-test/src/test/resources/rc4-key-data
@@ -0,0 +1 @@
+l�܇y#�l�mv��k�
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/rc4-pac-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/rc4-pac-data b/kerby-kerb/kerb-core-test/src/test/resources/rc4-pac-data
new file mode 100644
index 0000000..df45f91
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/rc4-pac-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/rc4-spnego-data
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/rc4-spnego-data b/kerby-kerb/kerb-core-test/src/test/resources/rc4-spnego-data
new file mode 100644
index 0000000..91cbe26
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/rc4-spnego-data differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/server.keytab
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/server.keytab b/kerby-kerb/kerb-core-test/src/test/resources/server.keytab
new file mode 100644
index 0000000..b44347c
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/server.keytab differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/tgsrep.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/tgsrep.token b/kerby-kerb/kerb-core-test/src/test/resources/tgsrep.token
new file mode 100644
index 0000000..25d6270
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/tgsrep.token differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core-test/src/test/resources/tgsreq.token
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/resources/tgsreq.token b/kerby-kerb/kerb-core-test/src/test/resources/tgsreq.token
new file mode 100644
index 0000000..69f6b46
Binary files /dev/null and b/kerby-kerb/kerb-core-test/src/test/resources/tgsreq.token differ

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorException.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorException.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorException.java
index e2c2658..7bcdefa 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorException.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorException.java
@@ -22,6 +22,10 @@ package org.apache.kerby.kerberos.kerb;
 import org.apache.kerby.kerberos.kerb.spec.common.KrbError;
 
 public class KrbErrorException extends KrbException {
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -5541320518061583932L;
     private KrbError krbError;
 
     public KrbErrorException(KrbError krbError) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbException.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbException.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbException.java
index 878e264..3f75bcd 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbException.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbException.java
@@ -21,6 +21,11 @@ package org.apache.kerby.kerberos.kerb;
 
 public class KrbException extends Exception {
 
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 3561718983481823145L;
+
     public KrbException(String message) {
         super(message);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosTime.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosTime.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosTime.java
index 3614253..632c8f2 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosTime.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosTime.java
@@ -19,17 +19,14 @@
  */
 package org.apache.kerby.kerberos.kerb.spec;
 
-import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
-
 import java.util.Date;
-import java.util.TimeZone;
+
+import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
 
 /**
  KerberosTime    ::= GeneralizedTime -- with no fractional seconds
  */
 public class KerberosTime extends Asn1GeneralizedTime {
-    private static final TimeZone UTC = TimeZone.getTimeZone("UTC");
-
     public static final KerberosTime NEVER = new KerberosTime(Long.MAX_VALUE);
 
     public static final int MINUTE = 60000;
@@ -93,8 +90,7 @@ public class KerberosTime extends Asn1GeneralizedTime {
 
     public KerberosTime copy() {
         long time = getTime();
-        KerberosTime result = new KerberosTime(time);
-        return result;
+        return new KerberosTime(time);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbAppSequenceType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbAppSequenceType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbAppSequenceType.java
index bee83da..2e72cbb 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbAppSequenceType.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbAppSequenceType.java
@@ -43,8 +43,7 @@ public abstract class KrbAppSequenceType extends TaggingSequence {
     }
 
     protected KerberosTime getFieldAsTime(int index) {
-        KerberosTime value = getFieldAs(index, KerberosTime.class);
-        return value;
+        return getFieldAs(index, KerberosTime.class);
     }
 
     protected void setFieldAsTime(int index, long value) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceType.java
index 4cdb181..d0d9d52 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceType.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceType.java
@@ -41,8 +41,7 @@ public abstract class KrbSequenceType extends Asn1SequenceType {
     }
 
     protected KerberosTime getFieldAsTime(int index) {
-        KerberosTime value = getFieldAs(index, KerberosTime.class);
-        return value;
+        return getFieldAs(index, KerberosTime.class);
     }
 
     protected void setFieldAsTime(int index, long value) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSum.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSum.java
index 9822c02..0bbaaf1 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSum.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSum.java
@@ -75,12 +75,18 @@ public class CheckSum extends KrbSequenceType {
 
     @Override
     public boolean equals(Object other) {
-        if (this == other) return true;
-        if (other == null || getClass() != other.getClass()) return false;
+        if (this == other) {
+            return true;
+        }
+        if (other == null || getClass() != other.getClass()) {
+            return false;
+        }
 
         CheckSum that = (CheckSum) other;
 
-        if (getCksumtype() != that.getCksumtype()) return false;
+        if (getCksumtype() != that.getCksumtype()) {
+            return false;
+        }
 
         return Arrays.equals(getChecksum(), that.getChecksum());
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptedData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptedData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptedData.java
index 3875000..c012a16 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptedData.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptedData.java
@@ -79,8 +79,12 @@ public class EncryptedData extends KrbSequenceType {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         EncryptedData that = (EncryptedData) o;
 
@@ -89,7 +93,9 @@ public class EncryptedData extends KrbSequenceType {
                 getKvno() != that.getKvno()) return false;
         */
 
-        if (getEType() != that.getEType()) return false;
+        if (getEType() != that.getEType()) {
+            return false;
+        }
 
         return Arrays.equals(getCipher(), that.getCipher());
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionKey.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionKey.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionKey.java
index 6f7f540..1cc72da 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionKey.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionKey.java
@@ -93,14 +93,22 @@ public class EncryptionKey extends KrbSequenceType {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         EncryptionKey that = (EncryptionKey) o;
 
-        if (kvno != -1 && that.kvno != -1 && kvno != that.kvno) return false;
+        if (kvno != -1 && that.kvno != -1 && kvno != that.kvno) {
+            return false;
+        }
 
-        if (getKeyType() != that.getKeyType()) return false;
+        if (getKeyType() != that.getKeyType()) {
+            return false;
+        }
 
         return Arrays.equals(getKeyData(), that.getKeyData());
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4ae948c6/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/PrincipalName.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/PrincipalName.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/PrincipalName.java
index eef8ede..be05d8b 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/PrincipalName.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/PrincipalName.java
@@ -75,7 +75,7 @@ public class PrincipalName extends KrbSequenceType {
         if (krbStrings != null) {
             return krbStrings.getAsStrings();
         }
-        return Collections.EMPTY_LIST;
+        return Collections.emptyList();
     }
 
     public void setNameStrings(List<String> nameStrings) {


[19/30] directory-kerberos git commit: Minor code refactor in lib

Posted by dr...@apache.org.
Minor code refactor in lib


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

Branch: refs/heads/installation
Commit: ac8f3e9b65e350d3fb0c8316db3bb4945be5b65a
Parents: d93c2c6
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Feb 4 12:41:14 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Feb 4 12:41:14 2015 +0000

----------------------------------------------------------------------
 .../main/java/org/apache/kerby/config/Conf.java |  1 +
 .../org/apache/kerby/config/ConfigImpl.java     |  4 ++-
 .../org/apache/kerby/config/ConfigObject.java   | 11 ++++--
 .../apache/kerby/config/IniConfigLoader.java    |  4 +++
 .../apache/kerby/config/MapConfigLoader.java    |  4 +--
 .../kerby/config/PropertiesConfigLoader.java    |  3 +-
 .../apache/kerby/config/XmlConfigLoader.java    | 37 ++++++++------------
 .../kerby/transport/tcp/TcpTransport.java       |  4 ++-
 .../kerby/event/network/TestNetworkClient.java  |  6 ++--
 .../apache/kerby/event/tcp/TestTcpClient.java   |  3 +-
 .../apache/kerby/event/udp/TestUdpClient.java   |  3 +-
 .../main/java/org/apache/kerby/pki/Pkix.java    |  4 ++-
 12 files changed, 43 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java
index 3327fa3..b1afe50 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java
@@ -76,6 +76,7 @@ public class Conf implements Config {
         try {
             loader = loaderClass.newInstance();
         } catch (Exception e) {
+            logger.error("Failed to create org.haox.config loader for " + loaderClass.getName(), e);
             throw new RuntimeException("Failed to create org.haox.config loader for " + loaderClass.getName(), e);
         }
         loader.setResource(resource);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigImpl.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigImpl.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigImpl.java
index 629446e..3648b91 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigImpl.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigImpl.java
@@ -71,7 +71,9 @@ public class ConfigImpl implements Config {
         if (result == null) {
             for (Config config : configs) {
                 result = config.getString(name);
-                if (result != null) break;
+                if (result != null) {
+                    break;
+                }
             }
         }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java
index c915af6..536af3e 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java
@@ -44,7 +44,11 @@ public class ConfigObject {
 	}
 
     public ConfigObject(List<String> values) {
-        this.value = new ArrayList<String>(values);
+        if (values != null) {
+            this.value = new ArrayList<String>(values);
+        } else {
+            this.value = new ArrayList<String>();
+        }
         this.valueType = VALUE_TYPE.LIST;
     }
 
@@ -61,9 +65,10 @@ public class ConfigObject {
 		return result;
 	}
 	
-	public List<String> getListValues() {
+	@SuppressWarnings("unchecked")
+    public List<String> getListValues() {
 		List<String> results = null;
-		if (valueType == VALUE_TYPE.LIST) {
+		if (valueType == VALUE_TYPE.LIST && value instanceof List<?>) {
             results = (List<String>) value;
 		}
 		

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-config/src/main/java/org/apache/kerby/config/IniConfigLoader.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/IniConfigLoader.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/IniConfigLoader.java
index cf9f56b..f1f5851 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/IniConfigLoader.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/IniConfigLoader.java
@@ -48,6 +48,10 @@ public class IniConfigLoader extends ConfigLoader {
     }
 
     private void parseLine(String line) {
+        if (line == null) {
+            return;
+        }
+        
         line = line.trim();
 
         if (line.startsWith(COMMENT_SYMBOL)) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-config/src/main/java/org/apache/kerby/config/MapConfigLoader.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/MapConfigLoader.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/MapConfigLoader.java
index f83517f..734d6a4 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/MapConfigLoader.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/MapConfigLoader.java
@@ -24,10 +24,10 @@ import java.util.Map;
 public class MapConfigLoader extends ConfigLoader {
     @Override
     protected void loadConfig(ConfigImpl config, Resource resource) {
+        @SuppressWarnings("unchecked")
         Map<String, String> mapConfig = (Map<String, String>) resource.getResource();
-        String value;
         for (String key : mapConfig.keySet()) {
-            value = mapConfig.get(key);
+            String value = mapConfig.get(key);
             config.set(key, value);
         }
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-config/src/main/java/org/apache/kerby/config/PropertiesConfigLoader.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/PropertiesConfigLoader.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/PropertiesConfigLoader.java
index e0b9782..6fe4bf1 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/PropertiesConfigLoader.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/PropertiesConfigLoader.java
@@ -30,10 +30,9 @@ public class PropertiesConfigLoader extends ConfigLoader {
     }
 
     protected void loadConfig(ConfigImpl config, Properties propConfig) {
-        Object value;
         for (Object key : propConfig.keySet()) {
             if (key instanceof String) {
-                value = propConfig.getProperty((String) key);
+                Object value = propConfig.getProperty((String) key);
                 if (value != null && value instanceof String) {
                     config.set((String) key, (String) value);
                 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-config/src/main/java/org/apache/kerby/config/XmlConfigLoader.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/XmlConfigLoader.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/XmlConfigLoader.java
index 2208abc..786ac1d 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/XmlConfigLoader.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/XmlConfigLoader.java
@@ -75,10 +75,7 @@ public class XmlConfigLoader extends ConfigLoader {
         return valid;
     }
 
-    private void loadConfig(ConfigImpl conifg, Element element) {
-        String name;
-        ConfigObject value;
-
+    private void loadConfig(ConfigImpl config, Element element) {
         NodeList props = element.getChildNodes();
         for (int i = 0; i < props.getLength(); i++) {
             Node subNode = props.item(i);
@@ -87,12 +84,12 @@ public class XmlConfigLoader extends ConfigLoader {
             }
 
             Element prop = (Element)subNode;
-            name = getElementName(prop);
+            String name = getElementName(prop);
             if (name == null) {
                 continue;
             }
 
-            value = null;
+            ConfigObject value = null;
             String tagName = prop.getTagName();
             if ("property".equals(tagName) && prop.hasChildNodes()) {
                 value = loadProperty(prop);
@@ -103,26 +100,25 @@ public class XmlConfigLoader extends ConfigLoader {
             }
 
             if (name != null) {
-                conifg.set(name, value);
+                config.set(name, value);
             }
         }
     }
 
     private static ConfigObject loadProperty(Element ele) {
-        String value = null;
         if (ele.getFirstChild() instanceof Text) {
-            value = ((Text)ele.getFirstChild()).getData();
+            String value = ((Text)ele.getFirstChild()).getData();
             return new ConfigObject(value);
         }
 
-        ConfigObject result = null;
         NodeList nodes = ele.getChildNodes();
         List<String> values = new ArrayList<String>(nodes.getLength());
         for (int i = 0; i < nodes.getLength(); i++) {
-            value = null;
+            String value = null;
             Node valueNode = nodes.item(i);
-            if (!(valueNode instanceof Element))
+            if (!(valueNode instanceof Element)) {
                 continue;
+            }
 
             Element valueEle = (Element)valueNode;
             if ("value".equals(valueEle.getTagName()) && valueEle.hasChildNodes()) {
@@ -137,21 +133,16 @@ public class XmlConfigLoader extends ConfigLoader {
     }
 
     private static String getElementName(Element ele) {
-        String name, value;
-        Node node;
-        Attr attr;
-
         NamedNodeMap nnm = ele.getAttributes();
         for (int i = 0; i < nnm.getLength(); ++i) {
-            node = nnm.item(i);
-            if (!(node instanceof Attr))
+            Node node = nnm.item(i);
+            if (!(node instanceof Attr)) {
                 continue;
-            attr = (Attr) node;
-            name = attr.getName();
-            value = attr.getValue();
+            }
+            Attr attr = (Attr) node;
 
-            if ("name".equals(name)) {
-                return value;
+            if ("name".equals(attr.getName())) {
+                return attr.getValue();
             }
         }
         return null;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-event/src/main/java/org/apache/kerby/transport/tcp/TcpTransport.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/main/java/org/apache/kerby/transport/tcp/TcpTransport.java b/lib/kerby-event/src/main/java/org/apache/kerby/transport/tcp/TcpTransport.java
index a662e38..c09d393 100644
--- a/lib/kerby-event/src/main/java/org/apache/kerby/transport/tcp/TcpTransport.java
+++ b/lib/kerby-event/src/main/java/org/apache/kerby/transport/tcp/TcpTransport.java
@@ -100,7 +100,9 @@ public class TcpTransport extends Transport {
         }
 
         public void handle() {
-            if (recvBuffer.isEmpty()) return;
+            if (recvBuffer.isEmpty()) {
+                return;
+            }
 
             streamingBuffer = recvBuffer.readMostBytes();
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
index 10471eb..b52a18d 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
@@ -80,9 +80,8 @@ public class TestNetworkClient extends TestNetworkBase {
     }
 
     private void doRunTcpServer() throws IOException {
-        ServerSocketChannel serverSocketChannel;
         Selector selector = Selector.open();
-        serverSocketChannel = ServerSocketChannel .open();
+        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
         serverSocketChannel.configureBlocking(false);
         ServerSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(tcpPort));
@@ -125,9 +124,8 @@ public class TestNetworkClient extends TestNetworkBase {
     }
 
     private void doRunUdpServer() throws IOException {
-        DatagramChannel serverSocketChannel;
         Selector selector = Selector.open();
-        serverSocketChannel = DatagramChannel.open();
+        DatagramChannel serverSocketChannel = DatagramChannel.open();
         serverSocketChannel.configureBlocking(false);
         DatagramSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(udpPort));

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
index 5f03c99..1e895b6 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
@@ -72,9 +72,8 @@ public class TestTcpClient extends TestTcpBase {
     }
 
     private void doRunServer() throws IOException {
-        ServerSocketChannel serverSocketChannel;
         Selector selector = Selector.open();
-        serverSocketChannel = ServerSocketChannel .open();
+        ServerSocketChannel serverSocketChannel = ServerSocketChannel .open();
         serverSocketChannel.configureBlocking(false);
         ServerSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(serverPort));

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
index 8c0cd30..d8d5086 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
@@ -71,9 +71,8 @@ public class TestUdpClient extends TestUdpBase {
     }
 
     private void doRunServer() throws IOException {
-        DatagramChannel serverSocketChannel;
         Selector selector = Selector.open();
-        serverSocketChannel = DatagramChannel.open();
+        DatagramChannel serverSocketChannel = DatagramChannel.open();
         serverSocketChannel.configureBlocking(false);
         DatagramSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(serverPort));

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ac8f3e9b/lib/kerby-pkix/src/main/java/org/apache/kerby/pki/Pkix.java
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/main/java/org/apache/kerby/pki/Pkix.java b/lib/kerby-pkix/src/main/java/org/apache/kerby/pki/Pkix.java
index e74d74f..5dd66ad 100644
--- a/lib/kerby-pkix/src/main/java/org/apache/kerby/pki/Pkix.java
+++ b/lib/kerby-pkix/src/main/java/org/apache/kerby/pki/Pkix.java
@@ -57,7 +57,9 @@ public class Pkix {
     }
 
     public static PrivateKey getPrivateKey(InputStream inputStream, String password) throws GeneralSecurityException, IOException {
-        if (password == null) password = "";
+        if (password == null) {
+            password = "";
+        }
         // If the provided InputStream is encrypted, we need a password to decrypt
         // it. If the InputStream is not encrypted, then the password is ignored
         // (can be null).  The InputStream can be DER (raw ASN.1) or PEM (base64).


[14/30] directory-kerberos git commit: Added some javadocs

Posted by dr...@apache.org.
Added some javadocs


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

Branch: refs/heads/installation
Commit: 64404d7acb0aa9f9d45fea5d97212ba0679d12ba
Parents: f504a17
Author: Drankye <dr...@gmail.com>
Authored: Mon Feb 2 05:47:04 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Mon Feb 2 05:47:04 2015 +0800

----------------------------------------------------------------------
 .../org/apache/kerby/asn1/EncodingOption.java     |  7 +++----
 .../apache/kerby/asn1/type/AbstractAsn1Type.java  | 18 +++++++++++++++++-
 .../org/apache/kerby/asn1/type/Asn1Boolean.java   | 13 +++++++++++--
 .../apache/kerby/asn1/type/Asn1Collection.java    |  6 ++++--
 .../kerby/asn1/type/Asn1GeneralizedTime.java      |  3 +--
 .../kerby/asn1/type/Asn1ObjectIdentifier.java     |  6 ++++--
 .../org/apache/kerby/asn1/type/Asn1Simple.java    | 13 +++++++++++++
 7 files changed, 53 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/64404d7a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
index 87a6f27..bac3d19 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
@@ -24,8 +24,7 @@ package org.apache.kerby.asn1;
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-public enum EncodingOption
-{
+public enum EncodingOption {
     UNKNOWN(-1),
     PRIMITIVE(1),
     CONSTRUCTED(2),
@@ -53,7 +52,7 @@ public enum EncodingOption
 
 
     /**
-     * @return The integer value associated with the ENcodingOption instance
+     * @return The integer value associated with the EncodingOption instance
      */
     public int getValue() {
         return value;
@@ -129,7 +128,7 @@ public enum EncodingOption
 
     
     /**
-     * Get the EncodingOption given an interger value
+     * Get the EncodingOption given an integer value
      * @param value The value to translate
      * @return The associated EncodingOption
      */

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/64404d7a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
index f7df523..9605646 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
@@ -44,7 +44,7 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
     private T value;
 
     /**
-     *
+     * Default constructor, generally for decoding as a value container
      * @param tagClass
      * @param tagNo
      */
@@ -52,15 +52,31 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
         this(tagClass, tagNo, null);
     }
 
+    /**
+     * Default constructor, generally for decoding as a value container
+     * @param tagFlags
+     * @param tagNo
+     */
     public AbstractAsn1Type(int tagFlags, int tagNo) {
         this(tagFlags, tagNo, null);
     }
 
+    /**
+     * Constructor with a value, generally for encoding of the value
+     * @param tagFlags
+     * @param tagNo
+     * @param value
+     */
     public AbstractAsn1Type(int tagFlags, int tagNo, T value) {
         this(TagClass.fromTagFlags(tagFlags), tagNo, value);
         setTagFlags(tagFlags);
     }
 
+    /**
+     * Constructor with a value, generally for encoding of the value
+     * @param tagNo
+     * @param value
+     */
     public AbstractAsn1Type(TagClass tagClass, int tagNo, T value) {
         this.tagClass = tagClass;
         this.tagNo = tagNo;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/64404d7a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
index e5a6188..33ab327 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
@@ -24,18 +24,27 @@ import org.apache.kerby.asn1.UniversalTag;
 
 import java.io.IOException;
 
-public class Asn1Boolean extends Asn1Simple<Boolean>
-{
+/**
+ * ASN1 Boolean type
+ */
+public class Asn1Boolean extends Asn1Simple<Boolean> {
     private static final byte[] TRUE_BYTE = new byte[] { (byte)0xff };
     private static final byte[] FALSE_BYTE = new byte[] { (byte)0x00 };
 
     public static final Asn1Boolean TRUE = new Asn1Boolean(true);
     public static final Asn1Boolean FALSE = new Asn1Boolean(false);
 
+    /**
+     * Default constructor, generally for decoding as a container
+     */
     public Asn1Boolean() {
         this(null);
     }
 
+    /**
+     * Constructor with a value, generally for encoding of the value
+     * @param value
+     */
     public Asn1Boolean(Boolean value) {
         super(UniversalTag.BOOLEAN, value);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/64404d7a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
index 58dc6a3..5ea02f1 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
@@ -29,8 +29,10 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 
-public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>>
-{
+/**
+ * ASN1 complex type, may be better named.
+ */
+public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
     public Asn1Collection(TagClass tagClass, int tagNo) {
         super(tagClass, tagNo);
         setValue(new ArrayList<Asn1Item>());

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/64404d7a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java
index 9341f1a..4346f65 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1GeneralizedTime.java
@@ -29,8 +29,7 @@ import java.util.Date;
 import java.util.SimpleTimeZone;
 import java.util.TimeZone;
 
-public class Asn1GeneralizedTime extends Asn1Simple<Date>
-{
+public class Asn1GeneralizedTime extends Asn1Simple<Date> {
     public Asn1GeneralizedTime() {
         this(null);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/64404d7a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java
index e6a49ec..d12f6ca 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1ObjectIdentifier.java
@@ -24,8 +24,10 @@ import org.apache.kerby.asn1.UniversalTag;
 import java.math.BigInteger;
 import java.nio.ByteBuffer;
 
-public class Asn1ObjectIdentifier extends Asn1Simple<String>
-{
+/**
+ * ASN1 object identifier.
+ */
+public class Asn1ObjectIdentifier extends Asn1Simple<String> {
     public Asn1ObjectIdentifier() {
         this(null);
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/64404d7a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
index 11296be..6c4352c 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
@@ -27,13 +27,26 @@ import org.apache.kerby.asn1.UniversalTag;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+/**
+ * ASN1 simple type, of single value other than complex type of multiple values.
+ * @param <T>
+ */
 public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
     private byte[] bytes;
 
+    /**
+     * Default constructor, generally for decoding as a value container
+     * @param tagNo
+     */
     public Asn1Simple(UniversalTag tagNo) {
         this(tagNo, null);
     }
 
+    /**
+     * Constructor with a value, generally for encoding of the value
+     * @param tagNo
+     * @param value
+     */
     public Asn1Simple(UniversalTag tagNo, T value) {
         super(TagClass.UNIVERSAL, tagNo.getValue(), value);
         setEncodingOption(EncodingOption.PRIMITIVE);


[06/30] directory-kerberos git commit: DIRKRB-157 Value like 0x01 01 7F should not be decoded as TRUE with DER

Posted by dr...@apache.org.
DIRKRB-157 Value like 0x01 01 7F should not be decoded as TRUE with DER


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

Branch: refs/heads/installation
Commit: 377814b2dcfda1192d77cab8705fe7c750384810
Parents: 7fbebbc
Author: Drankye <dr...@gmail.com>
Authored: Sun Feb 1 10:19:05 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Sun Feb 1 10:19:05 2015 +0800

----------------------------------------------------------------------
 .../org/apache/kerby/asn1/EncodingOption.java   | 12 +++++++++++
 .../kerby/asn1/type/AbstractAsn1Type.java       |  2 +-
 .../org/apache/kerby/asn1/type/Asn1Boolean.java |  9 ++++++--
 .../org/apache/kerby/asn1/TestAsn1Boolean.java  | 22 +++++++++++++-------
 4 files changed, 34 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/377814b2/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
index c15f5ce..6bc8351 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EncodingOption.java
@@ -64,6 +64,10 @@ public enum EncodingOption
         return this == EXPLICIT;
     }
 
+    /**
+     * Is DER encoding ?
+     * @return true if using DER otherwise false
+     */
     public boolean isDer() {
         return this == DER;
     }
@@ -72,6 +76,14 @@ public enum EncodingOption
         return this == CER;
     }
 
+    /**
+     * Is BER encoding ?
+     * @return true if using BER otherwise false
+     */
+    public boolean isBer() {
+        return this == BER;
+    }
+
     public static EncodingOption fromValue(int value) {
         for (EncodingOption e : values()) {
             if (e.getValue() == value) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/377814b2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
index e06fcc9..f7df523 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
@@ -38,7 +38,7 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
     private TagClass tagClass = TagClass.UNKNOWN;
     private int tagNo = -1;
     private int tagFlags = -1;
-    private EncodingOption encodingOption = EncodingOption.UNKNOWN;
+    private EncodingOption encodingOption = EncodingOption.BER;
     private int encodingLen = -1;
     // The wrapped real value.
     private T value;

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/377814b2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
index 38e0d38..e5a6188 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
@@ -58,14 +58,19 @@ public class Asn1Boolean extends Asn1Simple<Boolean>
         setBytes(getValue() ? TRUE_BYTE : FALSE_BYTE);
     }
 
+    @Override
     protected void toValue() throws IOException {
         byte[] bytes = getBytes();
         if (bytes[0] == 0) {
             setValue(false);
-        } else if (bytes[0] == 0xff) {
+        } else if ((bytes[0] & 0xff) == 0xff) {
+            // DER only accepts 0xFF as true
             setValue(true);
-        } else {
+        } else if (getEncodingOption().isBer()) {
+            // BER accepts any non-zero as true
             setValue(true);
+        } else {
+            setValue(false);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/377814b2/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
index 536d1a9..691c8fe 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
@@ -30,27 +30,33 @@ public class TestAsn1Boolean {
 
     @Test
     public void testEncoding() {
-        testEncodingWith(true, "0x01 01 FF");
-        testEncodingWith(false, "0x01 01 00");
+        testEncodingWith(true, "0x01 01 FF", true);
+        testEncodingWith(false, "0x01 01 00", true);
     }
 
-    private void testEncodingWith(Boolean value, String expectedEncoding) {
+    private void testEncodingWith(Boolean value, String expectedEncoding,
+                                  boolean isDer) {
         byte[] expected = Util.hex2bytes(expectedEncoding);
         Asn1Boolean aValue = new Asn1Boolean(value);
-        aValue.setEncodingOption(EncodingOption.DER);
+        aValue.setEncodingOption(isDer ? EncodingOption.DER :
+                EncodingOption.BER);
         byte[] encodingBytes = aValue.encode();
         assertThat(encodingBytes).isEqualTo(expected);
     }
 
     @Test
     public void testDecoding() throws IOException {
-        testDecodingWith(true, "0x01 01 FF");
-        testDecodingWith(false, "0x01 01 00");
+        testDecodingWith(true, "0x01 01 FF", true);
+        testDecodingWith(false, "0x01 01 7F", true);
+        testDecodingWith(true, "0x01 01 7F", false);
+        testDecodingWith(false, "0x01 01 00", true);
     }
 
-    private void testDecodingWith(Boolean expectedValue, String content) throws IOException {
+    private void testDecodingWith(Boolean expectedValue, String content,
+                                  boolean isDer) throws IOException {
         Asn1Boolean decoded = new Asn1Boolean();
-        decoded.setEncodingOption(EncodingOption.DER);
+        decoded.setEncodingOption(isDer ? EncodingOption.DER :
+                EncodingOption.BER);
         decoded.decode(Util.hex2bytes(content));
         assertThat(decoded.getValue()).isEqualTo(expectedValue);
     }


[02/30] directory-kerberos git commit: DIRKRB-154 Switching to AssertJ framework for unit tests in lib module

Posted by dr...@apache.org.
DIRKRB-154 Switching to AssertJ framework for unit tests in lib module


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

Branch: refs/heads/installation
Commit: 7c8dc370e5765165f53fcf44659fe9db6a977a91
Parents: 4a65c58
Author: hazel <li...@foxmail.com>
Authored: Fri Jan 30 10:46:12 2015 +0800
Committer: hazel <li...@foxmail.com>
Committed: Fri Jan 30 10:46:12 2015 +0800

----------------------------------------------------------------------
 .../java/org/apache/kerby/config/ConfTest.java  | 34 ++++++++++----------
 .../org/apache/kerby/config/ConfigImplTest.java | 19 +++++------
 .../org/apache/kerby/config/IniConfigTest.java  | 13 ++++----
 .../java/org/apache/kerby/event/TestBuffer.java |  7 ++--
 .../kerby/event/network/TestNetworkClient.java  |  7 ++--
 .../kerby/event/network/TestNetworkServer.java  |  7 ++--
 .../apache/kerby/event/tcp/TestTcpClient.java   |  5 +--
 .../apache/kerby/event/tcp/TestTcpServer.java   |  5 +--
 .../apache/kerby/event/udp/TestUdpClient.java   |  5 +--
 .../apache/kerby/event/udp/TestUdpServer.java   |  5 +--
 .../java/org/apache/kerby/pki/PkixTest.java     |  7 ++--
 lib/pom.xml                                     |  6 ++++
 12 files changed, 68 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfTest.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfTest.java b/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfTest.java
index 0d6c74a..185fe3f 100644
--- a/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfTest.java
+++ b/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfTest.java
@@ -19,13 +19,14 @@
  */
 package org.apache.kerby.config;
 
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * The test is base on the Conf level.
  * We hope users use the Conf object only, and don't need to care about its internal implementation.
@@ -44,9 +45,9 @@ public class ConfTest {
 
         Conf conf = new Conf();
         conf.addMapConfig(mapConfig);
-        Assert.assertEquals(strProp, conf.getString("strProp"));
-        Assert.assertEquals(intProp, conf.getInt("intProp"));
-        Assert.assertEquals(boolProp, conf.getBoolean("boolProp"));
+        assertThat(conf.getString("strProp")).isEqualTo(strProp);
+        assertThat(conf.getInt("intProp")).isEqualTo(intProp);
+        assertThat(conf.getBoolean("boolProp")).isEqualTo(boolProp);
     }
 
     @Test
@@ -61,9 +62,9 @@ public class ConfTest {
 
         Conf conf = new Conf();
         conf.addPropertiesConfig(properties);
-        Assert.assertEquals(strProp, conf.getString("strProp"));
-        Assert.assertEquals(intProp, conf.getInt("intProp"));
-        Assert.assertEquals(boolProp, conf.getBoolean("boolProp"));
+        assertThat(conf.getString("strProp")).isEqualTo(strProp);
+        assertThat(conf.getInt("intProp")).isEqualTo(intProp);
+        assertThat(conf.getBoolean("boolProp")).isEqualTo(boolProp);
     }
 
     /**
@@ -86,11 +87,11 @@ public class ConfTest {
         Conf conf = new Conf();
         conf.addMapConfig(mapConfig);
         conf.addPropertiesConfig(properties);
-        Assert.assertNull(conf.getConfig("mapConfig"));
-        Assert.assertEquals(mapStrProp, conf.getString("mapStrProp"));
-        Assert.assertEquals(propertiesStrProp, conf.getString("propertiesStrProp"));
-        Assert.assertEquals(intProp, conf.getInt("intProp"));
-        Assert.assertEquals(boolProp, conf.getBoolean("boolProp"));
+        assertThat(conf.getConfig("mapConfig")).isNull();
+        assertThat(conf.getString("mapStrProp")).isEqualTo(mapStrProp);
+        assertThat(conf.getString("propertiesStrProp")).isEqualTo(propertiesStrProp);
+        assertThat(conf.getInt("intProp")).isEqualTo(intProp);
+        assertThat(conf.getBoolean("boolProp")).isEqualTo(boolProp);
     }
 
     static enum TestConfKey implements ConfigKey {
@@ -118,14 +119,13 @@ public class ConfTest {
     @Test
     public void testConfKey() {
         Conf conf = new Conf();
-        Assert.assertEquals(conf.getString(TestConfKey.ADDRESS),
-                TestConfKey.ADDRESS.getDefaultValue());
+        assertThat(conf.getString(TestConfKey.ADDRESS)).isEqualTo(TestConfKey.ADDRESS.getDefaultValue());
         Map<String, String> mapConfig = new HashMap<String, String>();
         String myAddress = "www.google.com";
         mapConfig.put(TestConfKey.ADDRESS.getPropertyKey(), myAddress);
         conf.addMapConfig(mapConfig);
-        Assert.assertEquals(myAddress, conf.getString(TestConfKey.ADDRESS));
-        Assert.assertEquals(TestConfKey.PORT.getDefaultValue(), conf.getInt(TestConfKey.PORT));
-        Assert.assertEquals(TestConfKey.ENABLE.getDefaultValue(), conf.getBoolean(TestConfKey.ENABLE));
+        assertThat(conf.getString(TestConfKey.ADDRESS)).isEqualTo(myAddress);
+        assertThat(conf.getInt(TestConfKey.PORT)).isEqualTo(TestConfKey.PORT.getDefaultValue());
+        assertThat(conf.getBoolean(TestConfKey.ENABLE)).isEqualTo(TestConfKey.ENABLE.getDefaultValue());
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfigImplTest.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfigImplTest.java b/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfigImplTest.java
index 2cfc3d5..d029d96 100644
--- a/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfigImplTest.java
+++ b/lib/kerby-config/src/test/java/org/apache/kerby/config/ConfigImplTest.java
@@ -19,9 +19,10 @@
  */
 package org.apache.kerby.config;
 
-import org.junit.Assert;
 import org.junit.Test;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  * The test is on ConfigImpl level.
  * ConfigImpl is the internal implementation of Conf, only visual by developers.
@@ -46,17 +47,17 @@ public class ConfigImplTest {
         rootConfig.set("logging", sectionB);
         sectionB.set("kdc", "FILE:/var/log/krb5kdc.log");
 
-        Assert.assertEquals("true", rootConfig.getString("globalConfig"));
-        Assert.assertNull(rootConfig.getString("default_realm"));//section config should not get the global value
+        assertThat(rootConfig.getString("globalConfig")).isEqualTo("true");
+        assertThat(rootConfig.getString("default_realm")).isNull();//section config should not get the global value
 
         Config subA = rootConfig.getConfig("libdefaults");
-        Assert.assertEquals("EXAMPLE.COM", subA.getString("default_realm"));
-        Assert.assertNull(subA.getString("globalConfig"));
-        Assert.assertNull(subA.getString("kdc"));
+        assertThat(subA.getString("default_realm")).isEqualTo("EXAMPLE.COM");
+        assertThat(subA.getString("globalConfig")).isNull();
+        assertThat(subA.getString("kdc")).isNull();
 
         Config subB = rootConfig.getConfig("logging");
-        Assert.assertEquals("FILE:/var/log/krb5kdc.log", subB.getString("kdc"));
-        Assert.assertNull(subB.getString("globalConfig"));
-        Assert.assertNull(subB.getBoolean("forwardable"));
+        assertThat(subB.getString("kdc")).isEqualTo("FILE:/var/log/krb5kdc.log");
+        assertThat(subB.getString("globalConfig")).isNull();
+        assertThat(subB.getBoolean("forwardable")).isNull();
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-config/src/test/java/org/apache/kerby/config/IniConfigTest.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/test/java/org/apache/kerby/config/IniConfigTest.java b/lib/kerby-config/src/test/java/org/apache/kerby/config/IniConfigTest.java
index a6a527e..3e0f04e 100644
--- a/lib/kerby-config/src/test/java/org/apache/kerby/config/IniConfigTest.java
+++ b/lib/kerby-config/src/test/java/org/apache/kerby/config/IniConfigTest.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.config;
 
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.File;
@@ -27,6 +26,8 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class IniConfigTest {
 
     private final static String TEST_DIR = new File(System.getProperty(
@@ -62,15 +63,15 @@ public class IniConfigTest {
         Conf conf = new Conf();
         conf.addIniConfig(TEST_FILE);
 
-        Assert.assertEquals("FILE:/var/log/krb5libs.log", conf.getString("default"));
-        Assert.assertNull(conf.getString("#note"));//Comments should be ignored when loading.
+        assertThat(conf.getString("default")).isEqualTo("FILE:/var/log/krb5libs.log");
+        assertThat(conf.getString("#note")).isNull();//Comments should be ignored when loading.
 
         Config config = conf.getConfig("libdefaults");
-        Assert.assertFalse(config.getBoolean("dns_lookup_realm"));
-        Assert.assertTrue(config.getBoolean("forwardable"));
+        assertThat(config.getBoolean("dns_lookup_realm")).isFalse();
+        assertThat(config.getBoolean("forwardable")).isTrue();
 
         Config config1 = conf.getConfig("lib1");
-        Assert.assertTrue(config1.getBoolean("dns_lookup_realm"));
+        assertThat(config1.getBoolean("dns_lookup_realm")).isTrue();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-event/src/test/java/org/apache/kerby/event/TestBuffer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/TestBuffer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/TestBuffer.java
index 704afa9..d7b0778 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/TestBuffer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/TestBuffer.java
@@ -20,11 +20,12 @@
 package org.apache.kerby.event;
 
 import org.apache.kerby.transport.buffer.RecvBuffer;
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class TestBuffer {
 
     @Test
@@ -36,7 +37,7 @@ public class TestBuffer {
         RecvBuffer testBuffer = new RecvBuffer();
         testBuffer.write(testMessage);
         tmp = testBuffer.readMostBytes();
-        Assert.assertArrayEquals(testString.getBytes(), tmp.array());
+        assertThat(tmp.array()).isEqualTo(testString.getBytes());
 
         int nTimes = 10;
         testBuffer.clear();
@@ -45,6 +46,6 @@ public class TestBuffer {
         }
         int expectedBytes = nTimes * testMessage.limit();
         tmp = testBuffer.readMostBytes();
-        Assert.assertEquals(expectedBytes, tmp.limit());
+        assertThat(tmp.limit()).isEqualTo(expectedBytes);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
index 7074a81..10471eb 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.event.network;
 
-import junit.framework.Assert;
 import org.apache.kerby.event.Event;
 import org.apache.kerby.event.EventHandler;
 import org.apache.kerby.event.EventHub;
@@ -43,6 +42,8 @@ import java.nio.channels.*;
 import java.util.Iterator;
 import java.util.Set;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class TestNetworkClient extends TestNetworkBase {
 
     private EventHub eventHub;
@@ -196,13 +197,13 @@ public class TestNetworkClient extends TestNetworkBase {
         Transport transport = ((TransportEvent) event).getTransport();
         transport.sendMessage(ByteBuffer.wrap(TEST_MESSAGE.getBytes()));
         event = eventWaiter.waitEvent(TestEventType.FINISHED);
-        Assert.assertTrue((Boolean) event.getEventData());
+        assertThat((Boolean) event.getEventData()).isTrue();
 
         event = eventWaiter.waitEvent(TransportEventType.NEW_TRANSPORT);
         transport = ((TransportEvent) event).getTransport();
         transport.sendMessage(ByteBuffer.wrap(TEST_MESSAGE.getBytes()));
         event = eventWaiter.waitEvent(TestEventType.FINISHED);
-        Assert.assertTrue((Boolean) event.getEventData());
+        assertThat((Boolean) event.getEventData()).isTrue();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
index eefc7a3..09a8f0e 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.event.network;
 
-import junit.framework.Assert;
 import org.apache.kerby.event.EventHandler;
 import org.apache.kerby.event.EventHub;
 import org.apache.kerby.transport.MessageHandler;
@@ -37,6 +36,8 @@ import java.nio.ByteBuffer;
 import java.nio.channels.DatagramChannel;
 import java.nio.channels.SocketChannel;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class TestNetworkServer extends TestNetworkBase {
 
     private EventHub eventHub;
@@ -86,7 +87,7 @@ public class TestNetworkServer extends TestNetworkBase {
         socketChannel.read(byteBuffer);
         byteBuffer.flip();
         clientRecvedMessage = recvBuffer2String(byteBuffer);
-        Assert.assertEquals(TEST_MESSAGE, clientRecvedMessage);
+        assertThat(clientRecvedMessage).isEqualTo(TEST_MESSAGE);
     }
 
     private void testUdpTransport() throws IOException, InterruptedException {
@@ -100,7 +101,7 @@ public class TestNetworkServer extends TestNetworkBase {
         socketChannel.receive(byteBuffer);
         byteBuffer.flip();
         clientRecvedMessage = recvBuffer2String(byteBuffer);
-        Assert.assertEquals(TEST_MESSAGE, clientRecvedMessage);
+        assertThat(clientRecvedMessage).isEqualTo(TEST_MESSAGE);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
index b0bd3ff..5f03c99 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.event.tcp;
 
-import junit.framework.Assert;
 import org.apache.kerby.event.Event;
 import org.apache.kerby.event.EventHandler;
 import org.apache.kerby.event.EventHub;
@@ -46,6 +45,8 @@ import java.nio.channels.SocketChannel;
 import java.util.Iterator;
 import java.util.Set;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class TestTcpClient extends TestTcpBase {
 
     private EventHub eventHub;
@@ -150,7 +151,7 @@ public class TestTcpClient extends TestTcpBase {
         transport.sendMessage(ByteBuffer.wrap(TEST_MESSAGE.getBytes()));
 
         event = eventWaiter.waitEvent(TestEventType.FINISHED);
-        Assert.assertTrue((Boolean) event.getEventData());
+        assertThat((Boolean) event.getEventData()).isTrue();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
index 43ebe20..3fe791a 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.event.tcp;
 
-import junit.framework.Assert;
 import org.apache.kerby.event.EventHandler;
 import org.apache.kerby.event.EventHub;
 import org.apache.kerby.transport.Acceptor;
@@ -37,6 +36,8 @@ import java.net.SocketAddress;
 import java.nio.ByteBuffer;
 import java.nio.channels.SocketChannel;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class TestTcpServer extends TestTcpBase {
 
     private EventHub eventHub;
@@ -80,7 +81,7 @@ public class TestTcpServer extends TestTcpBase {
         byteBuffer.flip();
         clientRecvedMessage = recvBuffer2String(byteBuffer);
 
-        Assert.assertEquals(TEST_MESSAGE, clientRecvedMessage);
+        assertThat(clientRecvedMessage).isEqualTo(TEST_MESSAGE);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
index f460b60..8c0cd30 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.event.udp;
 
-import junit.framework.Assert;
 import org.apache.kerby.event.Event;
 import org.apache.kerby.event.EventHandler;
 import org.apache.kerby.event.EventHub;
@@ -45,6 +44,8 @@ import java.nio.channels.Selector;
 import java.util.Iterator;
 import java.util.Set;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class TestUdpClient extends TestUdpBase {
 
     private EventHub eventHub;
@@ -139,7 +140,7 @@ public class TestUdpClient extends TestUdpBase {
         transport.sendMessage(ByteBuffer.wrap(TEST_MESSAGE.getBytes()));
 
         event = eventWaiter.waitEvent(TestEventType.FINISHED);
-        Assert.assertTrue((Boolean) event.getEventData());
+        assertThat((Boolean) event.getEventData()).isTrue();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
index 1402d9e..188e6de 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.event.udp;
 
-import junit.framework.Assert;
 import org.apache.kerby.event.EventHandler;
 import org.apache.kerby.event.EventHub;
 import org.apache.kerby.transport.Acceptor;
@@ -37,6 +36,8 @@ import java.net.SocketAddress;
 import java.nio.ByteBuffer;
 import java.nio.channels.DatagramChannel;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 public class TestUdpServer extends TestUdpBase {
 
     private EventHub eventHub;
@@ -79,7 +80,7 @@ public class TestUdpServer extends TestUdpBase {
         byteBuffer.flip();
         clientRecvedMessage = recvBuffer2String(byteBuffer);
 
-        Assert.assertEquals(TEST_MESSAGE, clientRecvedMessage);
+        assertThat(clientRecvedMessage).isEqualTo(TEST_MESSAGE);
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/kerby-pkix/src/test/java/org/apache/kerby/pki/PkixTest.java
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/test/java/org/apache/kerby/pki/PkixTest.java b/lib/kerby-pkix/src/test/java/org/apache/kerby/pki/PkixTest.java
index f827247..2b44e1c 100644
--- a/lib/kerby-pkix/src/test/java/org/apache/kerby/pki/PkixTest.java
+++ b/lib/kerby-pkix/src/test/java/org/apache/kerby/pki/PkixTest.java
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.pki;
 
-import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -30,6 +29,8 @@ import java.security.cert.Certificate;
 import java.security.cert.CertificateException;
 import java.util.List;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
 /**
  openssl genrsa -out cakey.pem 2048
  openssl req -key cakey.pem -new -x509 -out cacert.pem -days 3650
@@ -47,7 +48,7 @@ public class PkixTest {
         List<Certificate> certs = Pkix.getCerts(res);
         Certificate userCert = certs.iterator().next();
 
-        Assert.assertNotNull(userCert);
+        assertThat(userCert).isNotNull();
     }
 
     @Test
@@ -55,6 +56,6 @@ public class PkixTest {
         InputStream res = getClass().getResourceAsStream("/userkey.pem");
         PrivateKey key = Pkix.getPrivateKey(res, null);
 
-        Assert.assertNotNull(key);
+        assertThat(key).isNotNull();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7c8dc370/lib/pom.xml
----------------------------------------------------------------------
diff --git a/lib/pom.xml b/lib/pom.xml
index 149d45e..8a1cd49 100644
--- a/lib/pom.xml
+++ b/lib/pom.xml
@@ -40,6 +40,12 @@
       <artifactId>junit</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>${assertj.version}</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>


[05/30] directory-kerberos git commit: Refined some codes related to encoding option

Posted by dr...@apache.org.
Refined some codes related to encoding option


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

Branch: refs/heads/installation
Commit: 7fbebbcdf6477310cdfc29e90f2ed50ed4fe0be8
Parents: 0228e16
Author: Drankye <dr...@gmail.com>
Authored: Sun Feb 1 09:55:26 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Sun Feb 1 09:55:26 2015 +0800

----------------------------------------------------------------------
 .../apache/kerby/asn1/type/AbstractAsn1Type.java    | 14 +++++++++++++-
 .../org/apache/kerby/asn1/type/Asn1Tagging.java     | 16 ++++++++--------
 2 files changed, 21 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7fbebbcd/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
index 99b54fb..e06fcc9 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/AbstractAsn1Type.java
@@ -38,7 +38,7 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
     private TagClass tagClass = TagClass.UNKNOWN;
     private int tagNo = -1;
     private int tagFlags = -1;
-    protected EncodingOption encodingOption = EncodingOption.UNKNOWN;
+    private EncodingOption encodingOption = EncodingOption.UNKNOWN;
     private int encodingLen = -1;
     // The wrapped real value.
     private T value;
@@ -67,10 +67,22 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
         this.value = value;
     }
 
+    /**
+     * Set encoding option
+     * @param encodingOption
+     */
     public void setEncodingOption(EncodingOption encodingOption) {
         this.encodingOption = encodingOption;
     }
 
+    /**
+     * Get encoding option
+     * @return encoding option
+     */
+    public EncodingOption getEncodingOption() {
+        return this.encodingOption;
+    }
+
     public T getValue() {
         return value;
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/7fbebbcd/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
index 2b2b97f..9f56b39 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
@@ -47,9 +47,9 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
     @Override
     protected int encodingBodyLength() {
         AbstractAsn1Type value = (AbstractAsn1Type) getValue();
-        if (encodingOption.isExplicit()) {
+        if (getEncodingOption().isExplicit()) {
             return value.encodingLength();
-        } else if (encodingOption.isImplicit()) {
+        } else if (getEncodingOption().isImplicit()) {
             return value.encodingBodyLength();
         } else {
             throw new RuntimeException("Invalid util option, only allowing explicit/implicit");
@@ -58,9 +58,9 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
 
     @Override
     public boolean isConstructed() {
-        if (encodingOption.isExplicit()) {
+        if (getEncodingOption().isExplicit()) {
             return true;
-        } else if (encodingOption.isImplicit()) {
+        } else if (getEncodingOption().isImplicit()) {
             AbstractAsn1Type value = (AbstractAsn1Type) getValue();
             return value.isConstructed();
         }
@@ -70,9 +70,9 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
     @Override
     protected void encodeBody(ByteBuffer buffer) {
         AbstractAsn1Type value = (AbstractAsn1Type) getValue();
-        if (encodingOption.isExplicit()) {
+        if (getEncodingOption().isExplicit()) {
             value.encode(buffer);
-        } else if (encodingOption.isImplicit()) {
+        } else if (getEncodingOption().isImplicit()) {
             value.encodeBody(buffer);
         } else {
             throw new RuntimeException("Invalid util option, only allowing explicit/implicit");
@@ -82,9 +82,9 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
     @Override
     protected void decodeBody(LimitedByteBuffer content) throws IOException {
         AbstractAsn1Type value = (AbstractAsn1Type) getValue();
-        if (encodingOption.isExplicit()) {
+        if (getEncodingOption().isExplicit()) {
             value.decode(content);
-        } else if (encodingOption.isImplicit()) {
+        } else if (getEncodingOption().isImplicit()) {
             value.decodeBody(content);
         } else {
             throw new RuntimeException("Invalid util option, only allowing explicit/implicit");


[30/30] directory-kerberos git commit: Merged with master

Posted by dr...@apache.org.
Merged with master


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

Branch: refs/heads/installation
Commit: 63099eb81c3905d3d6bb57541cd197e99f9d7d4d
Parents: e27df20 02ea20f
Author: Drankye <dr...@gmail.com>
Authored: Mon Feb 9 22:24:43 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Mon Feb 9 22:24:43 2015 +0800

----------------------------------------------------------------------
 3rdparty/not-yet-commons-ssl/pom.xml            |   7 +-
 3rdparty/pom.xml                                |  23 -
 README.md                                       |  36 +-
 benchmark/pom.xml                               |  23 +-
 kerby-asn1/README.md                            |   2 +-
 .../java/org/apache/kerby/asn1/Asn1Dump.java    |   6 +-
 .../java/org/apache/kerby/asn1/Asn1Factory.java |  13 +
 .../org/apache/kerby/asn1/Asn1InputBuffer.java  |  27 +-
 .../org/apache/kerby/asn1/Asn1OutputBuffer.java |   2 +-
 .../org/apache/kerby/asn1/EncodingOption.java   | 180 ++++++--
 .../java/org/apache/kerby/asn1/TagClass.java    |  25 ++
 .../org/apache/kerby/asn1/TaggingOption.java    |  50 ++-
 .../org/apache/kerby/asn1/UniversalTag.java     |  36 +-
 .../kerby/asn1/type/AbstractAsn1Type.java       |  86 +++-
 .../org/apache/kerby/asn1/type/Asn1Any.java     |   6 +-
 .../apache/kerby/asn1/type/Asn1BmpString.java   |   6 +-
 .../org/apache/kerby/asn1/type/Asn1Boolean.java |  22 +-
 .../org/apache/kerby/asn1/type/Asn1Choice.java  |  24 +-
 .../apache/kerby/asn1/type/Asn1Collection.java  |   8 +-
 .../kerby/asn1/type/Asn1CollectionType.java     |  28 +-
 .../kerby/asn1/type/Asn1GeneralizedTime.java    |   7 +-
 .../org/apache/kerby/asn1/type/Asn1Item.java    |  16 +-
 .../kerby/asn1/type/Asn1ObjectIdentifier.java   |  10 +-
 .../org/apache/kerby/asn1/type/Asn1Simple.java  |  16 +-
 .../org/apache/kerby/asn1/type/Asn1Tagging.java |  39 +-
 .../org/apache/kerby/asn1/type/Asn1Type.java    |  80 ++++
 .../org/apache/kerby/asn1/type/Asn1UtcTime.java |   3 +-
 .../kerby/asn1/type/TaggingCollection.java      |   8 +-
 .../org/apache/kerby/asn1/PersonnelRecord.java  |  10 +-
 .../org/apache/kerby/asn1/TestAsn1Boolean.java  |  28 +-
 .../apache/kerby/asn1/TestAsn1Collection.java   |   4 +-
 .../org/apache/kerby/asn1/TestAsn1Integer.java  |   4 +-
 .../kerby/asn1/TestAsn1ObjectIdentifier.java    |   4 +-
 .../org/apache/kerby/asn1/TestAsn1UtcTime.java  |   4 +-
 .../apache/kerby/asn1/TestTaggingEncoding.java  |  25 +-
 .../test/java/org/apache/kerby/asn1/Util.java   | 105 ++++-
 kerby-kdc/pom.xml                               |   1 +
 .../kerby/kerberos/kerb/client/KrbContext.java  |   2 +-
 .../kerberos/kerb/client/TestKrbConfigLoad.java |  40 +-
 .../kerberos/kerb/common/EncryptionUtil.java    |   8 +-
 .../kerberos/kerb/common/KrbConfHelper.java     |   3 +-
 .../kerberos/kerb/common/KrbErrorUtil.java      |   2 +-
 .../kerb/preauth/pkinit/PkinitIdenity.java      |   3 +-
 kerby-kerb/kerb-core-test/pom.xml               |   6 +-
 .../src/main/resources/aes128-kerberos-data     | Bin 1712 -> 0 bytes
 .../src/main/resources/aes128-key-data          |   1 -
 .../src/main/resources/aes128-spnego-data       | Bin 1778 -> 0 bytes
 .../src/main/resources/aes256-kerberos-data     | Bin 1744 -> 0 bytes
 .../src/main/resources/aes256-key-data          | Bin 32 -> 0 bytes
 .../src/main/resources/aes256-spnego-data       | Bin 1810 -> 0 bytes
 .../src/main/resources/asrep.token              | Bin 1241 -> 0 bytes
 .../src/main/resources/asreq.token              | Bin 291 -> 0 bytes
 .../src/main/resources/des-kerberos-data        | Bin 1773 -> 0 bytes
 .../src/main/resources/des-key-data             |   1 -
 .../src/main/resources/des-pac-data             | Bin 1072 -> 0 bytes
 .../src/main/resources/des-spnego-data          | Bin 1839 -> 0 bytes
 .../src/main/resources/exceptions.properties    |  55 ---
 .../src/main/resources/rc4-kerberos-data        | Bin 1735 -> 0 bytes
 .../src/main/resources/rc4-key-data             |   1 -
 .../src/main/resources/rc4-pac-data             | Bin 1048 -> 0 bytes
 .../src/main/resources/rc4-spnego-data          | Bin 1801 -> 0 bytes
 .../src/main/resources/server.keytab            | Bin 387 -> 0 bytes
 .../src/main/resources/tgsrep.token             | Bin 1189 -> 0 bytes
 .../src/main/resources/tgsreq.token             | Bin 1211 -> 0 bytes
 .../kerb/codec/kerberos/KerberosApRequest.java  |   2 +-
 .../codec/kerberos/KerberosCredentials.java     |   3 +-
 .../kerb/codec/kerberos/KerberosToken.java      |   6 +-
 .../kerberos/kerb/codec/spnego/SpnegoToken.java |   4 +-
 .../kerberos/kerb/codec/test/CodecTest.java     |  11 +-
 .../kerberos/kerb/codec/test/CodecTestUtil.java |  13 +-
 .../kerb/codec/test/TestAsRepCodec.java         |  33 +-
 .../kerb/codec/test/TestAsReqCodec.java         |  57 +--
 .../kerberos/kerb/codec/test/TestKerberos.java  |  72 +--
 .../kerberos/kerb/codec/test/TestSpnego.java    |  83 ++--
 .../kerb/codec/test/TestTgsRepCodec.java        |  31 +-
 .../kerb/codec/test/TestTgsReqCodec.java        |  44 +-
 .../src/test/resources/aes128-kerberos-data     | Bin 0 -> 1712 bytes
 .../src/test/resources/aes128-key-data          |   1 +
 .../src/test/resources/aes128-spnego-data       | Bin 0 -> 1778 bytes
 .../src/test/resources/aes256-kerberos-data     | Bin 0 -> 1744 bytes
 .../src/test/resources/aes256-key-data          | Bin 0 -> 32 bytes
 .../src/test/resources/aes256-spnego-data       | Bin 0 -> 1810 bytes
 .../src/test/resources/asrep.token              | Bin 0 -> 1241 bytes
 .../src/test/resources/asreq.token              | Bin 0 -> 291 bytes
 .../src/test/resources/des-kerberos-data        | Bin 0 -> 1773 bytes
 .../src/test/resources/des-key-data             |   1 +
 .../src/test/resources/des-pac-data             | Bin 0 -> 1072 bytes
 .../src/test/resources/des-spnego-data          | Bin 0 -> 1839 bytes
 .../src/test/resources/exceptions.properties    |  55 +++
 .../src/test/resources/rc4-kerberos-data        | Bin 0 -> 1735 bytes
 .../src/test/resources/rc4-key-data             |   1 +
 .../src/test/resources/rc4-pac-data             | Bin 0 -> 1048 bytes
 .../src/test/resources/rc4-spnego-data          | Bin 0 -> 1801 bytes
 .../src/test/resources/server.keytab            | Bin 0 -> 387 bytes
 .../src/test/resources/tgsrep.token             | Bin 0 -> 1189 bytes
 .../src/test/resources/tgsreq.token             | Bin 0 -> 1211 bytes
 kerby-kerb/kerb-core/pom.xml                    |   2 +-
 .../kerby/kerberos/kerb/KrbErrorException.java  |   4 +
 .../kerby/kerberos/kerb/KrbException.java       |   5 +
 .../kerby/kerberos/kerb/codec/KrbCodec.java     |   4 +-
 .../kerby/kerberos/kerb/spec/KerberosTime.java  |  10 +-
 .../kerberos/kerb/spec/KrbAppSequenceType.java  |   3 +-
 .../kerberos/kerb/spec/KrbSequenceType.java     |   3 +-
 .../kerberos/kerb/spec/common/CheckSum.java     |  12 +-
 .../kerb/spec/common/EncryptedData.java         |  12 +-
 .../kerb/spec/common/EncryptionKey.java         |  16 +-
 .../kerb/spec/common/PrincipalName.java         |   2 +-
 .../kerb/crypto/AbstractCryptoTypeHandler.java  |   3 +-
 .../kerby/kerberos/kerb/crypto/BytesUtil.java   | 183 --------
 .../kerby/kerberos/kerb/crypto/Camellia.java    | 250 -----------
 .../kerby/kerberos/kerb/crypto/CamelliaKey.java | 433 -------------------
 .../kerberos/kerb/crypto/CheckSumHandler.java   |  14 +-
 .../apache/kerby/kerberos/kerb/crypto/Cmac.java | 178 --------
 .../kerby/kerberos/kerb/crypto/Confounder.java  |  33 --
 .../kerby/kerberos/kerb/crypto/Crc32.java       |  78 ----
 .../apache/kerby/kerberos/kerb/crypto/Des.java  |  84 ----
 .../kerberos/kerb/crypto/EncryptionHandler.java |  21 +-
 .../apache/kerby/kerberos/kerb/crypto/Hmac.java |  82 ----
 .../apache/kerby/kerberos/kerb/crypto/Md4.java  | 338 ---------------
 .../kerby/kerberos/kerb/crypto/Nfold.java       | 102 -----
 .../kerby/kerberos/kerb/crypto/Nonce.java       |  32 --
 .../kerby/kerberos/kerb/crypto/Pbkdf.java       |  40 --
 .../kerby/kerberos/kerb/crypto/Random.java      |  33 --
 .../apache/kerby/kerberos/kerb/crypto/Rc4.java  |  63 ---
 .../cksum/AbstractCheckSumTypeHandler.java      |   9 +-
 .../cksum/AbstractKeyedCheckSumTypeHandler.java |   6 +-
 .../kerb/crypto/cksum/CmacKcCheckSum.java       |   2 +-
 .../crypto/cksum/ConfounderedDesCheckSum.java   |   2 +-
 .../kerb/crypto/cksum/HashProvider.java         |   7 +-
 .../kerb/crypto/cksum/HmacKcCheckSum.java       |   2 +-
 .../kerb/crypto/cksum/HmacMd5Rc4CheckSum.java   |   4 +-
 .../kerberos/kerb/crypto/cksum/KcCheckSum.java  |   5 +-
 .../kerb/crypto/cksum/Md5HmacRc4CheckSum.java   |   5 +-
 .../crypto/cksum/provider/Crc32Provider.java    |   2 +-
 .../kerb/crypto/cksum/provider/Md4Provider.java |   2 +-
 .../kerberos/kerb/crypto/enc/DesCbcEnc.java     |   2 +-
 .../kerb/crypto/enc/EncryptProvider.java        |  10 +-
 .../kerberos/kerb/crypto/enc/KeKiCmacEnc.java   |   2 +-
 .../kerby/kerberos/kerb/crypto/enc/KeKiEnc.java |   4 +-
 .../kerb/crypto/enc/KeKiHmacSha1Enc.java        |   2 +-
 .../kerberos/kerb/crypto/enc/Rc4HmacEnc.java    |   8 +-
 .../enc/provider/AbstractEncryptProvider.java   |  14 -
 .../crypto/enc/provider/CamelliaProvider.java   |   2 +-
 .../kerb/crypto/key/AbstractKeyMaker.java       |   2 +-
 .../kerberos/kerb/crypto/key/AesKeyMaker.java   |   4 +-
 .../kerb/crypto/key/CamelliaKeyMaker.java       |   8 +-
 .../kerberos/kerb/crypto/key/Des3KeyMaker.java  |   4 +-
 .../kerberos/kerb/crypto/key/DesKeyMaker.java   |   4 +-
 .../kerberos/kerb/crypto/key/DkKeyMaker.java    |   2 +-
 .../kerberos/kerb/crypto/util/BytesUtil.java    | 183 ++++++++
 .../kerberos/kerb/crypto/util/Camellia.java     | 250 +++++++++++
 .../kerberos/kerb/crypto/util/CamelliaKey.java  | 433 +++++++++++++++++++
 .../kerby/kerberos/kerb/crypto/util/Cmac.java   | 178 ++++++++
 .../kerberos/kerb/crypto/util/Confounder.java   |  33 ++
 .../kerby/kerberos/kerb/crypto/util/Crc32.java  |  78 ++++
 .../kerby/kerberos/kerb/crypto/util/Des.java    |  84 ++++
 .../kerby/kerberos/kerb/crypto/util/Hmac.java   |  82 ++++
 .../kerby/kerberos/kerb/crypto/util/Md4.java    | 338 +++++++++++++++
 .../kerby/kerberos/kerb/crypto/util/Nfold.java  | 102 +++++
 .../kerby/kerberos/kerb/crypto/util/Nonce.java  |  32 ++
 .../kerby/kerberos/kerb/crypto/util/Pbkdf.java  |  40 ++
 .../kerby/kerberos/kerb/crypto/util/Random.java |  33 ++
 .../kerby/kerberos/kerb/crypto/util/Rc4.java    |  63 +++
 .../src/main/resources/kdc-krb5.conf            |  25 --
 .../kerb-crypto/src/main/resources/kdc.ldiff    |  46 --
 .../kerberos/kerb/crypto/CamelliaEncTest.java   |   6 +-
 .../kerberos/kerb/crypto/CheckSumsTest.java     |   2 +-
 .../kerby/kerberos/kerb/crypto/CmacTest.java    |  12 +-
 .../kerby/kerberos/kerb/crypto/Crc32Test.java   |   6 +-
 .../kerberos/kerb/crypto/DecryptionTest.java    |   9 +-
 .../kerberos/kerb/crypto/DesKeyMakerTest.java   |   9 +-
 .../kerberos/kerb/crypto/KeyDeriveTest.java     |   5 +-
 .../kerberos/kerb/crypto/String2keyTest.java    |   8 +-
 .../kerby/kerberos/kerb/server/KdcTest.java     |   9 +-
 .../kerberos/kerb/server/WithCertKdcTest.java   |  13 +-
 .../kerberos/kerb/server/WithTokenKdcTest.java  |  11 +-
 .../kerberos/kerb/server/TestKdcConfigLoad.java |  25 +-
 .../kerby/kerberos/kerb/KrbOutputStream.java    |  12 +-
 .../kerb/ccache/CredCacheOutputStream.java      |  54 +--
 .../kerberos/kerb/ccache/CredentialCache.java   |   5 +-
 .../kerby/kerberos/kerb/keytab/Keytab.java      |  38 +-
 .../kerby/kerberos/kerb/keytab/KeytabEntry.java |  24 +-
 .../kerberos/kerb/keytab/KeytabInputStream.java |   3 +-
 .../kerb/keytab/KeytabOutputStream.java         |   4 +-
 .../kerby/kerberos/kerb/util/CcacheTest.java    |   9 +-
 .../kerberos/kerb/util/EncryptionTest.java      |  10 +-
 .../kerby/kerberos/kerb/util/KeysTest.java      |  15 +-
 .../kerby/kerberos/kerb/util/KeytabTest.java    |  13 +-
 kerby-kerb/pom.xml                              |   7 +
 .../main/java/org/apache/kerby/config/Conf.java |  11 +-
 .../org/apache/kerby/config/ConfigImpl.java     |   4 +-
 .../org/apache/kerby/config/ConfigObject.java   |  95 ++--
 .../apache/kerby/config/IniConfigLoader.java    |   4 +
 .../apache/kerby/config/MapConfigLoader.java    |   4 +-
 .../kerby/config/PropertiesConfigLoader.java    |   3 +-
 .../apache/kerby/config/XmlConfigLoader.java    |  37 +-
 .../java/org/apache/kerby/config/ConfTest.java  |  34 +-
 .../org/apache/kerby/config/ConfigImplTest.java |  19 +-
 .../org/apache/kerby/config/IniConfigTest.java  |  13 +-
 .../org/apache/kerby/transport/Acceptor.java    |   2 +-
 .../org/apache/kerby/transport/Connector.java   |   2 +-
 .../org/apache/kerby/transport/Network.java     |   8 +-
 .../kerby/transport/tcp/TcpTransport.java       |   4 +-
 .../org/apache/kerby/event/NetworkUtil.java     |  47 ++
 .../java/org/apache/kerby/event/TestBuffer.java |   7 +-
 .../kerby/event/network/TestNetworkBase.java    |  10 +-
 .../kerby/event/network/TestNetworkClient.java  |  15 +-
 .../kerby/event/network/TestNetworkServer.java  |  11 +-
 .../org/apache/kerby/event/tcp/TestTcpBase.java |   7 +-
 .../apache/kerby/event/tcp/TestTcpClient.java   |  10 +-
 .../apache/kerby/event/tcp/TestTcpServer.java   |  20 +-
 .../org/apache/kerby/event/udp/TestUdpBase.java |   7 +-
 .../apache/kerby/event/udp/TestUdpClient.java   |  10 +-
 .../apache/kerby/event/udp/TestUdpServer.java   |   8 +-
 .../main/java/org/apache/kerby/pki/Pkix.java    |   4 +-
 lib/kerby-pkix/src/main/resources/cacert.pem    |  23 -
 lib/kerby-pkix/src/main/resources/cakey.pem     |  27 --
 .../src/main/resources/extensions.kdc           |  36 --
 lib/kerby-pkix/src/main/resources/kdccert.pem   |  26 --
 lib/kerby-pkix/src/main/resources/kdckey.pem    |  27 --
 lib/kerby-pkix/src/main/resources/usercert.pem  |  26 --
 lib/kerby-pkix/src/main/resources/userkey.pem   |  27 --
 .../java/org/apache/kerby/pki/PkixTest.java     |   7 +-
 lib/kerby-pkix/src/test/resources/cacert.pem    |  23 +
 lib/kerby-pkix/src/test/resources/cakey.pem     |  27 ++
 .../src/test/resources/extensions.kdc           |  36 ++
 lib/kerby-pkix/src/test/resources/kdccert.pem   |  26 ++
 lib/kerby-pkix/src/test/resources/kdckey.pem    |  27 ++
 lib/kerby-pkix/src/test/resources/usercert.pem  |  26 ++
 lib/kerby-pkix/src/test/resources/userkey.pem   |  27 ++
 lib/kerby-token/pom.xml                         |   4 +-
 lib/pom.xml                                     |   7 +
 232 files changed, 3698 insertions(+), 3076 deletions(-)
----------------------------------------------------------------------



[09/30] directory-kerberos git commit: Improved the Javadoc, added some missing parts.

Posted by dr...@apache.org.
Improved the Javadoc, added some missing parts.

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

Branch: refs/heads/installation
Commit: 68b5f1bb278656f4501899dbbf8776f05124bef0
Parents: c69f385
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Sun Feb 1 10:28:53 2015 +0100
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Sun Feb 1 10:28:53 2015 +0100

----------------------------------------------------------------------
 .../test/java/org/apache/kerby/asn1/Util.java   | 105 ++++++++++++++++---
 1 file changed, 93 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/68b5f1bb/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
index 5f58e1a..446917a 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
@@ -50,21 +50,102 @@ public class Util {
      * 0x02 02 00 80
      */
     public static byte[] hex2bytes(String hexString) {
-        hexString = hexString.toUpperCase();
-        String hexStr = hexString;
-        if (hexString.startsWith("0X")) {
-            hexStr = hexString.substring(2);
+        if (hexString==null) {
+            throw new IllegalArgumentException("Invalid hex string to convert : null");
         }
-        String[] hexParts = hexStr.split(" ");
+        
+        char[] hexStr = hexString.toCharArray();
 
-        byte[] bytes = new byte[hexParts.length];
-        char[] hexPart;
-        for (int i = 0; i < hexParts.length; ++i) {
-            hexPart = hexParts[i].toCharArray();
-            if (hexPart.length != 2) {
-                throw new IllegalArgumentException("Invalid hex string to convert");
+        if (hexStr.length < 4) {
+            throw new IllegalArgumentException("Invalid hex string to convert : length below 4");
+        }
+        
+        if (( hexStr[0] != '0') || ((hexStr[1]!='x') && (hexStr[1]!='X'))) {
+            throw new IllegalArgumentException("Invalid hex string to convert : not starting with '0x'");
+        }
+        
+        byte[] bytes = new byte[(hexStr.length - 1)/3];
+        int pos = 0; 
+        boolean high = false;
+        boolean prefix = true;
+        
+        for (char c:hexStr) {
+            if (prefix) {
+                if ((c == 'x')|| (c=='X')) {
+                    prefix = false;
+                }
+                
+                continue;
             }
-            bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexPart[0]) << 4) + HEX_CHARS_STR.indexOf(hexPart[1]));
+            
+            switch (c) {
+                case ' ' :
+                    if (high) {
+                        // We have had only the high part
+                        throw new IllegalArgumentException("Invalid hex string to convert");
+                    }
+                    
+                    // A hex pair has been decoded
+                    pos++;
+                    high = false;
+                    break;
+                    
+                case '0': 
+                case '1': 
+                case '2': 
+                case '3': 
+                case '4':
+                case '5': 
+                case '6':
+                case '7':
+                case '8':
+                case '9':
+                    if (high) {
+                        bytes[pos] += (byte)(c - '0');
+                    } else {
+                        bytes[pos] = (byte)((c - '0') << 4);
+                    }
+                    
+                    high = !high;
+                    break;
+                    
+                case 'a' :
+                case 'b' :
+                case 'c' :
+                case 'd' :
+                case 'e' :
+                case 'f' :
+                    if (high) {
+                        bytes[pos] += (byte)(c - 'a' + 10);
+                    } else {
+                        bytes[pos] = (byte)((c - 'a' + 10) << 4);
+                    }
+
+                    high = !high;
+                    break;
+
+                case 'A' :
+                case 'B' :
+                case 'C' :
+                case 'D' :
+                case 'E' :
+                case 'F' :
+                    if (high) {
+                        bytes[pos] += (byte)(c - 'A' + 10);
+                    } else {
+                        bytes[pos] = (byte)((c - 'A' + 10) << 4);
+                    }
+
+                    high = !high;
+                    break;
+                    
+                default :
+                    throw new IllegalArgumentException("Invalid hex string to convert");
+            }
+        }
+        
+        if (high) {
+            throw new IllegalArgumentException("Invalid hex string to convert");
         }
 
         return bytes;


[29/30] directory-kerberos git commit: Fixed test failure, network ports should be prepared during setUp()

Posted by dr...@apache.org.
Fixed test failure, network ports should be prepared during setUp()


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

Branch: refs/heads/installation
Commit: 02ea20f639506dc1edb24fb8161c291122c2616f
Parents: 7c323a3
Author: Drankye <dr...@gmail.com>
Authored: Mon Feb 9 20:47:43 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Mon Feb 9 20:47:43 2015 +0800

----------------------------------------------------------------------
 .../org/apache/kerby/event/NetworkUtil.java     | 47 ++++++++++++++++++++
 .../kerby/event/network/TestNetworkBase.java    |  6 +++
 .../kerby/event/network/TestNetworkClient.java  |  6 +--
 .../kerby/event/network/TestNetworkServer.java  | 13 ++----
 .../org/apache/kerby/event/tcp/TestTcpBase.java |  5 +++
 .../apache/kerby/event/tcp/TestTcpClient.java   |  6 +--
 .../apache/kerby/event/tcp/TestTcpServer.java   |  6 +--
 .../org/apache/kerby/event/udp/TestUdpBase.java |  5 +++
 .../apache/kerby/event/udp/TestUdpClient.java   |  4 +-
 .../apache/kerby/event/udp/TestUdpServer.java   |  6 +--
 10 files changed, 77 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/NetworkUtil.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/NetworkUtil.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/NetworkUtil.java
new file mode 100644
index 0000000..7e3e22e
--- /dev/null
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/NetworkUtil.java
@@ -0,0 +1,47 @@
+/**
+ *  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.kerby.event;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+
+/**
+ * Some network and event testing utilities.
+ */
+public class NetworkUtil {
+
+    /**
+     * Get a server socket point for testing usage, either TCP or UDP.
+     * @return server socket point
+     */
+    public static int getServerPort() {
+        int serverPort = 0;
+
+        try {
+            ServerSocket serverSocket = new ServerSocket(0);
+            serverPort = serverSocket.getLocalPort();
+            serverSocket.close();
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to get a server socket point");
+        }
+
+        return serverPort;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java
index 04a15a9..9a0562c 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkBase.java
@@ -20,6 +20,7 @@
 package org.apache.kerby.event.network;
 
 import org.apache.kerby.event.EventType;
+import org.apache.kerby.event.NetworkUtil;
 import org.apache.kerby.transport.tcp.DecodingCallback;
 import org.apache.kerby.transport.tcp.StreamingDecoder;
 
@@ -36,6 +37,11 @@ public class TestNetworkBase {
         FINISHED
     }
 
+    protected void preparePorts() {
+        tcpPort = NetworkUtil.getServerPort();
+        udpPort = NetworkUtil.getServerPort();
+    }
+
     protected String recvBuffer2String(ByteBuffer buffer) {
         byte[] bytes = new byte[buffer.remaining()];
         buffer.get(bytes);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
index 54dc6a9..7d00d58 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkClient.java
@@ -51,6 +51,8 @@ public class TestNetworkClient extends TestNetworkBase {
 
     @Before
     public void setUp() throws IOException {
+        preparePorts();
+
         setUpServer();
         setUpClient();
     }
@@ -86,8 +88,6 @@ public class TestNetworkClient extends TestNetworkBase {
         ServerSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(tcpPort));
         serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
-        
-        tcpPort = serverSocket.getLocalPort();
 
         SocketChannel socketChannel;
         while (true) {
@@ -132,8 +132,6 @@ public class TestNetworkClient extends TestNetworkBase {
         DatagramSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(udpPort));
         serverSocketChannel.register(selector, SelectionKey.OP_READ);
-        
-        udpPort = serverSocket.getLocalPort();
 
         while (true) {
             if (selector.selectNow() > 0) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
index b22c1d3..b68745d 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/network/TestNetworkServer.java
@@ -45,6 +45,8 @@ public class TestNetworkServer extends TestNetworkBase {
 
     @Before
     public void setUp() throws IOException {
+        preparePorts();
+
         setUpServer();
     }
 
@@ -66,17 +68,8 @@ public class TestNetworkServer extends TestNetworkBase {
         eventHub.register(network);
 
         eventHub.start();
-        
-        ServerSocket serverSocket = new ServerSocket(0);
-        tcpPort = serverSocket.getLocalPort();
-        serverSocket.close();
-        
+
         network.tcpListen(serverHost, tcpPort);
-        
-        serverSocket = new ServerSocket(0);
-        udpPort = serverSocket.getLocalPort();
-        serverSocket.close();
-        
         network.udpListen(serverHost, udpPort);
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java
index 8949733..c4c2d55 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpBase.java
@@ -20,6 +20,7 @@
 package org.apache.kerby.event.tcp;
 
 import org.apache.kerby.event.EventType;
+import org.apache.kerby.event.NetworkUtil;
 import org.apache.kerby.transport.tcp.DecodingCallback;
 import org.apache.kerby.transport.tcp.StreamingDecoder;
 
@@ -35,6 +36,10 @@ public class TestTcpBase {
         FINISHED
     }
 
+    protected void preparePort() {
+        serverPort = NetworkUtil.getServerPort();
+    }
+
     protected String recvBuffer2String(ByteBuffer buffer) {
         byte[] bytes = new byte[buffer.remaining()];
         buffer.get(bytes);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
index 106c3c7..823ae7b 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpClient.java
@@ -54,6 +54,8 @@ public class TestTcpClient extends TestTcpBase {
 
     @Before
     public void setUp() throws IOException {
+        preparePort();
+
         setUpServer();
         setUpClient();
     }
@@ -76,10 +78,8 @@ public class TestTcpClient extends TestTcpBase {
         ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
         serverSocketChannel.configureBlocking(false);
         ServerSocket serverSocket = serverSocketChannel.socket();
-        serverSocket.bind(new InetSocketAddress(0));
+        serverSocket.bind(new InetSocketAddress(serverPort));
         serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
-        
-        serverPort = serverSocket.getLocalPort();
 
         SocketChannel socketChannel;
         while (true) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
index 66a2df3..d95580a 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/tcp/TestTcpServer.java
@@ -45,6 +45,8 @@ public class TestTcpServer extends TestTcpBase {
 
     @Before
     public void setUp() throws IOException {
+        preparePort();
+
         setUpServer();
     }
 
@@ -63,10 +65,6 @@ public class TestTcpServer extends TestTcpBase {
 
         Acceptor acceptor = new TcpAcceptor(createStreamingDecoder());
         eventHub.register(acceptor);
-        
-        ServerSocket serverSocket = new ServerSocket(0);
-        serverPort = serverSocket.getLocalPort();
-        serverSocket.close();
 
         eventHub.start();
         acceptor.listen(serverHost, serverPort);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java
index f4d3ed1..1887043 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpBase.java
@@ -20,6 +20,7 @@
 package org.apache.kerby.event.udp;
 
 import org.apache.kerby.event.EventType;
+import org.apache.kerby.event.NetworkUtil;
 
 import java.nio.ByteBuffer;
 
@@ -33,6 +34,10 @@ public class TestUdpBase {
         FINISHED
     }
 
+    protected void preparePort() {
+        serverPort = NetworkUtil.getServerPort();
+    }
+
     protected String recvBuffer2String(ByteBuffer buffer) {
         byte[] bytes = new byte[buffer.remaining()];
         buffer.get(bytes);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
index 60001f4..6f3453e 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpClient.java
@@ -53,6 +53,8 @@ public class TestUdpClient extends TestUdpBase {
 
     @Before
     public void setUp() throws IOException {
+        preparePort();
+
         setUpServer();
         setUpClient();
     }
@@ -77,8 +79,6 @@ public class TestUdpClient extends TestUdpBase {
         DatagramSocket serverSocket = serverSocketChannel.socket();
         serverSocket.bind(new InetSocketAddress(serverPort));
         serverSocketChannel.register(selector, SelectionKey.OP_READ);
-        
-        serverPort = serverSocket.getLocalPort();
 
         while (true) {
             if (selector.selectNow() > 0) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/02ea20f6/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
----------------------------------------------------------------------
diff --git a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
index b525a55..f44aa53 100644
--- a/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
+++ b/lib/kerby-event/src/test/java/org/apache/kerby/event/udp/TestUdpServer.java
@@ -45,6 +45,8 @@ public class TestUdpServer extends TestUdpBase {
 
     @Before
     public void setUp() throws IOException {
+        preparePort();
+
         setUpServer();
     }
 
@@ -63,10 +65,6 @@ public class TestUdpServer extends TestUdpBase {
 
         Acceptor acceptor = new UdpAcceptor();
         eventHub.register(acceptor);
-        
-        ServerSocket serverSocket = new ServerSocket(0);
-        serverPort = serverSocket.getLocalPort();
-        serverSocket.close();
 
         eventHub.start();
         acceptor.listen(serverHost, serverPort);


[03/30] directory-kerberos git commit: Fixed a testing failure related to assertj

Posted by dr...@apache.org.
Fixed a testing failure related to assertj


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

Branch: refs/heads/installation
Commit: 66a3df64e4987a75a36f447705e2e19c1ffc85dd
Parents: 7c8dc37
Author: Drankye <dr...@gmail.com>
Authored: Sun Feb 1 09:24:42 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Sun Feb 1 09:24:42 2015 +0800

----------------------------------------------------------------------
 .../org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/66a3df64/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java b/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
index 7f00a3a..643b539 100644
--- a/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
+++ b/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
@@ -44,8 +44,8 @@ public class TestKdcConfigLoad {
         assertThat(krbConfig.getKdcLoggingLocation()).isEqualTo("FILE:/var/log/krb5kdc.log");
         assertThat(krbConfig.getAdminLoggingLocation()).isEqualTo("FILE:/var/log/kadmind.log");
 
-        assertThat(krbConfig.getKdcUdpPort()).isEqualTo(88);
-        assertThat(krbConfig.getKdcTcpPort()).isEqualTo(8014);
+        assertThat(krbConfig.getKdcUdpPort()).isEqualTo((short)88);
+        assertThat(krbConfig.getKdcTcpPort()).isEqualTo((short)8014);
         assertThat(krbConfig.isRestrictAnonymousToTgt()).isTrue();
         assertThat(krbConfig.getKdcMaxDgramReplySize()).isEqualTo(4096);
 


[25/30] directory-kerberos git commit: More refactoring

Posted by dr...@apache.org.
More refactoring


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

Branch: refs/heads/installation
Commit: 58b44ebed994e20dbf6f636e41d1e961b1edcdcd
Parents: 4ae948c
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Thu Feb 5 14:55:05 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Thu Feb 5 14:55:05 2015 +0000

----------------------------------------------------------------------
 .../kerberos/kerb/common/EncryptionUtil.java    |  8 +++---
 .../kerberos/kerb/common/KrbConfHelper.java     |  3 +--
 .../kerberos/kerb/common/KrbErrorUtil.java      |  2 +-
 .../kerb/preauth/pkinit/PkinitIdenity.java      |  3 +--
 .../kerberos/kerb/ccache/CredentialCache.java   |  5 ++--
 .../kerby/kerberos/kerb/keytab/Keytab.java      | 26 +++++++++++---------
 .../kerby/kerberos/kerb/keytab/KeytabEntry.java | 24 +++++++++++++-----
 .../kerberos/kerb/keytab/KeytabInputStream.java |  3 +--
 .../kerby/kerberos/kerb/util/KeysTest.java      |  7 +++---
 9 files changed, 45 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/EncryptionUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/EncryptionUtil.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/EncryptionUtil.java
index aa9618d..86944b0 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/EncryptionUtil.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/EncryptionUtil.java
@@ -37,9 +37,8 @@ public class EncryptionUtil {
 
     public static List<EncryptionKey> generateKeys(List<EncryptionType> encryptionTypes) throws KrbException {
         List<EncryptionKey> results = new ArrayList<EncryptionKey>(encryptionTypes.size());
-        EncryptionKey encKey;
         for (EncryptionType eType : encryptionTypes) {
-            encKey = EncryptionHandler.random2Key(eType);
+            EncryptionKey encKey = EncryptionHandler.random2Key(eType);
             results.add(encKey);
         }
 
@@ -49,9 +48,8 @@ public class EncryptionUtil {
     public static List<EncryptionKey> generateKeys(String principal, String passwd,
                                                    List<EncryptionType> encryptionTypes) throws KrbException {
         List<EncryptionKey> results = new ArrayList<EncryptionKey>(encryptionTypes.size());
-        EncryptionKey encKey;
         for (EncryptionType eType : encryptionTypes) {
-            encKey = EncryptionHandler.string2Key(principal, passwd, eType);
+            EncryptionKey encKey = EncryptionHandler.string2Key(principal, passwd, eType);
             results.add(encKey);
         }
 
@@ -69,7 +67,7 @@ public class EncryptionUtil {
         return null;
     }
 
-    public static EncryptedData seal(AbstractAsn1Type asn1Type,
+    public static EncryptedData seal(AbstractAsn1Type<?> asn1Type,
                                      EncryptionKey key, KeyUsage usage) throws KrbException {
         byte[] encoded = asn1Type.encode();
         EncryptedData encrypted = EncryptionHandler.encrypt(encoded, key, usage);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbConfHelper.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbConfHelper.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbConfHelper.java
index 0100b0b..0564981 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbConfHelper.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbConfHelper.java
@@ -91,9 +91,8 @@ public class KrbConfHelper {
     public static List<EncryptionType> getEncryptionTypes(List<String> encTypeNames) {
         List<EncryptionType> results = new ArrayList<EncryptionType>(encTypeNames.size());
 
-        EncryptionType eType;
         for (String eTypeName : encTypeNames) {
-            eType = EncryptionType.fromName(eTypeName);
+            EncryptionType eType = EncryptionType.fromName(eTypeName);
             if (eType != EncryptionType.NONE) {
                 results.add(eType);
             }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbErrorUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbErrorUtil.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbErrorUtil.java
index e252d5b..650f825 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbErrorUtil.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbErrorUtil.java
@@ -42,7 +42,7 @@ public class KrbErrorUtil {
                 return getEtypes(pd.getPaDataValue());
             }
         }
-        return Collections.EMPTY_LIST;
+        return Collections.emptyList();
     }
 
     private static List<EncryptionType> getEtypes(byte[] data) throws IOException {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitIdenity.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitIdenity.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitIdenity.java
index f080231..575974a 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitIdenity.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitIdenity.java
@@ -67,10 +67,9 @@ public class PkinitIdenity {
 
     public static void parseFileOption(IdentityOpts identityOpts, String residual) {
         String[] parts = residual.split(",");
-        String certName = null;
+        String certName = parts[0];
         String keyName = null;
 
-        certName = parts[0];
         if (parts.length > 1) {
             keyName = parts[1];
         }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredentialCache.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredentialCache.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredentialCache.java
index 3598e90..343521a 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredentialCache.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredentialCache.java
@@ -185,7 +185,7 @@ public class CredentialCache implements KrbCredentialCache
 
         Credential cred;
         while (ccis.available() > 0) {
-            cred =  new Credential();
+            cred = new Credential();
             cred.load(ccis, version);
 
             results.add(cred);
@@ -267,9 +267,8 @@ public class CredentialCache implements KrbCredentialCache
         CredentialCache cc = new CredentialCache();
         cc.load(new File(cacheFile));
 
-        Ticket tkt;
         for (Credential cred : cc.getCredentials()) {
-            tkt = cred.getTicket();
+            Ticket tkt = cred.getTicket();
             System.out.println("Tkt server name: " + tkt.getSname().getName());
             System.out.println("Tkt client name: " + cred.getClientName().getName());
             System.out.println("Tkt encrypt type: " + tkt.getEncryptedEncPart().getEType().getName());

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java
index 46891d0..4ffd058 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java
@@ -19,14 +19,22 @@
  */
 package org.apache.kerby.kerberos.kerb.keytab;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.kerby.kerberos.kerb.spec.common.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.spec.common.EncryptionType;
 import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
 
-import java.io.*;
-import java.nio.ByteBuffer;
-import java.util.*;
-
 public class Keytab implements KrbKeytab {
 
     public static final int V501 = 0x0501;
@@ -63,9 +71,8 @@ public class Keytab implements KrbKeytab {
         List<KeytabEntry> entries = principalEntries.get(principal);
         if (entries != null) {
             Iterator<KeytabEntry> iter = entries.iterator();
-            KeytabEntry tmp;
             while (iter.hasNext()) {
-                tmp = iter.next();
+                KeytabEntry tmp = iter.next();
                 if (entry.equals(tmp)) {
                     iter.remove();
                     break;
@@ -138,15 +145,12 @@ public class Keytab implements KrbKeytab {
     private List<KeytabEntry> readEntries(KeytabInputStream kis) throws IOException {
         List<KeytabEntry> entries = new ArrayList<KeytabEntry>();
 
-        int entrySize;
-        ByteBuffer entryData;
-        KeytabEntry entry;
         while (kis.available() > 0) {
-            entrySize = kis.readInt();
+            int entrySize = kis.readInt();
             if (kis.available() < entrySize) {
                 throw new IOException("Bad input stream with less data than expected: " + entrySize);
             }
-            entry = readEntry(kis);
+            KeytabEntry entry = readEntry(kis);
             entries.add(entry);
         }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabEntry.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabEntry.java
index a0b7351..a9463bb 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabEntry.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabEntry.java
@@ -97,15 +97,27 @@ public class KeytabEntry
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         KeytabEntry that = (KeytabEntry) o;
 
-        if (kvno != that.kvno) return false;
-        if (!key.equals(that.key)) return false;
-        if (!principal.equals(that.principal)) return false;
-        if (!timestamp.equals(that.timestamp)) return false;
+        if (kvno != that.kvno) {
+            return false;
+        }
+        if (!key.equals(that.key)) {
+            return false;
+        }
+        if (!principal.equals(that.principal)) {
+            return false;
+        }
+        if (!timestamp.equals(that.timestamp)) {
+            return false;
+        }
 
         return true;
     }

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabInputStream.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabInputStream.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabInputStream.java
index 4638080..b5bbc4a 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabInputStream.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabInputStream.java
@@ -53,9 +53,8 @@ public class KeytabInputStream extends KrbInputStream
         String realm = readCountedString();
 
         List<String> nameStrings = new ArrayList<String>();
-        String component;
         for (int i = 0; i < numComponents; i++) { // sub 1 if version 0x501
-            component = readCountedString();
+            String component = readCountedString();
             nameStrings.add(component);
         }
         int type = readInt(); // not present if version 0x501

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/58b44ebe/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
index 52bd024..8246e71 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
@@ -65,12 +65,11 @@ public class KeysTest {
         List<PrincipalName> principals = keytab.getPrincipals();
         PrincipalName principal = principals.get(0);
         List<KeytabEntry> entries = keytab.getKeytabEntries(principal);
-        EncryptionKey genKey;
-        EncryptionType keyType;
+
         for (KeytabEntry ke : entries) {
-            keyType = ke.getKey().getKeyType();
+            EncryptionType keyType = ke.getKey().getKeyType();
             if (EncryptionHandler.isImplemented(keyType)) {
-                genKey = EncryptionHandler.string2Key(principal.getName(),
+                EncryptionKey genKey = EncryptionHandler.string2Key(principal.getName(),
                         TEST_PASSWORD, keyType);
                 if(! ke.getKey().equals(genKey)) {
                     fail("str2key failed for key type: " + keyType.getName());


[26/30] directory-kerberos git commit: Simplify the load method of Keytab.

Posted by dr...@apache.org.
Simplify the load method of Keytab.


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

Branch: refs/heads/installation
Commit: 44a42d10de01f0c4ff51d82a501a3c42dab39c0e
Parents: 58b44eb
Author: Lin <li...@foxmail.com>
Authored: Fri Feb 6 21:53:26 2015 +0800
Committer: Lin <li...@foxmail.com>
Committed: Fri Feb 6 21:53:26 2015 +0800

----------------------------------------------------------------------
 .../kerb/codec/kerberos/KerberosCredentials.java        |  3 +--
 .../org/apache/kerby/kerberos/kerb/keytab/Keytab.java   | 12 ++++++++++++
 .../apache/kerby/kerberos/kerb/util/EncryptionTest.java |  3 +--
 .../org/apache/kerby/kerberos/kerb/util/KeysTest.java   |  3 +--
 .../org/apache/kerby/kerberos/kerb/util/KeytabTest.java |  6 ++----
 5 files changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/44a42d10/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosCredentials.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosCredentials.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosCredentials.java
index 087fe42..aaad88e 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosCredentials.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/kerberos/KerberosCredentials.java
@@ -34,8 +34,7 @@ public class KerberosCredentials {
 
     private static void init() throws IOException {
         InputStream kis = KerberosCredentials.class.getResourceAsStream("/server.keytab");
-        keytab = new Keytab();
-        keytab.load(kis);
+        keytab = Keytab.loadKeytab(kis);
     }
 
     public static EncryptionKey getServerKey(EncryptionType etype) throws IOException {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/44a42d10/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java
index 4ffd058..f892abd 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/Keytab.java
@@ -98,6 +98,18 @@ public class Keytab implements KrbKeytab {
         return null;
     }
 
+    public static Keytab loadKeytab(File keytabFile) throws IOException {
+        Keytab keytab = new Keytab();
+        keytab.load(keytabFile);
+        return keytab;
+    }
+
+    public static Keytab loadKeytab(InputStream inputStream) throws IOException {
+        Keytab keytab = new Keytab();
+        keytab.load(inputStream);
+        return keytab;
+    }
+
     @Override
     public void load(File keytabFile) throws IOException {
         if (! keytabFile.exists() || ! keytabFile.canRead()) {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/44a42d10/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
index bbf7f93..9fb6f9e 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
@@ -59,8 +59,7 @@ public class EncryptionTest {
     @Before
     public void setUp() throws IOException {
         InputStream kis = EncryptionTest.class.getResourceAsStream("/krbtgt.keytab");
-        keytab = new Keytab();
-        keytab.load(kis);
+        keytab = Keytab.loadKeytab(kis);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/44a42d10/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
index 8246e71..6cc98b1 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
@@ -56,8 +56,7 @@ public class KeysTest {
     @Before
     public void setUp() throws IOException {
         InputStream kis = KeysTest.class.getResourceAsStream("/test.keytab");
-        keytab = new Keytab();
-        keytab.load(kis);
+        keytab = Keytab.loadKeytab(kis);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/44a42d10/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java
index 9c48c3b..63b9e5e 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeytabTest.java
@@ -52,8 +52,7 @@ public class KeytabTest {
     @Before
     public void setUp() throws IOException {
         InputStream kis = KeytabTest.class.getResourceAsStream("/test.keytab");
-        keytab = new Keytab();
-        keytab.load(kis);
+        keytab = Keytab.loadKeytab(kis);
     }
 
     @Test
@@ -70,8 +69,7 @@ public class KeytabTest {
 
     public static void main(String[] args) throws IOException {
         InputStream kis = KeytabTest.class.getResourceAsStream("test.keytab");
-        Keytab keytab = new Keytab();
-        keytab.load(kis);
+        Keytab keytab = Keytab.loadKeytab(kis);
         System.out.println("Principals:" + keytab.getPrincipals().size());
     }
 }


[20/30] directory-kerberos git commit: Removing tabs

Posted by dr...@apache.org.
Removing tabs


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

Branch: refs/heads/installation
Commit: e4db3006035465966d24f99ea92d0c7aaf21772f
Parents: ac8f3e9
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Feb 4 15:06:12 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Feb 4 15:06:12 2015 +0000

----------------------------------------------------------------------
 .../kerby/kerberos/kerb/KrbOutputStream.java    | 12 +--
 .../kerb/ccache/CredCacheOutputStream.java      | 54 ++++++------
 .../kerb/keytab/KeytabOutputStream.java         |  4 +-
 .../main/java/org/apache/kerby/config/Conf.java | 10 +--
 .../org/apache/kerby/config/ConfigObject.java   | 88 ++++++++++----------
 5 files changed, 84 insertions(+), 84 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e4db3006/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbOutputStream.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbOutputStream.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbOutputStream.java
index 7be0bdf..828d93f 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbOutputStream.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbOutputStream.java
@@ -29,7 +29,7 @@ import java.io.OutputStream;
 
 public abstract class KrbOutputStream extends DataOutputStream
 {
-	public KrbOutputStream(OutputStream out) {
+    public KrbOutputStream(OutputStream out) {
         super(out);
     }
 
@@ -42,11 +42,11 @@ public abstract class KrbOutputStream extends DataOutputStream
     public abstract void writeKey(EncryptionKey key, int version) throws IOException;
 
     public void writeTime(KerberosTime ktime) throws IOException {
-    	int time = 0;
-    	if (ktime != null) {
-    		time = (int) (ktime.getValue().getTime() / 1000);
-    	}
-    	writeInt(time);
+        int time = 0;
+        if (ktime != null) {
+            time = (int) (ktime.getValue().getTime() / 1000);
+        }
+        writeInt(time);
     }
 
     public void writeCountedString(String string) throws IOException {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e4db3006/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheOutputStream.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheOutputStream.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheOutputStream.java
index 30fcd82..e5bd5f7 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheOutputStream.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheOutputStream.java
@@ -31,7 +31,7 @@ import java.util.List;
 
 public class CredCacheOutputStream extends KrbOutputStream
 {
-	public CredCacheOutputStream(OutputStream out) {
+    public CredCacheOutputStream(OutputStream out) {
         super(out);
     }
 
@@ -39,8 +39,8 @@ public class CredCacheOutputStream extends KrbOutputStream
     public void writePrincipal(PrincipalName principal, int version) throws IOException {
         List<String> nameComponents = principal.getNameStrings();
 
-    	if (version != CredentialCache.FCC_FVNO_1) {
-        	writeInt(principal.getNameType().getValue());
+        if (version != CredentialCache.FCC_FVNO_1) {
+            writeInt(principal.getNameType().getValue());
         }
 
         int numComponents = nameComponents.size();
@@ -48,9 +48,9 @@ public class CredCacheOutputStream extends KrbOutputStream
             numComponents ++;
         }
         writeInt(numComponents);
-        
+
         writeRealm(principal.getRealm());
-        
+
         for (String nameCom : nameComponents) {
             writeCountedString(nameCom);
         }
@@ -58,10 +58,10 @@ public class CredCacheOutputStream extends KrbOutputStream
 
     @Override
     public void writeKey(EncryptionKey key, int version) throws IOException {
-    	writeShort(key.getKeyType().getValue());
-    	if (version == CredentialCache.FCC_FVNO_3) {
-    		writeShort(key.getKeyType().getValue());
-    	}
+        writeShort(key.getKeyType().getValue());
+        if (version == CredentialCache.FCC_FVNO_3) {
+            writeShort(key.getKeyType().getValue());
+        }
 
         writeCountedOctets(key.getKeyData());
     }
@@ -73,36 +73,36 @@ public class CredCacheOutputStream extends KrbOutputStream
     }
 
     public void writeAddresses(HostAddresses addrs) throws IOException {
-    	if (addrs == null) {
-    		writeInt(0);
-    	} else {
+        if (addrs == null) {
+            writeInt(0);
+        } else {
             List<HostAddress> addresses = addrs.getElements();
-    		write(addresses.size());
-    		for (HostAddress addr : addresses) {
+            write(addresses.size());
+            for (HostAddress addr : addresses) {
                 writeAddress(addr);
-    		}
-    	}
+            }
+        }
     }
 
     public void writeAddress(HostAddress address) throws IOException {
         write(address.getAddrType().getValue());
         write(address.getAddress().length);
         write(address.getAddress(), 0,
-                address.getAddress().length);
+              address.getAddress().length);
     }
 
     public void writeAuthzData(AuthorizationData authData) throws IOException  {
-    	if (authData == null) {
-    		writeInt(0);
-    	} else {
-    		for (AuthorizationDataEntry entry : authData.getElements()) {
-    			write(entry.getAuthzType().getValue());
-    			write(entry.getAuthzData().length);
-    			write(entry.getAuthzData());
-    		}
-    	}
+        if (authData == null) {
+            writeInt(0);
+        } else {
+            for (AuthorizationDataEntry entry : authData.getElements()) {
+                write(entry.getAuthzType().getValue());
+                write(entry.getAuthzData().length);
+                write(entry.getAuthzData());
+            }
+        }
     }
-    
+
     public void writeTicket(Ticket t) throws IOException  {
         if (t == null) {
             writeInt(0);

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e4db3006/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabOutputStream.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabOutputStream.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabOutputStream.java
index d69308f..935956d 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabOutputStream.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KeytabOutputStream.java
@@ -29,7 +29,7 @@ import java.util.List;
 
 public class KeytabOutputStream extends KrbOutputStream
 {
-	public KeytabOutputStream(OutputStream out) {
+    public KeytabOutputStream(OutputStream out) {
         super(out);
     }
 
@@ -51,7 +51,7 @@ public class KeytabOutputStream extends KrbOutputStream
 
     @Override
     public void writeKey(EncryptionKey key, int version) throws IOException {
-    	writeShort(key.getKeyType().getValue());
+        writeShort(key.getKeyType().getValue());
         writeCountedOctets(key.getKeyData());
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e4db3006/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java
index b1afe50..b426c02 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/Conf.java
@@ -29,19 +29,19 @@ import java.util.*;
 public class Conf implements Config {
     private static final Logger logger = LoggerFactory.getLogger(Conf.class);
 
-	private List<ConfigLoader> resourceConfigs;
+    private List<ConfigLoader> resourceConfigs;
     private final ConfigImpl config;
     private boolean needReload;
 
-	public Conf() {
+    public Conf() {
         this.resourceConfigs = new ArrayList<ConfigLoader>(1);
         this.config = new ConfigImpl("Conf");
         this.needReload = true;
-	}
+    }
 
-	public void addXmlConfig(File xmlFile) throws IOException {
+    public void addXmlConfig(File xmlFile) throws IOException {
         addResource(Resource.createXmlResource(xmlFile));
-	}
+    }
 
     public void addIniConfig(File iniFile) throws IOException {
         addResource(Resource.createIniResource(iniFile));

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/e4db3006/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java
----------------------------------------------------------------------
diff --git a/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java b/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java
index 536af3e..3d0cc17 100644
--- a/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java
+++ b/lib/kerby-config/src/main/java/org/apache/kerby/config/ConfigObject.java
@@ -23,25 +23,25 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class ConfigObject {
-	protected static enum VALUE_TYPE { PROPERTY, LIST, CONFIG };
-		
-	private VALUE_TYPE valueType;
-	private Object value;
-	
-	public ConfigObject(String value) {
-		this.value = value;
-		this.valueType = VALUE_TYPE.PROPERTY;
-	}
-	
-	public ConfigObject(String[] values) {
-		List<String> valuesList = new ArrayList<String>();
-		for (String v : values) {
-			valuesList.add(v);
-		}
+    protected static enum VALUE_TYPE { PROPERTY, LIST, CONFIG };
 
-		this.value = valuesList;
-		this.valueType = VALUE_TYPE.LIST;
-	}
+    private VALUE_TYPE valueType;
+    private Object value;
+
+    public ConfigObject(String value) {
+        this.value = value;
+        this.valueType = VALUE_TYPE.PROPERTY;
+    }
+
+    public ConfigObject(String[] values) {
+        List<String> valuesList = new ArrayList<String>();
+        for (String v : values) {
+            valuesList.add(v);
+        }
+
+        this.value = valuesList;
+        this.valueType = VALUE_TYPE.LIST;
+    }
 
     public ConfigObject(List<String> values) {
         if (values != null) {
@@ -52,34 +52,34 @@ public class ConfigObject {
         this.valueType = VALUE_TYPE.LIST;
     }
 
-	public ConfigObject(Config value) {
-		this.value = value;
-		this.valueType = VALUE_TYPE.CONFIG;
-	}
+    public ConfigObject(Config value) {
+        this.value = value;
+        this.valueType = VALUE_TYPE.CONFIG;
+    }
+
+    public String getPropertyValue() {
+        String result = null;
+        if (valueType == VALUE_TYPE.PROPERTY) {
+            result = (String) value;
+        }
+        return result;
+    }
 
-	public String getPropertyValue() {
-		String result = null;
-		if (valueType == VALUE_TYPE.PROPERTY) {
-			result = (String) value;
-		}
-		return result;
-	}
-	
-	@SuppressWarnings("unchecked")
+    @SuppressWarnings("unchecked")
     public List<String> getListValues() {
-		List<String> results = null;
-		if (valueType == VALUE_TYPE.LIST && value instanceof List<?>) {
+        List<String> results = null;
+        if (valueType == VALUE_TYPE.LIST && value instanceof List<?>) {
             results = (List<String>) value;
-		}
-		
-		return results;
-	}
+        }
 
-	public Config getConfigValue() {
-		Config result = null;
-		if (valueType == VALUE_TYPE.CONFIG) {
-			result = (Config) value;
-		}
-		return result;
-	}
+        return results;
+    }
+
+    public Config getConfigValue() {
+        Config result = null;
+        if (valueType == VALUE_TYPE.CONFIG) {
+            result = (Config) value;
+        }
+        return result;
+    }
 }


[21/30] directory-kerberos git commit: Move pkix test artifacts to test/resources

Posted by dr...@apache.org.
Move pkix test artifacts to test/resources


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

Branch: refs/heads/installation
Commit: fe44b2763d99457b1dc17e601ae7acfbc8b41887
Parents: e4db300
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Feb 4 15:15:55 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Feb 4 15:15:55 2015 +0000

----------------------------------------------------------------------
 lib/kerby-pkix/src/main/resources/cacert.pem    | 23 -------------
 lib/kerby-pkix/src/main/resources/cakey.pem     | 27 ---------------
 .../src/main/resources/extensions.kdc           | 36 --------------------
 lib/kerby-pkix/src/main/resources/kdccert.pem   | 26 --------------
 lib/kerby-pkix/src/main/resources/kdckey.pem    | 27 ---------------
 lib/kerby-pkix/src/main/resources/usercert.pem  | 26 --------------
 lib/kerby-pkix/src/main/resources/userkey.pem   | 27 ---------------
 lib/kerby-pkix/src/test/resources/cacert.pem    | 23 +++++++++++++
 lib/kerby-pkix/src/test/resources/cakey.pem     | 27 +++++++++++++++
 .../src/test/resources/extensions.kdc           | 36 ++++++++++++++++++++
 lib/kerby-pkix/src/test/resources/kdccert.pem   | 26 ++++++++++++++
 lib/kerby-pkix/src/test/resources/kdckey.pem    | 27 +++++++++++++++
 lib/kerby-pkix/src/test/resources/usercert.pem  | 26 ++++++++++++++
 lib/kerby-pkix/src/test/resources/userkey.pem   | 27 +++++++++++++++
 14 files changed, 192 insertions(+), 192 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/main/resources/cacert.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/main/resources/cacert.pem b/lib/kerby-pkix/src/main/resources/cacert.pem
deleted file mode 100644
index 6b91561..0000000
--- a/lib/kerby-pkix/src/main/resources/cacert.pem
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID6zCCAtOgAwIBAgIJAMrZoeDxTzwWMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYD
-VQQGEwJjaDERMA8GA1UECAwIc2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4w
-DAYDVQQKDAVpbnRlbDEQMA4GA1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0
-YTEiMCAGCSqGSIb3DQEJARYTa2FpLnpoZW5nQGludGVsLmNvbTAeFw0xNDA1MTMx
-MzEzMjdaFw0yNDA1MTAxMzEzMjdaMIGLMQswCQYDVQQGEwJjaDERMA8GA1UECAwI
-c2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4wDAYDVQQKDAVpbnRlbDEQMA4G
-A1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0YTEiMCAGCSqGSIb3DQEJARYT
-a2FpLnpoZW5nQGludGVsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMCznJJ02ZUjCPvAwnBmfPs0akb5QRc/NKu8kCtAPWzgHS2JPTQfJhkDbTAD
-eIlg8IeJpOdrYnzdaBCzgxqjSkls+vxjYotOU0Zbrpy2bj0lRDqdYbNsiuConKgT
-MeuDEd/4ZI0X9NWLAi06Iv1F4mHXf36c6uqiUWTtXiofogrFUoTRwACKR2qeC95X
-Py+FDmpS9lz0mo0vDWjetLQC2IBngjjPFdR16n87QDIWfRBkk66rn7rEA6Li66b/
-cToajMSA/n+2Ud1mntSY4RdDdd0TBtAq9RrXtUOfzGaE7S6t+FtYyEprvT4FdOTU
-uyYgSNaI9ANVP1zhQ9LACKuudOECAwEAAaNQME4wHQYDVR0OBBYEFD91SVOejfwx
-u33+5N0TdYbHJbgAMB8GA1UdIwQYMBaAFD91SVOejfwxu33+5N0TdYbHJbgAMAwG
-A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADsONtUqGNBPBXnRowcJwv+Y
-F1Vea+4dkBwYbhkiO6H5XMKr+waOnOD2eAvgP4aeYg/a0xOzzETRD9wi1Z1P1ZMy
-d/NzHQjj4egPENwDv1PH2voZgsXXzXIqUMOtz9t12TuJUrSA2SBW1tz/evckHhNY
-fHg4ThvTIgwEdV/yvrOEBLV9dXG5IhhF+NW1MegTGkt4SpOoH1pi3o9VekVRnix9
-xrIdaC4Ee6vQaR603HwDS9Y+a1c2KU7QoLX8Vaa904cQ+rxhGsTAkocnZXeo6Hl5
-V8BlDYXxeP86fzcWi04ll2BmEEw/RimHEOLpGqxTVHJ5p5BVSCHP8aCD0VJheaU=
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/main/resources/cakey.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/main/resources/cakey.pem b/lib/kerby-pkix/src/main/resources/cakey.pem
deleted file mode 100644
index 66dc806..0000000
--- a/lib/kerby-pkix/src/main/resources/cakey.pem
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAwLOcknTZlSMI+8DCcGZ8+zRqRvlBFz80q7yQK0A9bOAdLYk9
-NB8mGQNtMAN4iWDwh4mk52tifN1oELODGqNKSWz6/GNii05TRluunLZuPSVEOp1h
-s2yK4KicqBMx64MR3/hkjRf01YsCLToi/UXiYdd/fpzq6qJRZO1eKh+iCsVShNHA
-AIpHap4L3lc/L4UOalL2XPSajS8NaN60tALYgGeCOM8V1HXqfztAMhZ9EGSTrquf
-usQDouLrpv9xOhqMxID+f7ZR3Wae1JjhF0N13RMG0Cr1Gte1Q5/MZoTtLq34W1jI
-Smu9PgV05NS7JiBI1oj0A1U/XOFD0sAIq6504QIDAQABAoIBAHqFeMax3unxBbQ0
-Aiy/LTX3RJ9tuZITUOTklnG5fZStBkA+oxhxuaJryE+f1VLbvPMgdCXj5BHqIFGG
-IZSdQA1hak9wzWYvXck9X88qOvtLp47xI/6Vw9NFwZ0n3zST+JiD8UK4eaYQpUim
-Tzrj5SU6hEi3crHOlJvsRFPaGwhnA9wycoOo4o22XBj3C8Hwzi4vWcKXH/RCSwZQ
-zFuYbe77Pn9Sv5q5zdglkmm7wngoVt/aKQke/Vk+Eincx1V12b05DNLjugo6FWQh
-0f2MmHpvqNSHs9USC5+y2lKQ1JNHh7mnpPCXkZEH4V7q+3mKVzl9tXzj9Gul20pw
-tneD6WUCgYEA9QUrQoWHKeVMjeukHjDJa2KjRLMmg9YRQyVABH9+nQTp1jYUjMRA
-GUoUx91gG6gjjJD/xvor/U0Fh3vKtZE93c+avrcaYDwf3q/L4gh+3b87lVDfzjrp
-L+MPTpEzWiyyLfr/kLA0TgUjnrj9bav5uDps8mJpNf8s9ZP1/QDhF5sCgYEAyVZA
-pHSIyBI2GT0+92JXvYDK/ZfV5m4RGHaG/PMDoU4IbGbjHVyzzsyzDUgvOASXwfF8
-YzwX7Tf95RZw12P/Jepxt0vqBJPKUCsMLUrmANQvN1Pz8+Vk6UADLM7kNc06MqB9
-/U3GKCFZZuedEhbgXnEV9gzelhILImJGZMxG0zMCgYApymnofLHjGXMHOcvSQmv4
-XuiODShikB59n1rd6YkE6xOfL7YtlEOCjLoipMWBshnuHcUigQUDvSFWTGz0rwMo
-VAKGyOA8zcR5zO4vbVeGJtnYy+SAXlfrjQTNV8K0fK8fXJI+cW9aZ1H9/ntrO0vq
-ejye0t4zEYTvlf782iuKRQKBgQCnTQ7mGRfX+JoPmv8JniR+idkjpNnPYsK96y/8
-XQs1LJx/R3eN3IxlWV+nt8XU7KwWMs5Dv5m6Ov61MFKQCL3qCch4oZJSP2Sr/Tlf
-IY/CPI8HkLF0h7e0wsZgo4Kq2mBz1T0cEVaJ3jxl8Cxq7at/jsTK8qK7XT73UWZh
-OAXaVQKBgDmg2QTX7c0/dbDMOuw18g3xfE/oqU+VWT784wtvpcdjHR+KAVLWHG8l
-oc/bm8Bs0o0f5dfH7uUvWdP6JMvbgYZBgIMqw+iH8P2lFCLzIRf0me/l+r0Oi64U
-5jp9K+7Ggc7S0SSnCLmBLMN5lXQZbhzks1La7DZmFeAz8rOEnlUB
------END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/main/resources/extensions.kdc
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/main/resources/extensions.kdc b/lib/kerby-pkix/src/main/resources/extensions.kdc
deleted file mode 100644
index 8052f71..0000000
--- a/lib/kerby-pkix/src/main/resources/extensions.kdc
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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.
-[kdc_cert]
-basicConstraints=CA:FALSE
-keyUsage=nonRepudiation,digitalSignature,keyEncipherment,keyAgreement
-extendedKeyUsage=1.3.6.1.5.2.3.5
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer
-issuerAltName=issuer:copy
-subjectAltName=otherName:1.3.6.1.5.2.2;SEQUENCE:kdc_princ_name
-
-[kdc_princ_name]
-realm=EXP:0,GeneralString:${ENV::REALM}
-principal_name=EXP:1,SEQUENCE:kdc_principal_seq
-
-[kdc_principal_seq]
-name_type=EXP:0,INTEGER:1
-name_string=EXP:1,SEQUENCE:kdc_principals
-
-[kdc_principals]
-princ1=GeneralString:krbtgt
-princ2=GeneralString:${ENV::REALM}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/main/resources/kdccert.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/main/resources/kdccert.pem b/lib/kerby-pkix/src/main/resources/kdccert.pem
deleted file mode 100644
index 67e538c..0000000
--- a/lib/kerby-pkix/src/main/resources/kdccert.pem
+++ /dev/null
@@ -1,26 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEYjCCA0qgAwIBAgIJAL2ZFUkXCgK2MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYD
-VQQGEwJjaDERMA8GA1UECAwIc2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4w
-DAYDVQQKDAVpbnRlbDEQMA4GA1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0
-YTEiMCAGCSqGSIb3DQEJARYTa2FpLnpoZW5nQGludGVsLmNvbTAeFw0xNDA1MTMx
-MzI3MjFaFw0xNTA1MTMxMzI3MjFaMIGLMQswCQYDVQQGEwJjaDERMA8GA1UECAwI
-c2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4wDAYDVQQKDAVpbnRlbDEQMA4G
-A1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0YTEiMCAGCSqGSIb3DQEJARYT
-a2FpLnpoZW5nQGludGVsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMs0jF1fi5AVMunQ/jpxgSjRlpmVQyT//LrwBmyI77C+hCD4z/InoG4q2tl5
-fAH+2n7HHgon4E0QXyRxAz0+Ugun7qHW9oT2pnxoc1l8seyGNMK9adsxLpCv7RXK
-quqLcj34UQCzRDKxgkH5UBwxGY0kId0W1MqPh1LZRZIk1hakREC4DBj+slnDkN0s
-nh8pC/8q/hTPJ9QrqWT6oc1FjMVKz3FxFbxXELYxg4M6SXnzGzdWa3xSe4Ou0QO2
-EwncQUoo8N6plOKX5lncDhC2usT//AZHvKdcVmOwX0ByxZqGQIXk7g1kbsbG5m45
-JMjt/HnOQcfg88iSLKJZu+ODw00CAwEAAaOBxjCBwzAJBgNVHRMEAjAAMAsGA1Ud
-DwQEAwID6DASBgNVHSUECzAJBgcrBgEFAgMFMB0GA1UdDgQWBBS8Bmb9kTUkw61e
-Is+9KDV5U6JjyjAfBgNVHSMEGDAWgBQ/dUlTno38Mbt9/uTdE3WGxyW4ADAJBgNV
-HRIEAjAAMEoGA1UdEQRDMEGgPwYGKwYBBQICoDUwM6AOGwxTSC5JTlRFTC5DT02h
-ITAfoAMCAQGhGDAWGwZrcmJ0Z3QbDFNILklOVEVMLkNPTTANBgkqhkiG9w0BAQUF
-AAOCAQEAS/I0zH9ByFcXTF56I5aPmPdzYKpIpFF6Kkwyw0M2EuIcTcpDl74/xmq9
-YPHS6TSDAt3wHzs9JQlSWah04L0R+IgHVacLRgdXfTWqglFFH/pve3p49WCrYmWz
-txQeRV5dxzaE3oTdDq15DRkUJmt0GIk1x6ehrGZOpIL8oTFmVmnR7EgrKWlIMYCs
-R/GkEuCH15wadom/Hw5Db1KLPEjxCdwy947guOh4SO0fcW3h55V3troS/46TbVFF
-FvNSqGD+19/QM/MhLIy5OnTxOio8M9zp+yfDlzLnpbMi0ZO6tLvB4XhjvP0as34c
-5vCA/8HPfaearSyAYi2Ir9vT3O9J/w==
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/main/resources/kdckey.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/main/resources/kdckey.pem b/lib/kerby-pkix/src/main/resources/kdckey.pem
deleted file mode 100644
index c9e75e2..0000000
--- a/lib/kerby-pkix/src/main/resources/kdckey.pem
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAyzSMXV+LkBUy6dD+OnGBKNGWmZVDJP/8uvAGbIjvsL6EIPjP
-8iegbira2Xl8Af7afsceCifgTRBfJHEDPT5SC6fuodb2hPamfGhzWXyx7IY0wr1p
-2zEukK/tFcqq6otyPfhRALNEMrGCQflQHDEZjSQh3RbUyo+HUtlFkiTWFqREQLgM
-GP6yWcOQ3SyeHykL/yr+FM8n1CupZPqhzUWMxUrPcXEVvFcQtjGDgzpJefMbN1Zr
-fFJ7g67RA7YTCdxBSijw3qmU4pfmWdwOELa6xP/8Bke8p1xWY7BfQHLFmoZAheTu
-DWRuxsbmbjkkyO38ec5Bx+DzyJIsolm744PDTQIDAQABAoIBAQC4Byb3iQgDvK8X
-QcZ7dz/Zj7Yr8RmV8J8ZTTcEJB+umVtf4PWyAGEyZG0+dt7vj7ahCgMSf3qLUEBZ
-6F9en4n+NF/RAbTQRfAQyydr65nW8tPlaVTsxWW+cxTrn1eagh88MB5r2+3vWwL0
-bK04Wt8hC4//giXELKgJR+vRprqcVRgy11nYaTP59IDdg4YscbHfc/LYa7ABQ1G5
-5NKtjMy13UvtD/4C3TS1NpL2xtzAgQRe3XFDIyOmv476Ts1boqSHBFX+MXmLBAfi
-8Qhaj1DO8A0HS/c4egcL6esCe4kcgtCuq66n8JzOlVbCDGOYIUkUyQ9Nfo31M5i5
-XhqF9CsBAoGBAP7PqkncLAvyjHQKPpDyWCBtkV7z+DWRZRPz4w8tit+TiAv6hRF7
-kK+NUhP1mBuS4duyEV58B8LWOR0ir7ftbL0/unxR1XWMOvTEHr/9lG1sKZoI0dJS
-Ee+VvuVFwdm/ABxfnveGCRrSHY7GAvFln3gC1Cst3NPPKbpznb3FiH/JAoGBAMwn
-P1Labt/OuzB70Vxve3TCeFA6jYzcYdA3riv1V0FIWoNgcQ742b0+6HDpEQgn4Rdb
-KiKz8hSplM1nx8NyWwS9r7gRQ9HIc0qC5S4A0A9QEbdKrkUiQDlwHgdDKPPCWih9
-qH05etiQ044BtOq7uXsWYqiIomOW/XyDUEhbRRFlAoGALmVnj01Mo9xFILfgzomh
-7D2nE4/+qNpRekGVHWVgfPci9XNnGVjTbnOf90xnptWm1Fbm/Lo+u4ZAHgL71dSg
-UREyhoJsCJxA++Jd6v1kMkxYgtiKQ+53n5U3jg2Wj2xMu93ZVx6Lt9t8UEvTq1qi
-n7p8IWSXaeW1pmJ43V4DTakCgYAFcSpj+ASqnKUqxrIvB52/4As7AESTs7A7z7Ap
-5dFcoSQgimqZHpMXU1z43Y2hrQZ4C+sUn71dRaP80b5mfF7mwnOzsWogZnqESvb3
-AfiJ3/WI8Emy+BXEMjPqt6SY0t56Y9cg925J5ZpuF6eN9lEccd1RZssFYpoBPrLe
-KuitbQKBgQC3DNejUqol2max6rf4h/GnwLE2BOTmFLnswexlw76p/63Jo1SaVpk7
-9nAltsqNCl4L/eAJ8hJdeTE5YVjYsgAVJrXZbiRfxHBMeHj9g0d1VafGqdomKf0R
-7Qytlcvsw8jn96ckEMPPLJF0bX5cu9S6lMyEbb6Ih41P13uvgP6ufg==
------END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/main/resources/usercert.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/main/resources/usercert.pem b/lib/kerby-pkix/src/main/resources/usercert.pem
deleted file mode 100644
index 67e538c..0000000
--- a/lib/kerby-pkix/src/main/resources/usercert.pem
+++ /dev/null
@@ -1,26 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEYjCCA0qgAwIBAgIJAL2ZFUkXCgK2MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYD
-VQQGEwJjaDERMA8GA1UECAwIc2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4w
-DAYDVQQKDAVpbnRlbDEQMA4GA1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0
-YTEiMCAGCSqGSIb3DQEJARYTa2FpLnpoZW5nQGludGVsLmNvbTAeFw0xNDA1MTMx
-MzI3MjFaFw0xNTA1MTMxMzI3MjFaMIGLMQswCQYDVQQGEwJjaDERMA8GA1UECAwI
-c2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4wDAYDVQQKDAVpbnRlbDEQMA4G
-A1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0YTEiMCAGCSqGSIb3DQEJARYT
-a2FpLnpoZW5nQGludGVsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMs0jF1fi5AVMunQ/jpxgSjRlpmVQyT//LrwBmyI77C+hCD4z/InoG4q2tl5
-fAH+2n7HHgon4E0QXyRxAz0+Ugun7qHW9oT2pnxoc1l8seyGNMK9adsxLpCv7RXK
-quqLcj34UQCzRDKxgkH5UBwxGY0kId0W1MqPh1LZRZIk1hakREC4DBj+slnDkN0s
-nh8pC/8q/hTPJ9QrqWT6oc1FjMVKz3FxFbxXELYxg4M6SXnzGzdWa3xSe4Ou0QO2
-EwncQUoo8N6plOKX5lncDhC2usT//AZHvKdcVmOwX0ByxZqGQIXk7g1kbsbG5m45
-JMjt/HnOQcfg88iSLKJZu+ODw00CAwEAAaOBxjCBwzAJBgNVHRMEAjAAMAsGA1Ud
-DwQEAwID6DASBgNVHSUECzAJBgcrBgEFAgMFMB0GA1UdDgQWBBS8Bmb9kTUkw61e
-Is+9KDV5U6JjyjAfBgNVHSMEGDAWgBQ/dUlTno38Mbt9/uTdE3WGxyW4ADAJBgNV
-HRIEAjAAMEoGA1UdEQRDMEGgPwYGKwYBBQICoDUwM6AOGwxTSC5JTlRFTC5DT02h
-ITAfoAMCAQGhGDAWGwZrcmJ0Z3QbDFNILklOVEVMLkNPTTANBgkqhkiG9w0BAQUF
-AAOCAQEAS/I0zH9ByFcXTF56I5aPmPdzYKpIpFF6Kkwyw0M2EuIcTcpDl74/xmq9
-YPHS6TSDAt3wHzs9JQlSWah04L0R+IgHVacLRgdXfTWqglFFH/pve3p49WCrYmWz
-txQeRV5dxzaE3oTdDq15DRkUJmt0GIk1x6ehrGZOpIL8oTFmVmnR7EgrKWlIMYCs
-R/GkEuCH15wadom/Hw5Db1KLPEjxCdwy947guOh4SO0fcW3h55V3troS/46TbVFF
-FvNSqGD+19/QM/MhLIy5OnTxOio8M9zp+yfDlzLnpbMi0ZO6tLvB4XhjvP0as34c
-5vCA/8HPfaearSyAYi2Ir9vT3O9J/w==
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/main/resources/userkey.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/main/resources/userkey.pem b/lib/kerby-pkix/src/main/resources/userkey.pem
deleted file mode 100644
index c9e75e2..0000000
--- a/lib/kerby-pkix/src/main/resources/userkey.pem
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAyzSMXV+LkBUy6dD+OnGBKNGWmZVDJP/8uvAGbIjvsL6EIPjP
-8iegbira2Xl8Af7afsceCifgTRBfJHEDPT5SC6fuodb2hPamfGhzWXyx7IY0wr1p
-2zEukK/tFcqq6otyPfhRALNEMrGCQflQHDEZjSQh3RbUyo+HUtlFkiTWFqREQLgM
-GP6yWcOQ3SyeHykL/yr+FM8n1CupZPqhzUWMxUrPcXEVvFcQtjGDgzpJefMbN1Zr
-fFJ7g67RA7YTCdxBSijw3qmU4pfmWdwOELa6xP/8Bke8p1xWY7BfQHLFmoZAheTu
-DWRuxsbmbjkkyO38ec5Bx+DzyJIsolm744PDTQIDAQABAoIBAQC4Byb3iQgDvK8X
-QcZ7dz/Zj7Yr8RmV8J8ZTTcEJB+umVtf4PWyAGEyZG0+dt7vj7ahCgMSf3qLUEBZ
-6F9en4n+NF/RAbTQRfAQyydr65nW8tPlaVTsxWW+cxTrn1eagh88MB5r2+3vWwL0
-bK04Wt8hC4//giXELKgJR+vRprqcVRgy11nYaTP59IDdg4YscbHfc/LYa7ABQ1G5
-5NKtjMy13UvtD/4C3TS1NpL2xtzAgQRe3XFDIyOmv476Ts1boqSHBFX+MXmLBAfi
-8Qhaj1DO8A0HS/c4egcL6esCe4kcgtCuq66n8JzOlVbCDGOYIUkUyQ9Nfo31M5i5
-XhqF9CsBAoGBAP7PqkncLAvyjHQKPpDyWCBtkV7z+DWRZRPz4w8tit+TiAv6hRF7
-kK+NUhP1mBuS4duyEV58B8LWOR0ir7ftbL0/unxR1XWMOvTEHr/9lG1sKZoI0dJS
-Ee+VvuVFwdm/ABxfnveGCRrSHY7GAvFln3gC1Cst3NPPKbpznb3FiH/JAoGBAMwn
-P1Labt/OuzB70Vxve3TCeFA6jYzcYdA3riv1V0FIWoNgcQ742b0+6HDpEQgn4Rdb
-KiKz8hSplM1nx8NyWwS9r7gRQ9HIc0qC5S4A0A9QEbdKrkUiQDlwHgdDKPPCWih9
-qH05etiQ044BtOq7uXsWYqiIomOW/XyDUEhbRRFlAoGALmVnj01Mo9xFILfgzomh
-7D2nE4/+qNpRekGVHWVgfPci9XNnGVjTbnOf90xnptWm1Fbm/Lo+u4ZAHgL71dSg
-UREyhoJsCJxA++Jd6v1kMkxYgtiKQ+53n5U3jg2Wj2xMu93ZVx6Lt9t8UEvTq1qi
-n7p8IWSXaeW1pmJ43V4DTakCgYAFcSpj+ASqnKUqxrIvB52/4As7AESTs7A7z7Ap
-5dFcoSQgimqZHpMXU1z43Y2hrQZ4C+sUn71dRaP80b5mfF7mwnOzsWogZnqESvb3
-AfiJ3/WI8Emy+BXEMjPqt6SY0t56Y9cg925J5ZpuF6eN9lEccd1RZssFYpoBPrLe
-KuitbQKBgQC3DNejUqol2max6rf4h/GnwLE2BOTmFLnswexlw76p/63Jo1SaVpk7
-9nAltsqNCl4L/eAJ8hJdeTE5YVjYsgAVJrXZbiRfxHBMeHj9g0d1VafGqdomKf0R
-7Qytlcvsw8jn96ckEMPPLJF0bX5cu9S6lMyEbb6Ih41P13uvgP6ufg==
------END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/test/resources/cacert.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/test/resources/cacert.pem b/lib/kerby-pkix/src/test/resources/cacert.pem
new file mode 100644
index 0000000..6b91561
--- /dev/null
+++ b/lib/kerby-pkix/src/test/resources/cacert.pem
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID6zCCAtOgAwIBAgIJAMrZoeDxTzwWMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYD
+VQQGEwJjaDERMA8GA1UECAwIc2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4w
+DAYDVQQKDAVpbnRlbDEQMA4GA1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0
+YTEiMCAGCSqGSIb3DQEJARYTa2FpLnpoZW5nQGludGVsLmNvbTAeFw0xNDA1MTMx
+MzEzMjdaFw0yNDA1MTAxMzEzMjdaMIGLMQswCQYDVQQGEwJjaDERMA8GA1UECAwI
+c2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4wDAYDVQQKDAVpbnRlbDEQMA4G
+A1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0YTEiMCAGCSqGSIb3DQEJARYT
+a2FpLnpoZW5nQGludGVsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAMCznJJ02ZUjCPvAwnBmfPs0akb5QRc/NKu8kCtAPWzgHS2JPTQfJhkDbTAD
+eIlg8IeJpOdrYnzdaBCzgxqjSkls+vxjYotOU0Zbrpy2bj0lRDqdYbNsiuConKgT
+MeuDEd/4ZI0X9NWLAi06Iv1F4mHXf36c6uqiUWTtXiofogrFUoTRwACKR2qeC95X
+Py+FDmpS9lz0mo0vDWjetLQC2IBngjjPFdR16n87QDIWfRBkk66rn7rEA6Li66b/
+cToajMSA/n+2Ud1mntSY4RdDdd0TBtAq9RrXtUOfzGaE7S6t+FtYyEprvT4FdOTU
+uyYgSNaI9ANVP1zhQ9LACKuudOECAwEAAaNQME4wHQYDVR0OBBYEFD91SVOejfwx
+u33+5N0TdYbHJbgAMB8GA1UdIwQYMBaAFD91SVOejfwxu33+5N0TdYbHJbgAMAwG
+A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADsONtUqGNBPBXnRowcJwv+Y
+F1Vea+4dkBwYbhkiO6H5XMKr+waOnOD2eAvgP4aeYg/a0xOzzETRD9wi1Z1P1ZMy
+d/NzHQjj4egPENwDv1PH2voZgsXXzXIqUMOtz9t12TuJUrSA2SBW1tz/evckHhNY
+fHg4ThvTIgwEdV/yvrOEBLV9dXG5IhhF+NW1MegTGkt4SpOoH1pi3o9VekVRnix9
+xrIdaC4Ee6vQaR603HwDS9Y+a1c2KU7QoLX8Vaa904cQ+rxhGsTAkocnZXeo6Hl5
+V8BlDYXxeP86fzcWi04ll2BmEEw/RimHEOLpGqxTVHJ5p5BVSCHP8aCD0VJheaU=
+-----END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/test/resources/cakey.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/test/resources/cakey.pem b/lib/kerby-pkix/src/test/resources/cakey.pem
new file mode 100644
index 0000000..66dc806
--- /dev/null
+++ b/lib/kerby-pkix/src/test/resources/cakey.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAwLOcknTZlSMI+8DCcGZ8+zRqRvlBFz80q7yQK0A9bOAdLYk9
+NB8mGQNtMAN4iWDwh4mk52tifN1oELODGqNKSWz6/GNii05TRluunLZuPSVEOp1h
+s2yK4KicqBMx64MR3/hkjRf01YsCLToi/UXiYdd/fpzq6qJRZO1eKh+iCsVShNHA
+AIpHap4L3lc/L4UOalL2XPSajS8NaN60tALYgGeCOM8V1HXqfztAMhZ9EGSTrquf
+usQDouLrpv9xOhqMxID+f7ZR3Wae1JjhF0N13RMG0Cr1Gte1Q5/MZoTtLq34W1jI
+Smu9PgV05NS7JiBI1oj0A1U/XOFD0sAIq6504QIDAQABAoIBAHqFeMax3unxBbQ0
+Aiy/LTX3RJ9tuZITUOTklnG5fZStBkA+oxhxuaJryE+f1VLbvPMgdCXj5BHqIFGG
+IZSdQA1hak9wzWYvXck9X88qOvtLp47xI/6Vw9NFwZ0n3zST+JiD8UK4eaYQpUim
+Tzrj5SU6hEi3crHOlJvsRFPaGwhnA9wycoOo4o22XBj3C8Hwzi4vWcKXH/RCSwZQ
+zFuYbe77Pn9Sv5q5zdglkmm7wngoVt/aKQke/Vk+Eincx1V12b05DNLjugo6FWQh
+0f2MmHpvqNSHs9USC5+y2lKQ1JNHh7mnpPCXkZEH4V7q+3mKVzl9tXzj9Gul20pw
+tneD6WUCgYEA9QUrQoWHKeVMjeukHjDJa2KjRLMmg9YRQyVABH9+nQTp1jYUjMRA
+GUoUx91gG6gjjJD/xvor/U0Fh3vKtZE93c+avrcaYDwf3q/L4gh+3b87lVDfzjrp
+L+MPTpEzWiyyLfr/kLA0TgUjnrj9bav5uDps8mJpNf8s9ZP1/QDhF5sCgYEAyVZA
+pHSIyBI2GT0+92JXvYDK/ZfV5m4RGHaG/PMDoU4IbGbjHVyzzsyzDUgvOASXwfF8
+YzwX7Tf95RZw12P/Jepxt0vqBJPKUCsMLUrmANQvN1Pz8+Vk6UADLM7kNc06MqB9
+/U3GKCFZZuedEhbgXnEV9gzelhILImJGZMxG0zMCgYApymnofLHjGXMHOcvSQmv4
+XuiODShikB59n1rd6YkE6xOfL7YtlEOCjLoipMWBshnuHcUigQUDvSFWTGz0rwMo
+VAKGyOA8zcR5zO4vbVeGJtnYy+SAXlfrjQTNV8K0fK8fXJI+cW9aZ1H9/ntrO0vq
+ejye0t4zEYTvlf782iuKRQKBgQCnTQ7mGRfX+JoPmv8JniR+idkjpNnPYsK96y/8
+XQs1LJx/R3eN3IxlWV+nt8XU7KwWMs5Dv5m6Ov61MFKQCL3qCch4oZJSP2Sr/Tlf
+IY/CPI8HkLF0h7e0wsZgo4Kq2mBz1T0cEVaJ3jxl8Cxq7at/jsTK8qK7XT73UWZh
+OAXaVQKBgDmg2QTX7c0/dbDMOuw18g3xfE/oqU+VWT784wtvpcdjHR+KAVLWHG8l
+oc/bm8Bs0o0f5dfH7uUvWdP6JMvbgYZBgIMqw+iH8P2lFCLzIRf0me/l+r0Oi64U
+5jp9K+7Ggc7S0SSnCLmBLMN5lXQZbhzks1La7DZmFeAz8rOEnlUB
+-----END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/test/resources/extensions.kdc
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/test/resources/extensions.kdc b/lib/kerby-pkix/src/test/resources/extensions.kdc
new file mode 100644
index 0000000..8052f71
--- /dev/null
+++ b/lib/kerby-pkix/src/test/resources/extensions.kdc
@@ -0,0 +1,36 @@
+# 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.
+[kdc_cert]
+basicConstraints=CA:FALSE
+keyUsage=nonRepudiation,digitalSignature,keyEncipherment,keyAgreement
+extendedKeyUsage=1.3.6.1.5.2.3.5
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid,issuer
+issuerAltName=issuer:copy
+subjectAltName=otherName:1.3.6.1.5.2.2;SEQUENCE:kdc_princ_name
+
+[kdc_princ_name]
+realm=EXP:0,GeneralString:${ENV::REALM}
+principal_name=EXP:1,SEQUENCE:kdc_principal_seq
+
+[kdc_principal_seq]
+name_type=EXP:0,INTEGER:1
+name_string=EXP:1,SEQUENCE:kdc_principals
+
+[kdc_principals]
+princ1=GeneralString:krbtgt
+princ2=GeneralString:${ENV::REALM}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/test/resources/kdccert.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/test/resources/kdccert.pem b/lib/kerby-pkix/src/test/resources/kdccert.pem
new file mode 100644
index 0000000..67e538c
--- /dev/null
+++ b/lib/kerby-pkix/src/test/resources/kdccert.pem
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEYjCCA0qgAwIBAgIJAL2ZFUkXCgK2MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYD
+VQQGEwJjaDERMA8GA1UECAwIc2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4w
+DAYDVQQKDAVpbnRlbDEQMA4GA1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0
+YTEiMCAGCSqGSIb3DQEJARYTa2FpLnpoZW5nQGludGVsLmNvbTAeFw0xNDA1MTMx
+MzI3MjFaFw0xNTA1MTMxMzI3MjFaMIGLMQswCQYDVQQGEwJjaDERMA8GA1UECAwI
+c2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4wDAYDVQQKDAVpbnRlbDEQMA4G
+A1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0YTEiMCAGCSqGSIb3DQEJARYT
+a2FpLnpoZW5nQGludGVsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAMs0jF1fi5AVMunQ/jpxgSjRlpmVQyT//LrwBmyI77C+hCD4z/InoG4q2tl5
+fAH+2n7HHgon4E0QXyRxAz0+Ugun7qHW9oT2pnxoc1l8seyGNMK9adsxLpCv7RXK
+quqLcj34UQCzRDKxgkH5UBwxGY0kId0W1MqPh1LZRZIk1hakREC4DBj+slnDkN0s
+nh8pC/8q/hTPJ9QrqWT6oc1FjMVKz3FxFbxXELYxg4M6SXnzGzdWa3xSe4Ou0QO2
+EwncQUoo8N6plOKX5lncDhC2usT//AZHvKdcVmOwX0ByxZqGQIXk7g1kbsbG5m45
+JMjt/HnOQcfg88iSLKJZu+ODw00CAwEAAaOBxjCBwzAJBgNVHRMEAjAAMAsGA1Ud
+DwQEAwID6DASBgNVHSUECzAJBgcrBgEFAgMFMB0GA1UdDgQWBBS8Bmb9kTUkw61e
+Is+9KDV5U6JjyjAfBgNVHSMEGDAWgBQ/dUlTno38Mbt9/uTdE3WGxyW4ADAJBgNV
+HRIEAjAAMEoGA1UdEQRDMEGgPwYGKwYBBQICoDUwM6AOGwxTSC5JTlRFTC5DT02h
+ITAfoAMCAQGhGDAWGwZrcmJ0Z3QbDFNILklOVEVMLkNPTTANBgkqhkiG9w0BAQUF
+AAOCAQEAS/I0zH9ByFcXTF56I5aPmPdzYKpIpFF6Kkwyw0M2EuIcTcpDl74/xmq9
+YPHS6TSDAt3wHzs9JQlSWah04L0R+IgHVacLRgdXfTWqglFFH/pve3p49WCrYmWz
+txQeRV5dxzaE3oTdDq15DRkUJmt0GIk1x6ehrGZOpIL8oTFmVmnR7EgrKWlIMYCs
+R/GkEuCH15wadom/Hw5Db1KLPEjxCdwy947guOh4SO0fcW3h55V3troS/46TbVFF
+FvNSqGD+19/QM/MhLIy5OnTxOio8M9zp+yfDlzLnpbMi0ZO6tLvB4XhjvP0as34c
+5vCA/8HPfaearSyAYi2Ir9vT3O9J/w==
+-----END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/test/resources/kdckey.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/test/resources/kdckey.pem b/lib/kerby-pkix/src/test/resources/kdckey.pem
new file mode 100644
index 0000000..c9e75e2
--- /dev/null
+++ b/lib/kerby-pkix/src/test/resources/kdckey.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAyzSMXV+LkBUy6dD+OnGBKNGWmZVDJP/8uvAGbIjvsL6EIPjP
+8iegbira2Xl8Af7afsceCifgTRBfJHEDPT5SC6fuodb2hPamfGhzWXyx7IY0wr1p
+2zEukK/tFcqq6otyPfhRALNEMrGCQflQHDEZjSQh3RbUyo+HUtlFkiTWFqREQLgM
+GP6yWcOQ3SyeHykL/yr+FM8n1CupZPqhzUWMxUrPcXEVvFcQtjGDgzpJefMbN1Zr
+fFJ7g67RA7YTCdxBSijw3qmU4pfmWdwOELa6xP/8Bke8p1xWY7BfQHLFmoZAheTu
+DWRuxsbmbjkkyO38ec5Bx+DzyJIsolm744PDTQIDAQABAoIBAQC4Byb3iQgDvK8X
+QcZ7dz/Zj7Yr8RmV8J8ZTTcEJB+umVtf4PWyAGEyZG0+dt7vj7ahCgMSf3qLUEBZ
+6F9en4n+NF/RAbTQRfAQyydr65nW8tPlaVTsxWW+cxTrn1eagh88MB5r2+3vWwL0
+bK04Wt8hC4//giXELKgJR+vRprqcVRgy11nYaTP59IDdg4YscbHfc/LYa7ABQ1G5
+5NKtjMy13UvtD/4C3TS1NpL2xtzAgQRe3XFDIyOmv476Ts1boqSHBFX+MXmLBAfi
+8Qhaj1DO8A0HS/c4egcL6esCe4kcgtCuq66n8JzOlVbCDGOYIUkUyQ9Nfo31M5i5
+XhqF9CsBAoGBAP7PqkncLAvyjHQKPpDyWCBtkV7z+DWRZRPz4w8tit+TiAv6hRF7
+kK+NUhP1mBuS4duyEV58B8LWOR0ir7ftbL0/unxR1XWMOvTEHr/9lG1sKZoI0dJS
+Ee+VvuVFwdm/ABxfnveGCRrSHY7GAvFln3gC1Cst3NPPKbpznb3FiH/JAoGBAMwn
+P1Labt/OuzB70Vxve3TCeFA6jYzcYdA3riv1V0FIWoNgcQ742b0+6HDpEQgn4Rdb
+KiKz8hSplM1nx8NyWwS9r7gRQ9HIc0qC5S4A0A9QEbdKrkUiQDlwHgdDKPPCWih9
+qH05etiQ044BtOq7uXsWYqiIomOW/XyDUEhbRRFlAoGALmVnj01Mo9xFILfgzomh
+7D2nE4/+qNpRekGVHWVgfPci9XNnGVjTbnOf90xnptWm1Fbm/Lo+u4ZAHgL71dSg
+UREyhoJsCJxA++Jd6v1kMkxYgtiKQ+53n5U3jg2Wj2xMu93ZVx6Lt9t8UEvTq1qi
+n7p8IWSXaeW1pmJ43V4DTakCgYAFcSpj+ASqnKUqxrIvB52/4As7AESTs7A7z7Ap
+5dFcoSQgimqZHpMXU1z43Y2hrQZ4C+sUn71dRaP80b5mfF7mwnOzsWogZnqESvb3
+AfiJ3/WI8Emy+BXEMjPqt6SY0t56Y9cg925J5ZpuF6eN9lEccd1RZssFYpoBPrLe
+KuitbQKBgQC3DNejUqol2max6rf4h/GnwLE2BOTmFLnswexlw76p/63Jo1SaVpk7
+9nAltsqNCl4L/eAJ8hJdeTE5YVjYsgAVJrXZbiRfxHBMeHj9g0d1VafGqdomKf0R
+7Qytlcvsw8jn96ckEMPPLJF0bX5cu9S6lMyEbb6Ih41P13uvgP6ufg==
+-----END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/test/resources/usercert.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/test/resources/usercert.pem b/lib/kerby-pkix/src/test/resources/usercert.pem
new file mode 100644
index 0000000..67e538c
--- /dev/null
+++ b/lib/kerby-pkix/src/test/resources/usercert.pem
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEYjCCA0qgAwIBAgIJAL2ZFUkXCgK2MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYD
+VQQGEwJjaDERMA8GA1UECAwIc2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4w
+DAYDVQQKDAVpbnRlbDEQMA4GA1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0
+YTEiMCAGCSqGSIb3DQEJARYTa2FpLnpoZW5nQGludGVsLmNvbTAeFw0xNDA1MTMx
+MzI3MjFaFw0xNTA1MTMxMzI3MjFaMIGLMQswCQYDVQQGEwJjaDERMA8GA1UECAwI
+c2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ4wDAYDVQQKDAVpbnRlbDEQMA4G
+A1UECwwHYmlnZGF0YTEQMA4GA1UEAwwHYmlnZGF0YTEiMCAGCSqGSIb3DQEJARYT
+a2FpLnpoZW5nQGludGVsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAMs0jF1fi5AVMunQ/jpxgSjRlpmVQyT//LrwBmyI77C+hCD4z/InoG4q2tl5
+fAH+2n7HHgon4E0QXyRxAz0+Ugun7qHW9oT2pnxoc1l8seyGNMK9adsxLpCv7RXK
+quqLcj34UQCzRDKxgkH5UBwxGY0kId0W1MqPh1LZRZIk1hakREC4DBj+slnDkN0s
+nh8pC/8q/hTPJ9QrqWT6oc1FjMVKz3FxFbxXELYxg4M6SXnzGzdWa3xSe4Ou0QO2
+EwncQUoo8N6plOKX5lncDhC2usT//AZHvKdcVmOwX0ByxZqGQIXk7g1kbsbG5m45
+JMjt/HnOQcfg88iSLKJZu+ODw00CAwEAAaOBxjCBwzAJBgNVHRMEAjAAMAsGA1Ud
+DwQEAwID6DASBgNVHSUECzAJBgcrBgEFAgMFMB0GA1UdDgQWBBS8Bmb9kTUkw61e
+Is+9KDV5U6JjyjAfBgNVHSMEGDAWgBQ/dUlTno38Mbt9/uTdE3WGxyW4ADAJBgNV
+HRIEAjAAMEoGA1UdEQRDMEGgPwYGKwYBBQICoDUwM6AOGwxTSC5JTlRFTC5DT02h
+ITAfoAMCAQGhGDAWGwZrcmJ0Z3QbDFNILklOVEVMLkNPTTANBgkqhkiG9w0BAQUF
+AAOCAQEAS/I0zH9ByFcXTF56I5aPmPdzYKpIpFF6Kkwyw0M2EuIcTcpDl74/xmq9
+YPHS6TSDAt3wHzs9JQlSWah04L0R+IgHVacLRgdXfTWqglFFH/pve3p49WCrYmWz
+txQeRV5dxzaE3oTdDq15DRkUJmt0GIk1x6ehrGZOpIL8oTFmVmnR7EgrKWlIMYCs
+R/GkEuCH15wadom/Hw5Db1KLPEjxCdwy947guOh4SO0fcW3h55V3troS/46TbVFF
+FvNSqGD+19/QM/MhLIy5OnTxOio8M9zp+yfDlzLnpbMi0ZO6tLvB4XhjvP0as34c
+5vCA/8HPfaearSyAYi2Ir9vT3O9J/w==
+-----END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/fe44b276/lib/kerby-pkix/src/test/resources/userkey.pem
----------------------------------------------------------------------
diff --git a/lib/kerby-pkix/src/test/resources/userkey.pem b/lib/kerby-pkix/src/test/resources/userkey.pem
new file mode 100644
index 0000000..c9e75e2
--- /dev/null
+++ b/lib/kerby-pkix/src/test/resources/userkey.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAyzSMXV+LkBUy6dD+OnGBKNGWmZVDJP/8uvAGbIjvsL6EIPjP
+8iegbira2Xl8Af7afsceCifgTRBfJHEDPT5SC6fuodb2hPamfGhzWXyx7IY0wr1p
+2zEukK/tFcqq6otyPfhRALNEMrGCQflQHDEZjSQh3RbUyo+HUtlFkiTWFqREQLgM
+GP6yWcOQ3SyeHykL/yr+FM8n1CupZPqhzUWMxUrPcXEVvFcQtjGDgzpJefMbN1Zr
+fFJ7g67RA7YTCdxBSijw3qmU4pfmWdwOELa6xP/8Bke8p1xWY7BfQHLFmoZAheTu
+DWRuxsbmbjkkyO38ec5Bx+DzyJIsolm744PDTQIDAQABAoIBAQC4Byb3iQgDvK8X
+QcZ7dz/Zj7Yr8RmV8J8ZTTcEJB+umVtf4PWyAGEyZG0+dt7vj7ahCgMSf3qLUEBZ
+6F9en4n+NF/RAbTQRfAQyydr65nW8tPlaVTsxWW+cxTrn1eagh88MB5r2+3vWwL0
+bK04Wt8hC4//giXELKgJR+vRprqcVRgy11nYaTP59IDdg4YscbHfc/LYa7ABQ1G5
+5NKtjMy13UvtD/4C3TS1NpL2xtzAgQRe3XFDIyOmv476Ts1boqSHBFX+MXmLBAfi
+8Qhaj1DO8A0HS/c4egcL6esCe4kcgtCuq66n8JzOlVbCDGOYIUkUyQ9Nfo31M5i5
+XhqF9CsBAoGBAP7PqkncLAvyjHQKPpDyWCBtkV7z+DWRZRPz4w8tit+TiAv6hRF7
+kK+NUhP1mBuS4duyEV58B8LWOR0ir7ftbL0/unxR1XWMOvTEHr/9lG1sKZoI0dJS
+Ee+VvuVFwdm/ABxfnveGCRrSHY7GAvFln3gC1Cst3NPPKbpznb3FiH/JAoGBAMwn
+P1Labt/OuzB70Vxve3TCeFA6jYzcYdA3riv1V0FIWoNgcQ742b0+6HDpEQgn4Rdb
+KiKz8hSplM1nx8NyWwS9r7gRQ9HIc0qC5S4A0A9QEbdKrkUiQDlwHgdDKPPCWih9
+qH05etiQ044BtOq7uXsWYqiIomOW/XyDUEhbRRFlAoGALmVnj01Mo9xFILfgzomh
+7D2nE4/+qNpRekGVHWVgfPci9XNnGVjTbnOf90xnptWm1Fbm/Lo+u4ZAHgL71dSg
+UREyhoJsCJxA++Jd6v1kMkxYgtiKQ+53n5U3jg2Wj2xMu93ZVx6Lt9t8UEvTq1qi
+n7p8IWSXaeW1pmJ43V4DTakCgYAFcSpj+ASqnKUqxrIvB52/4As7AESTs7A7z7Ap
+5dFcoSQgimqZHpMXU1z43Y2hrQZ4C+sUn71dRaP80b5mfF7mwnOzsWogZnqESvb3
+AfiJ3/WI8Emy+BXEMjPqt6SY0t56Y9cg925J5ZpuF6eN9lEccd1RZssFYpoBPrLe
+KuitbQKBgQC3DNejUqol2max6rf4h/GnwLE2BOTmFLnswexlw76p/63Jo1SaVpk7
+9nAltsqNCl4L/eAJ8hJdeTE5YVjYsgAVJrXZbiRfxHBMeHj9g0d1VafGqdomKf0R
+7Qytlcvsw8jn96ckEMPPLJF0bX5cu9S6lMyEbb6Ih41P13uvgP6ufg==
+-----END RSA PRIVATE KEY-----