You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pl...@apache.org on 2015/11/30 04:09:42 UTC

[01/19] directory-kerby git commit: Separate encode/decode specific stuffs from AbstractAsn1Type into Asn1Object

Repository: directory-kerby
Updated Branches:
  refs/heads/pkinit-support ae595fb87 -> 9fe0fd885


Separate encode/decode specific stuffs from AbstractAsn1Type into Asn1Object


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

Branch: refs/heads/pkinit-support
Commit: 9601a5a8e83d1c39df581b2cff6a260a5330dc72
Parents: af7deb6
Author: Kai Zheng <ka...@intel.com>
Authored: Sat Nov 28 17:30:37 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sat Nov 28 17:30:37 2015 +0800

----------------------------------------------------------------------
 .../org/apache/kerby/asn1/Asn1InputBuffer.java  |   6 +-
 .../org/apache/kerby/asn1/Asn1OutputBuffer.java |   3 +-
 .../kerby/asn1/type/AbstractAsn1Type.java       | 440 +----------------
 .../org/apache/kerby/asn1/type/Asn1Object.java  | 484 +++++++++++++++++++
 .../kerberos/kerb/common/CheckSumUtil.java      |   6 +-
 .../kerberos/kerb/common/EncryptionUtil.java    |   4 +-
 .../apache/kerby/kerberos/kerb/KrbCodec.java    |   8 +-
 7 files changed, 500 insertions(+), 451 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9601a5a8/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 aeb5864..9d90319 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
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.asn1;
 
-import org.apache.kerby.asn1.type.AbstractAsn1Type;
 import org.apache.kerby.asn1.type.Asn1Item;
+import org.apache.kerby.asn1.type.Asn1Object;
 import org.apache.kerby.asn1.type.Asn1Type;
 
 import java.io.IOException;
@@ -68,7 +68,7 @@ public class Asn1InputBuffer {
         if (!limitedBuffer.available()) {
             return null;
         }
-        Asn1Item one = AbstractAsn1Type.decodeOne(limitedBuffer);
+        Asn1Item one = Asn1Object.decodeOne(limitedBuffer);
         if (one.isSimple()) {
             one.decodeValueAsSimple();
         } else if (one.isCollection()) {
@@ -96,7 +96,7 @@ public class Asn1InputBuffer {
 
     public void skipNext() throws IOException {
         if (limitedBuffer.available()) {
-            AbstractAsn1Type.skipOne(limitedBuffer);
+            Asn1Object.skipOne(limitedBuffer);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9601a5a8/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 f50d092..7748df6 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
@@ -20,6 +20,7 @@
 package org.apache.kerby.asn1;
 
 import org.apache.kerby.asn1.type.AbstractAsn1Type;
+import org.apache.kerby.asn1.type.Asn1Object;
 import org.apache.kerby.asn1.type.Asn1Type;
 
 import java.nio.ByteBuffer;
@@ -51,7 +52,7 @@ public class Asn1OutputBuffer {
         int allLen = 0;
         for (Asn1Type item : objects) {
             if (item != null) {
-                allLen += ((AbstractAsn1Type<?>) item).encodingLength();
+                allLen += ((Asn1Object) item).encodingLength();
             }
         }
         return allLen;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9601a5a8/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 7446c7c..4dc2c28 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
@@ -19,12 +19,7 @@
  */
 package org.apache.kerby.asn1.type;
 
-import org.apache.kerby.asn1.LimitedByteBuffer;
 import org.apache.kerby.asn1.TagClass;
-import org.apache.kerby.asn1.TaggingOption;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
 
 /**
  * The abstract ASN1 type for all the ASN1 types. It provides basic
@@ -32,20 +27,10 @@ import java.nio.ByteBuffer;
  *
  * @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 = 0;
-    private int encodingLen = -1;
+public abstract class AbstractAsn1Type<T> extends Asn1Object {
     // The wrapped real value.
     private T value;
 
-    // encoding options
-    private EncodingType encodingType = EncodingType.BER;
-    private boolean isImplicit = true;
-    private boolean isDefinitiveLength = false;
-
     /**
      * Default constructor, generally for decoding as a value container
      * @param tagClass The tag class
@@ -82,11 +67,8 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
      * @param value The value
      */
     public AbstractAsn1Type(TagClass tagClass, int tagNo, T value) {
-        this.tagClass = tagClass;
-        this.tagNo = tagNo;
+        super(tagClass, tagNo);
         this.value = value;
-
-        this.tagFlags |= tagClass.getValue();
     }
 
     public T getValue() {
@@ -96,422 +78,4 @@ public abstract class AbstractAsn1Type<T> implements Asn1Type {
     public void setValue(T value) {
         this.value = value;
     }
-
-    @Override
-    public TagClass tagClass() {
-        return tagClass;
-    }
-
-    protected void setTagClass(TagClass tagClass) {
-        this.tagClass = tagClass;
-    }
-
-    @Override
-    public int tagFlags() {
-        return tagFlags;
-    }
-
-    @Override
-    public int tagNo() {
-        return tagNo;
-    }
-
-    protected void setTagFlags(int tagFlags) {
-        this.tagFlags = tagFlags & 0xe0;
-    }
-
-    protected void setTagNo(int tagNo) {
-        this.tagNo = tagNo;
-    }
-
-    @Override
-    public void usePrimitive(boolean isPrimitive) {
-        if (isPrimitive) {
-            tagFlags &= ~CONSTRUCTED_FLAG;
-        } else {
-            tagFlags |= CONSTRUCTED_FLAG;
-        }
-    }
-
-    @Override
-    public boolean isPrimitive() {
-        return (tagFlags & CONSTRUCTED_FLAG) == 0;
-    }
-
-    @Override
-    public void useDefinitiveLength(boolean isDefinitiveLength) {
-        this.isDefinitiveLength = isDefinitiveLength;
-    }
-
-    @Override
-    public boolean isDefinitiveLength() {
-        return isDefinitiveLength;
-    }
-
-    @Override
-    public void useImplicit(boolean isImplicit) {
-        this.isImplicit = isImplicit;
-    }
-
-    @Override
-    public boolean isImplicit() {
-        return isImplicit;
-    }
-
-    @Override
-    public void useDER() {
-        this.encodingType = EncodingType.DER;
-    }
-
-    @Override
-    public boolean isDER() {
-        return encodingType == EncodingType.DER;
-    }
-
-    @Override
-    public void useBER() {
-        this.encodingType = EncodingType.BER;
-    }
-
-    @Override
-    public boolean isBER() {
-        return encodingType == EncodingType.BER;
-    }
-
-    @Override
-    public void useCER() {
-        this.encodingType = EncodingType.CER;
-    }
-
-    @Override
-    public boolean isCER() {
-        return encodingType == EncodingType.CER;
-    }
-
-    @Override
-    public byte[] encode() {
-        ByteBuffer byteBuffer = ByteBuffer.allocate(encodingLength());
-        encode(byteBuffer);
-        byteBuffer.flip();
-        return byteBuffer.array();
-    }
-
-    @Override
-    public void encode(ByteBuffer buffer) {
-        encodeTag(buffer, tagFlags(), tagNo());
-        encodeLength(buffer, encodingBodyLength());
-        encodeBody(buffer);
-    }
-
-    protected void encodeBody(ByteBuffer buffer) { }
-
-    @Override
-    public void decode(byte[] content) throws IOException {
-        decode(new LimitedByteBuffer(content));
-    }
-
-    @Override
-    public void decode(ByteBuffer content) throws IOException {
-        decode(new LimitedByteBuffer(content));
-    }
-
-    @Override
-    public int encodingLength() {
-        if (encodingLen == -1) {
-            int bodyLen = encodingBodyLength();
-            encodingLen = lengthOfTagLength(tagNo()) + lengthOfBodyLength(bodyLen) + bodyLen;
-        }
-        return encodingLen;
-    }
-
-    public boolean isUniversal() {
-        return tagClass.isUniversal();
-    }
-
-    public boolean isAppSpecific() {
-        return tagClass.isAppSpecific();
-    }
-
-    public boolean isContextSpecific() {
-        return tagClass.isContextSpecific();
-    }
-
-    public boolean isTagged() {
-        return tagClass.isTagged();
-    }
-
-    public boolean isSimple() {
-        return isUniversal() && Asn1Simple.isSimple(tagNo);
-    }
-
-    public boolean isCollection() {
-        return isUniversal() && Asn1Collection.isCollection(tagNo);
-    }
-
-    protected abstract int encodingBodyLength();
-
-    protected void decode(LimitedByteBuffer content) throws IOException {
-        int tag = readTag(content);
-        int tagNo = readTagNo(content, tag);
-        int tmpTagFlags = tag & 0xe0;
-        int length = readLength(content);
-
-        decode(tmpTagFlags, tagNo, new LimitedByteBuffer(content, length));
-    }
-
-    public void decode(int tagFlags, int tagNo,
-                       LimitedByteBuffer content) throws IOException {
-        if (tagClass() != TagClass.UNKNOWN && tagClass()
-                != TagClass.fromTagFlags(tagFlags)) {
-            throw new IOException("Unexpected tagFlags " + tagFlags
-                    + ", expecting " + tagClass());
-        }
-        if (tagNo() != -1 && tagNo() != tagNo) {
-            throw new IOException("Unexpected tagNo " + tagNo + ", "
-                    + "expecting " + tagNo());
-        }
-
-        setTagClass(TagClass.fromTagFlags(tagFlags));
-        setTagFlags(tagFlags);
-        setTagNo(tagNo);
-
-        decodeBody(content);
-    }
-
-    protected abstract void decodeBody(LimitedByteBuffer content) throws IOException;
-
-    protected int taggedEncodingLength(TaggingOption taggingOption) {
-        int taggingTagNo = taggingOption.getTagNo();
-        int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength()
-                : encodingLength();
-        int taggingEncodingLen = lengthOfTagLength(taggingTagNo)
-                + lengthOfBodyLength(taggingBodyLen) + taggingBodyLen;
-        return taggingEncodingLen;
-    }
-
-    public byte[] taggedEncode(TaggingOption taggingOption) {
-        ByteBuffer byteBuffer = ByteBuffer.allocate(taggedEncodingLength(taggingOption));
-        taggedEncode(byteBuffer, taggingOption);
-        byteBuffer.flip();
-        return byteBuffer.array();
-    }
-
-    @Override
-    public void taggedEncode(ByteBuffer buffer, TaggingOption taggingOption) {
-        int taggingTagFlags = taggingOption.tagFlags(!isPrimitive());
-        encodeTag(buffer, taggingTagFlags, taggingOption.getTagNo());
-        int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength()
-                : encodingLength();
-        encodeLength(buffer, taggingBodyLen);
-        if (taggingOption.isImplicit()) {
-            encodeBody(buffer);
-        } else {
-            encode(buffer);
-        }
-    }
-
-    public void taggedDecode(byte[] content,
-                             TaggingOption taggingOption) throws IOException {
-        taggedDecode(ByteBuffer.wrap(content), taggingOption);
-    }
-
-    @Override
-    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 {
-        int taggingTag = readTag(content);
-        int taggingTagNo = readTagNo(content, taggingTag);
-        int taggingLength = readLength(content);
-        LimitedByteBuffer newContent = new LimitedByteBuffer(content, taggingLength);
-
-        int tmpTagFlags = taggingTag & 0xe0;
-        taggedDecode(tmpTagFlags, taggingTagNo, newContent, taggingOption);
-    }
-
-    protected void taggedDecode(int taggingTagFlags, int taggingTagNo,
-                                LimitedByteBuffer content,
-                                TaggingOption taggingOption) throws IOException {
-        int expectedTaggingTagFlags = taggingOption.tagFlags(!isPrimitive());
-        if (expectedTaggingTagFlags != taggingTagFlags) {
-            throw new IOException("Unexpected tag flags " + taggingTagFlags
-                    + ", expecting " + expectedTaggingTagFlags);
-        }
-        if (taggingOption.getTagNo() != taggingTagNo) {
-            throw new IOException("Unexpected tagNo " + taggingTagNo + ", "
-                    + "expecting " + taggingOption.getTagNo());
-        }
-
-        if (taggingOption.isImplicit()) {
-            decodeBody(content);
-        } else {
-            decode(content);
-        }
-    }
-
-    public static Asn1Item decodeOne(LimitedByteBuffer content) throws IOException {
-        int tag = readTag(content);
-        int tagNo = readTagNo(content, tag);
-        int length = readLength(content);
-        if (length < 0) {
-            throw new IOException("Unexpected length");
-        }
-        LimitedByteBuffer valueContent = new LimitedByteBuffer(content, length);
-        content.skip(length);
-
-        Asn1Item result = new Asn1Item(tag, tagNo, valueContent);
-        if (result.isSimple()) {
-            result.decodeValueAsSimple();
-        }
-        return result;
-    }
-
-    public static void skipOne(LimitedByteBuffer content) throws IOException {
-        int tag = readTag(content);
-        readTagNo(content, tag);
-        int length = readLength(content);
-        if (length < 0) {
-            throw new IOException("Unexpected length");
-        }
-        content.skip(length);
-    }
-
-    public static int lengthOfBodyLength(int bodyLength) {
-        int length = 1;
-
-        if (bodyLength > 127) {
-            int payload = bodyLength;
-            while (payload != 0) {
-                payload >>= 8;
-                length++;
-            }
-        }
-
-        return length;
-    }
-
-    public static int lengthOfTagLength(int tagNo) {
-        int length = 1;
-
-        if (tagNo >= 31) {
-            if (tagNo < 128) {
-                length++;
-            } else {
-                length++;
-
-                do {
-                    tagNo >>= 7;
-                    length++;
-                } while (tagNo > 127);
-            }
-        }
-
-        return length;
-    }
-
-    public static void encodeTag(ByteBuffer buffer, int flags, int tagNo) {
-        if (tagNo < 31) {
-            buffer.put((byte) (flags | tagNo));
-        } else {
-            buffer.put((byte) (flags | 0x1f));
-            if (tagNo < 128) {
-                buffer.put((byte) tagNo);
-            } else {
-                byte[] tmpBytes = new byte[5]; // 5 * 7 > 32
-                int iPut = tmpBytes.length;
-
-                tmpBytes[--iPut] = (byte) (tagNo & 0x7f);
-                do {
-                    tagNo >>= 7;
-                    tmpBytes[--iPut] = (byte) (tagNo & 0x7f | 0x80);
-                } while (tagNo > 127);
-
-                buffer.put(tmpBytes, iPut, tmpBytes.length - iPut);
-            }
-        }
-    }
-
-    public static void encodeLength(ByteBuffer buffer, int bodyLength) {
-        if (bodyLength < 128) {
-            buffer.put((byte) bodyLength);
-        } else {
-            int length = 0;
-            int payload = bodyLength;
-
-            while (payload != 0) {
-                payload >>= 8;
-                length++;
-            }
-
-            buffer.put((byte) (length | 0x80));
-
-            payload = bodyLength;
-            for (int i = length - 1; i >= 0; i--) {
-                buffer.put((byte) (payload >> (i * 8)));
-            }
-        }
-    }
-
-    public static int readTag(LimitedByteBuffer buffer) throws IOException {
-        int tag = buffer.readByte() & 0xff;
-        if (tag == 0) {
-            throw new IOException("Bad tag 0 found");
-        }
-        return tag;
-    }
-
-    public static int readTagNo(LimitedByteBuffer buffer, int tag) throws IOException {
-        int tagNo = tag & 0x1f;
-
-        if (tagNo == 0x1f) {
-            tagNo = 0;
-
-            int b = buffer.readByte() & 0xff;
-            if ((b & 0x7f) == 0) {
-                throw new IOException("Invalid high tag number found");
-            }
-
-            while (b >= 0 && (b & 0x80) != 0) {
-                tagNo |= b & 0x7f;
-                tagNo <<= 7;
-                b = buffer.readByte();
-            }
-
-            tagNo |= b & 0x7f;
-        }
-
-        return tagNo;
-    }
-
-    public static int readLength(LimitedByteBuffer buffer) throws IOException {
-        int bodyLength = buffer.readByte() & 0xff;
-
-        if (bodyLength > 127) {
-            int length = bodyLength & 0x7f;
-            if (length > 4) {
-                throw new IOException("Bad bodyLength of more than 4 bytes: " + length);
-            }
-
-            bodyLength = 0;
-            int tmp;
-            for (int i = 0; i < length; i++) {
-                tmp = buffer.readByte() & 0xff;
-                bodyLength = (bodyLength << 8) + tmp;
-            }
-
-            if (bodyLength < 0) {
-                throw new IOException("Invalid bodyLength " + bodyLength);
-            }
-            if (bodyLength > buffer.hasLeft()) {
-                throw new IOException("Corrupt stream - less data "
-                        + buffer.hasLeft() + " than expected " + bodyLength);
-            }
-        }
-
-        return bodyLength;
-    }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9601a5a8/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Object.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Object.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Object.java
new file mode 100644
index 0000000..95da847
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Object.java
@@ -0,0 +1,484 @@
+/**
+ *  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.asn1.type;
+
+import org.apache.kerby.asn1.LimitedByteBuffer;
+import org.apache.kerby.asn1.TagClass;
+import org.apache.kerby.asn1.TaggingOption;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * The abstract ASN1 object for all the ASN1 types. It provides basic
+ * encoding and decoding utilities.
+ */
+public abstract class Asn1Object implements Asn1Type {
+
+    private TagClass tagClass = TagClass.UNKNOWN;
+    private int tagNo = -1;
+    private int tagFlags = 0;
+    private int encodingLen = -1;
+
+    // encoding options
+    private EncodingType encodingType = EncodingType.BER;
+    private boolean isImplicit = true;
+    private boolean isDefinitiveLength = false;
+
+    /**
+     * Constructor with a value, generally for encoding of the value
+     * @param tagFlags The tag flags
+     * @param tagNo The tag number
+     */
+    public Asn1Object(int tagFlags, int tagNo) {
+        this(TagClass.fromTagFlags(tagFlags), tagNo);
+        setTagFlags(tagFlags);
+    }
+
+    /**
+     * Constructor with a value, generally for encoding of the value
+     * @param tagClass The tag class
+     * @param tagNo The tag number
+     */
+    public Asn1Object(TagClass tagClass, int tagNo) {
+        this.tagClass = tagClass;
+        this.tagNo = tagNo;
+
+        this.tagFlags |= tagClass.getValue();
+    }
+
+    @Override
+    public TagClass tagClass() {
+        return tagClass;
+    }
+
+    protected void setTagClass(TagClass tagClass) {
+        this.tagClass = tagClass;
+    }
+
+    @Override
+    public int tagFlags() {
+        return tagFlags;
+    }
+
+    @Override
+    public int tagNo() {
+        return tagNo;
+    }
+
+    protected void setTagFlags(int tagFlags) {
+        this.tagFlags = tagFlags & 0xe0;
+    }
+
+    protected void setTagNo(int tagNo) {
+        this.tagNo = tagNo;
+    }
+
+    @Override
+    public void usePrimitive(boolean isPrimitive) {
+        if (isPrimitive) {
+            tagFlags &= ~CONSTRUCTED_FLAG;
+        } else {
+            tagFlags |= CONSTRUCTED_FLAG;
+        }
+    }
+
+    @Override
+    public boolean isPrimitive() {
+        return (tagFlags & CONSTRUCTED_FLAG) == 0;
+    }
+
+    @Override
+    public void useDefinitiveLength(boolean isDefinitiveLength) {
+        this.isDefinitiveLength = isDefinitiveLength;
+    }
+
+    @Override
+    public boolean isDefinitiveLength() {
+        return isDefinitiveLength;
+    }
+
+    @Override
+    public void useImplicit(boolean isImplicit) {
+        this.isImplicit = isImplicit;
+    }
+
+    @Override
+    public boolean isImplicit() {
+        return isImplicit;
+    }
+
+    @Override
+    public void useDER() {
+        this.encodingType = EncodingType.DER;
+    }
+
+    @Override
+    public boolean isDER() {
+        return encodingType == EncodingType.DER;
+    }
+
+    @Override
+    public void useBER() {
+        this.encodingType = EncodingType.BER;
+    }
+
+    @Override
+    public boolean isBER() {
+        return encodingType == EncodingType.BER;
+    }
+
+    @Override
+    public void useCER() {
+        this.encodingType = EncodingType.CER;
+    }
+
+    @Override
+    public boolean isCER() {
+        return encodingType == EncodingType.CER;
+    }
+
+    @Override
+    public byte[] encode() {
+        ByteBuffer byteBuffer = ByteBuffer.allocate(encodingLength());
+        encode(byteBuffer);
+        byteBuffer.flip();
+        return byteBuffer.array();
+    }
+
+    @Override
+    public void encode(ByteBuffer buffer) {
+        encodeTag(buffer, tagFlags(), tagNo());
+        encodeLength(buffer, encodingBodyLength());
+        encodeBody(buffer);
+    }
+
+    protected void encodeBody(ByteBuffer buffer) { }
+
+    @Override
+    public void decode(byte[] content) throws IOException {
+        decode(new LimitedByteBuffer(content));
+    }
+
+    @Override
+    public void decode(ByteBuffer content) throws IOException {
+        decode(new LimitedByteBuffer(content));
+    }
+
+    @Override
+    public int encodingLength() {
+        if (encodingLen == -1) {
+            int bodyLen = encodingBodyLength();
+            encodingLen = lengthOfTagLength(tagNo()) + lengthOfBodyLength(bodyLen) + bodyLen;
+        }
+        return encodingLen;
+    }
+
+    public boolean isUniversal() {
+        return tagClass.isUniversal();
+    }
+
+    public boolean isAppSpecific() {
+        return tagClass.isAppSpecific();
+    }
+
+    public boolean isContextSpecific() {
+        return tagClass.isContextSpecific();
+    }
+
+    public boolean isTagged() {
+        return tagClass.isTagged();
+    }
+
+    public boolean isSimple() {
+        return isUniversal() && Asn1Simple.isSimple(tagNo);
+    }
+
+    public boolean isCollection() {
+        return isUniversal() && Asn1Collection.isCollection(tagNo);
+    }
+
+    protected abstract int encodingBodyLength();
+
+    protected void decode(LimitedByteBuffer content) throws IOException {
+        int tag = readTag(content);
+        int tagNo = readTagNo(content, tag);
+        int tmpTagFlags = tag & 0xe0;
+        int length = readLength(content);
+
+        decode(tmpTagFlags, tagNo, new LimitedByteBuffer(content, length));
+    }
+
+    public void decode(int tagFlags, int tagNo,
+                       LimitedByteBuffer content) throws IOException {
+        if (tagClass() != TagClass.UNKNOWN && tagClass()
+                != TagClass.fromTagFlags(tagFlags)) {
+            throw new IOException("Unexpected tagFlags " + tagFlags
+                    + ", expecting " + tagClass());
+        }
+        if (tagNo() != -1 && tagNo() != tagNo) {
+            throw new IOException("Unexpected tagNo " + tagNo + ", "
+                    + "expecting " + tagNo());
+        }
+
+        setTagClass(TagClass.fromTagFlags(tagFlags));
+        setTagFlags(tagFlags);
+        setTagNo(tagNo);
+
+        decodeBody(content);
+    }
+
+    protected abstract void decodeBody(LimitedByteBuffer content) throws IOException;
+
+    protected int taggedEncodingLength(TaggingOption taggingOption) {
+        int taggingTagNo = taggingOption.getTagNo();
+        int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength()
+                : encodingLength();
+        int taggingEncodingLen = lengthOfTagLength(taggingTagNo)
+                + lengthOfBodyLength(taggingBodyLen) + taggingBodyLen;
+        return taggingEncodingLen;
+    }
+
+    public byte[] taggedEncode(TaggingOption taggingOption) {
+        ByteBuffer byteBuffer = ByteBuffer.allocate(taggedEncodingLength(taggingOption));
+        taggedEncode(byteBuffer, taggingOption);
+        byteBuffer.flip();
+        return byteBuffer.array();
+    }
+
+    @Override
+    public void taggedEncode(ByteBuffer buffer, TaggingOption taggingOption) {
+        int taggingTagFlags = taggingOption.tagFlags(!isPrimitive());
+        encodeTag(buffer, taggingTagFlags, taggingOption.getTagNo());
+        int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength()
+                : encodingLength();
+        encodeLength(buffer, taggingBodyLen);
+        if (taggingOption.isImplicit()) {
+            encodeBody(buffer);
+        } else {
+            encode(buffer);
+        }
+    }
+
+    public void taggedDecode(byte[] content,
+                             TaggingOption taggingOption) throws IOException {
+        taggedDecode(ByteBuffer.wrap(content), taggingOption);
+    }
+
+    @Override
+    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 {
+        int taggingTag = readTag(content);
+        int taggingTagNo = readTagNo(content, taggingTag);
+        int taggingLength = readLength(content);
+        LimitedByteBuffer newContent = new LimitedByteBuffer(content, taggingLength);
+
+        int tmpTagFlags = taggingTag & 0xe0;
+        taggedDecode(tmpTagFlags, taggingTagNo, newContent, taggingOption);
+    }
+
+    protected void taggedDecode(int taggingTagFlags, int taggingTagNo,
+                                LimitedByteBuffer content,
+                                TaggingOption taggingOption) throws IOException {
+        int expectedTaggingTagFlags = taggingOption.tagFlags(!isPrimitive());
+        if (expectedTaggingTagFlags != taggingTagFlags) {
+            throw new IOException("Unexpected tag flags " + taggingTagFlags
+                    + ", expecting " + expectedTaggingTagFlags);
+        }
+        if (taggingOption.getTagNo() != taggingTagNo) {
+            throw new IOException("Unexpected tagNo " + taggingTagNo + ", "
+                    + "expecting " + taggingOption.getTagNo());
+        }
+
+        if (taggingOption.isImplicit()) {
+            decodeBody(content);
+        } else {
+            decode(content);
+        }
+    }
+
+    public static Asn1Item decodeOne(LimitedByteBuffer content) throws IOException {
+        int tag = readTag(content);
+        int tagNo = readTagNo(content, tag);
+        int length = readLength(content);
+        if (length < 0) {
+            throw new IOException("Unexpected length");
+        }
+        LimitedByteBuffer valueContent = new LimitedByteBuffer(content, length);
+        content.skip(length);
+
+        Asn1Item result = new Asn1Item(tag, tagNo, valueContent);
+        if (result.isSimple()) {
+            result.decodeValueAsSimple();
+        }
+        return result;
+    }
+
+    public static void skipOne(LimitedByteBuffer content) throws IOException {
+        int tag = readTag(content);
+        readTagNo(content, tag);
+        int length = readLength(content);
+        if (length < 0) {
+            throw new IOException("Unexpected length");
+        }
+        content.skip(length);
+    }
+
+    public static int lengthOfBodyLength(int bodyLength) {
+        int length = 1;
+
+        if (bodyLength > 127) {
+            int payload = bodyLength;
+            while (payload != 0) {
+                payload >>= 8;
+                length++;
+            }
+        }
+
+        return length;
+    }
+
+    public static int lengthOfTagLength(int tagNo) {
+        int length = 1;
+
+        if (tagNo >= 31) {
+            if (tagNo < 128) {
+                length++;
+            } else {
+                length++;
+
+                do {
+                    tagNo >>= 7;
+                    length++;
+                } while (tagNo > 127);
+            }
+        }
+
+        return length;
+    }
+
+    public static void encodeTag(ByteBuffer buffer, int flags, int tagNo) {
+        if (tagNo < 31) {
+            buffer.put((byte) (flags | tagNo));
+        } else {
+            buffer.put((byte) (flags | 0x1f));
+            if (tagNo < 128) {
+                buffer.put((byte) tagNo);
+            } else {
+                byte[] tmpBytes = new byte[5]; // 5 * 7 > 32
+                int iPut = tmpBytes.length;
+
+                tmpBytes[--iPut] = (byte) (tagNo & 0x7f);
+                do {
+                    tagNo >>= 7;
+                    tmpBytes[--iPut] = (byte) (tagNo & 0x7f | 0x80);
+                } while (tagNo > 127);
+
+                buffer.put(tmpBytes, iPut, tmpBytes.length - iPut);
+            }
+        }
+    }
+
+    public static void encodeLength(ByteBuffer buffer, int bodyLength) {
+        if (bodyLength < 128) {
+            buffer.put((byte) bodyLength);
+        } else {
+            int length = 0;
+            int payload = bodyLength;
+
+            while (payload != 0) {
+                payload >>= 8;
+                length++;
+            }
+
+            buffer.put((byte) (length | 0x80));
+
+            payload = bodyLength;
+            for (int i = length - 1; i >= 0; i--) {
+                buffer.put((byte) (payload >> (i * 8)));
+            }
+        }
+    }
+
+    public static int readTag(LimitedByteBuffer buffer) throws IOException {
+        int tag = buffer.readByte() & 0xff;
+        if (tag == 0) {
+            throw new IOException("Bad tag 0 found");
+        }
+        return tag;
+    }
+
+    public static int readTagNo(LimitedByteBuffer buffer, int tag) throws IOException {
+        int tagNo = tag & 0x1f;
+
+        if (tagNo == 0x1f) {
+            tagNo = 0;
+
+            int b = buffer.readByte() & 0xff;
+            if ((b & 0x7f) == 0) {
+                throw new IOException("Invalid high tag number found");
+            }
+
+            while (b >= 0 && (b & 0x80) != 0) {
+                tagNo |= b & 0x7f;
+                tagNo <<= 7;
+                b = buffer.readByte();
+            }
+
+            tagNo |= b & 0x7f;
+        }
+
+        return tagNo;
+    }
+
+    public static int readLength(LimitedByteBuffer buffer) throws IOException {
+        int bodyLength = buffer.readByte() & 0xff;
+
+        if (bodyLength > 127) {
+            int length = bodyLength & 0x7f;
+            if (length > 4) {
+                throw new IOException("Bad bodyLength of more than 4 bytes: " + length);
+            }
+
+            bodyLength = 0;
+            int tmp;
+            for (int i = 0; i < length; i++) {
+                tmp = buffer.readByte() & 0xff;
+                bodyLength = (bodyLength << 8) + tmp;
+            }
+
+            if (bodyLength < 0) {
+                throw new IOException("Invalid bodyLength " + bodyLength);
+            }
+            if (bodyLength > buffer.hasLeft()) {
+                throw new IOException("Corrupt stream - less data "
+                        + buffer.hasLeft() + " than expected " + bodyLength);
+            }
+        }
+
+        return bodyLength;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9601a5a8/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java
index 23e6130..afc11c2 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.common;
 
-import org.apache.kerby.asn1.type.AbstractAsn1Type;
+import org.apache.kerby.asn1.type.Asn1Object;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.crypto.CheckSumHandler;
 import org.apache.kerby.kerberos.kerb.crypto.EncTypeHandler;
@@ -50,14 +50,14 @@ public class CheckSumUtil {
         return CheckSumHandler.checksumWithKey(checkSumType, input, key.getKeyData(), usage);
     }
 
-    public static CheckSum seal(AbstractAsn1Type<?> asn1Object,
+    public static CheckSum seal(Asn1Object asn1Object,
                                 CheckSumType checkSumType) throws KrbException {
         byte[] encoded = asn1Object.encode();
         CheckSum checksum = makeCheckSum(checkSumType, encoded);
         return checksum;
     }
 
-    public static CheckSum seal(AbstractAsn1Type<?> asn1Object, CheckSumType checkSumType,
+    public static CheckSum seal(Asn1Object asn1Object, CheckSumType checkSumType,
                                      EncryptionKey key, KeyUsage usage) throws KrbException {
         byte[] encoded = asn1Object.encode();
         CheckSum checksum = makeCheckSumWithKey(checkSumType, encoded, key, usage);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9601a5a8/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 332c96f..0c246aa 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
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.common;
 
-import org.apache.kerby.asn1.type.AbstractAsn1Type;
+import org.apache.kerby.asn1.type.Asn1Object;
 import org.apache.kerby.asn1.type.Asn1Type;
 import org.apache.kerby.kerberos.kerb.KrbCodec;
 import org.apache.kerby.kerberos.kerb.KrbException;
@@ -124,7 +124,7 @@ public class EncryptionUtil {
         return null;
     }
 
-    public static EncryptedData seal(AbstractAsn1Type<?> asn1Type,
+    public static EncryptedData seal(Asn1Object 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-kerby/blob/9601a5a8/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java
index 4827961..5ef027e 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb;
 
 import org.apache.kerby.asn1.LimitedByteBuffer;
-import org.apache.kerby.asn1.type.AbstractAsn1Type;
+import org.apache.kerby.asn1.type.Asn1Object;
 import org.apache.kerby.asn1.type.Asn1Type;
 import org.apache.kerby.kerberos.kerb.spec.ap.ApReq;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbError;
@@ -65,10 +65,10 @@ public class KrbCodec {
 
     public static KrbMessage decodeMessage(ByteBuffer byteBuffer) throws IOException {
         LimitedByteBuffer limitedBuffer = new LimitedByteBuffer(byteBuffer);
-        int tag = AbstractAsn1Type.readTag(limitedBuffer);
-        int tagNo = AbstractAsn1Type.readTagNo(limitedBuffer, tag);
+        int tag = Asn1Object.readTag(limitedBuffer);
+        int tagNo = Asn1Object.readTagNo(limitedBuffer, tag);
         int tagFlags = tag & 0xe0;
-        int length = AbstractAsn1Type.readLength(limitedBuffer);
+        int length = Asn1Object.readLength(limitedBuffer);
         LimitedByteBuffer valueBuffer = new LimitedByteBuffer(limitedBuffer, length);
 
         KrbMessage msg;


[16/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithToken.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithToken.java
index cd1517d..5d127dc 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithToken.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithToken.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kerb.client.request;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.client.KrbContext;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 /**
  * This initiates an AS-REQ using TokenPreauth mechanism.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/KdcRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/KdcRequest.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/KdcRequest.java
index 33f701f..f03ad2f 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/KdcRequest.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/KdcRequest.java
@@ -29,20 +29,20 @@ import org.apache.kerby.kerberos.kerb.client.preauth.PreauthContext;
 import org.apache.kerby.kerberos.kerb.client.preauth.PreauthHandler;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddress;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcOption;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcOptions;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddress;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcOption;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcOptions;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
index e635a98..dcc0d0d 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
@@ -23,15 +23,15 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbContext;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncTgsRepPart;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsReq;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncTgsRepPart;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsReq;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithTgt.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithTgt.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithTgt.java
index cf01899..ee3151c 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithTgt.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithTgt.java
@@ -23,18 +23,18 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbContext;
 import org.apache.kerby.kerberos.kerb.common.CheckSumUtil;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApOptions;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApReq;
-import org.apache.kerby.kerberos.kerb.spec.ap.Authenticator;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.ap.ApOptions;
+import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
+import org.apache.kerby.kerberos.kerb.type.ap.Authenticator;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 
 public class TgsRequestWithTgt extends TgsRequest {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithToken.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithToken.java
index fcce86f..c27f622 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithToken.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequestWithToken.java
@@ -24,9 +24,9 @@ import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbContext;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 /**
  * Tgs request with an Access Token.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 fa21e5b..c0b1662 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
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.client;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 import org.junit.Test;
 
 import java.io.File;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/auth/AuthContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/auth/AuthContext.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/auth/AuthContext.java
index 5b1c2cd..daf3f70 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/auth/AuthContext.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/auth/AuthContext.java
@@ -20,10 +20,10 @@
 package org.apache.kerby.kerberos.kerb.auth;
 
 import org.apache.kerby.asn1.type.Asn1Flags;
-import org.apache.kerby.kerberos.kerb.spec.ap.Authenticator;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddress;
+import org.apache.kerby.kerberos.kerb.type.ap.Authenticator;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddress;
 
 import java.util.List;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java
index afc11c2..2a5a1d5 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/CheckSumUtil.java
@@ -24,10 +24,10 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.crypto.CheckSumHandler;
 import org.apache.kerby.kerberos.kerb.crypto.EncTypeHandler;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
 
 public class CheckSumUtil {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 0c246aa..26f1d4f 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
@@ -25,10 +25,10 @@ import org.apache.kerby.kerberos.kerb.KrbCodec;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.crypto.EncTypeHandler;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Conf.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Conf.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Conf.java
index 5ac0669..c503d65 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Conf.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Conf.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kerb.common;
 import org.apache.kerby.config.Conf;
 import org.apache.kerby.config.Config;
 import org.apache.kerby.config.ConfigKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 import java.util.ArrayList;
 import java.util.Arrays;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 a4ce350..98063d0 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
@@ -19,15 +19,15 @@
  */
 package org.apache.kerby.kerberos.kerb.common;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfo;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfo2;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfo2Entry;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfoEntry;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbError;
-import org.apache.kerby.kerberos.kerb.spec.base.MethodData;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfo;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfo2;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfo2Entry;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfoEntry;
+import org.apache.kerby.kerberos.kerb.type.base.KrbError;
+import org.apache.kerby.kerberos.kerb.type.base.MethodData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 import java.io.IOException;
 import java.util.ArrayList;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbUtil.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbUtil.java
index 1bf17d6..4d4bc4a 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbUtil.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/KrbUtil.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.common;
 
 import org.apache.kerby.kerberos.kerb.KrbConstant;
-import org.apache.kerby.kerberos.kerb.spec.base.NameType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 public class KrbUtil {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PreauthPluginMeta.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PreauthPluginMeta.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PreauthPluginMeta.java
index 75e5003..8f5975d 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PreauthPluginMeta.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PreauthPluginMeta.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.preauth;
 
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public interface PreauthPluginMeta {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/EncTsPreauthMeta.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/EncTsPreauthMeta.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/EncTsPreauthMeta.java
index 3106683..fb9c37f 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/EncTsPreauthMeta.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/EncTsPreauthMeta.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.preauth.builtin;
 
 import org.apache.kerby.kerberos.kerb.preauth.PreauthPluginMeta;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class EncTsPreauthMeta implements PreauthPluginMeta {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/TgtPreauthMeta.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/TgtPreauthMeta.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/TgtPreauthMeta.java
index d7d8aea..1629ace 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/TgtPreauthMeta.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/builtin/TgtPreauthMeta.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.preauth.builtin;
 
 import org.apache.kerby.kerberos.kerb.preauth.PreauthPluginMeta;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 /**
  * A faked preauth module for TGS request handling

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 a21bd5d..b862820 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
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.preauth.pkinit;
 
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 @SuppressWarnings("PMD")
 public class PkinitIdenity {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitPreauthMeta.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitPreauthMeta.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitPreauthMeta.java
index 36adf7a..1a94ebc 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitPreauthMeta.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitPreauthMeta.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.preauth.pkinit;
 
 import org.apache.kerby.kerberos.kerb.preauth.PreauthPluginMeta;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class PkinitPreauthMeta implements PreauthPluginMeta {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PluginOpts.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PluginOpts.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PluginOpts.java
index 7dd8768..5f275a9 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PluginOpts.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PluginOpts.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.preauth.pkinit;
 
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.AlgorithmIdentifiers;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.TrustedCertifiers;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.AlgorithmIdentifiers;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.TrustedCertifiers;
 import org.apache.kerby.x509.type.AlgorithmIdentifier;
 
 public class PluginOpts {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/token/TokenPreauthMeta.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/token/TokenPreauthMeta.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/token/TokenPreauthMeta.java
index ea897eb..68ed2a3 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/token/TokenPreauthMeta.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/token/TokenPreauthMeta.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.preauth.token;
 
 import org.apache.kerby.kerberos.kerb.preauth.PreauthPluginMeta;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class TokenPreauthMeta implements PreauthPluginMeta {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/CodecTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/CodecTest.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/CodecTest.java
index f5543f7..3bd2117 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/CodecTest.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/CodecTest.java
@@ -21,8 +21,8 @@ package org.apache.kerby.kerberos.kerb.codec;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.KrbCodec;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 import org.junit.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsRepCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsRepCodec.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsRepCodec.java
index 0a8e189..24f0ab0 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsRepCodec.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsRepCodec.java
@@ -19,11 +19,11 @@
  */
 package org.apache.kerby.kerberos.kerb.codec;
 
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.base.NameType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsRep;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsRep;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
 import org.junit.Test;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsReqCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsReqCodec.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsReqCodec.java
index 21317a9..4c1786b 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsReqCodec.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestAsReqCodec.java
@@ -19,17 +19,17 @@
  */
 package org.apache.kerby.kerberos.kerb.codec;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddrType;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddress;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.base.NameType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsReq;
-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.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddrType;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddress;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 import org.junit.Test;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsRepCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsRepCodec.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsRepCodec.java
index 0c3f803..48aa83f 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsRepCodec.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsRepCodec.java
@@ -19,11 +19,11 @@
  */
 package org.apache.kerby.kerberos.kerb.codec;
 
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.base.NameType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsRep;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsRep;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
 import org.junit.Test;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsReqCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsReqCodec.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsReqCodec.java
index de75355..10dca95 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsReqCodec.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/TestTgsReqCodec.java
@@ -19,15 +19,15 @@
  */
 package org.apache.kerby.kerberos.kerb.codec;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.base.NameType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
-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.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsReq;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 import org.junit.Test;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java
index 5ef027e..e592567 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbCodec.java
@@ -22,14 +22,14 @@ package org.apache.kerby.kerberos.kerb;
 import org.apache.kerby.asn1.LimitedByteBuffer;
 import org.apache.kerby.asn1.type.Asn1Object;
 import org.apache.kerby.asn1.type.Asn1Type;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApReq;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbError;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsReq;
+import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
+import org.apache.kerby.kerberos.kerb.type.base.KrbError;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsReq;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 56cdeff..182f83c 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
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb;
 
-import org.apache.kerby.kerberos.kerb.spec.base.KrbError;
+import org.apache.kerby.kerberos.kerb.type.base.KrbError;
 
 public class KrbErrorException extends KrbException {
     private static final long serialVersionUID = -6726737724490205771L;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenDecoder.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenDecoder.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenDecoder.java
index 88bcd0c..ddf8978 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenDecoder.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenDecoder.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.provider;
 
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 
 import java.io.IOException;
 import java.security.PrivateKey;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenEncoder.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenEncoder.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenEncoder.java
index 0f6cc6b..c1ed135 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenEncoder.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenEncoder.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.provider;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 
 import java.security.PrivateKey;
 import java.security.PublicKey;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenFactory.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenFactory.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenFactory.java
index c867095..6d5a156 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenFactory.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/provider/TokenFactory.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.provider;
 
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 
 /**
  * A token factory.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosString.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosString.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosString.java
deleted file mode 100644
index 9ada2fa..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosString.java
+++ /dev/null
@@ -1,35 +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.spec;
-
-import org.apache.kerby.asn1.type.Asn1GeneralString;
-
-/**
- KerberosString  ::= GeneralString -- (IA5String)
- */
-public class KerberosString extends Asn1GeneralString {
-    public KerberosString() {
-        super();
-    }
-
-    public KerberosString(String value) {
-        super(value);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosStrings.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosStrings.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosStrings.java
deleted file mode 100644
index ce1e79a..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosStrings.java
+++ /dev/null
@@ -1,43 +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.spec;
-
-import java.util.List;
-
-public class KerberosStrings extends KrbSequenceOfType<KerberosString> {
-
-    public KerberosStrings() {
-        super();
-    }
-
-    public KerberosStrings(List<String> strings) {
-        super();
-        setValues(strings);
-    }
-
-    public void setValues(List<String> values) {
-        clear();
-        if (values != null) {
-            for (String value : values) {
-                addElement(new KerberosString(value));
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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
deleted file mode 100644
index 1474006..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KerberosTime.java
+++ /dev/null
@@ -1,160 +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.spec;
-
-import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
-
-import java.util.Date;
-
-/**
- * A specialization of the ASN.1 GeneralTime. The Kerberos time contains date and
- * time up to the seconds, but with no fractional seconds. It's also always
- * expressed as UTC timeZone, thus the 'Z' at the end of its string representation.
- * 
- * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- */
-public class KerberosTime extends Asn1GeneralizedTime {
-
-    /** Constant for the {@link KerberosTime} "infinity." */
-    public static final KerberosTime NEVER = new KerberosTime(Long.MAX_VALUE);
-
-    /** The number of milliseconds in a minute. */
-    public static final int MINUTE = 60000;
-
-    /** The number of milliseconds in a day. */
-    public static final int DAY = MINUTE * 1440;
-
-    /** The number of milliseconds in a week. */
-    public static final int WEEK = MINUTE * 10080;
-
-    /**
-     * Creates a new instance of a KerberosTime object with the current time
-     */
-    public KerberosTime() {
-        // divide current time by 1000 to drop the ms then multiply by 1000 to convert to ms
-        super((System.currentTimeMillis() / 1000L) * 1000L); 
-    }
-
-    /**
-     * @param time in milliseconds
-     */
-    public KerberosTime(long time) {
-        super(time);
-    }
-
-    /**
-     * @return time in milliseconds
-     */
-    public long getTime() {
-        return getValue().getTime();
-    }
-
-    /**
-     * @param time set time in milliseconds
-     */
-    public void setTime(long time) {
-        setValue(new Date(time));
-    }
-
-    /**
-     * get the time in seconds
-     * @return The time
-     */
-    public long getTimeInSeconds() {
-        return getTime() / 1000;
-    }
-
-    public boolean lessThan(KerberosTime ktime) {
-        return getValue().compareTo(ktime.getValue()) < 0;
-    }
-
-    /**
-     * @param time in milliseconds
-     * @return true if less
-     */
-    public boolean lessThan(long time) {
-        return getValue().getTime() < time;
-    }
-
-    /**
-     * @param ktime compare with milliseconds
-     * @return true if greater
-     */
-    public boolean greaterThan(KerberosTime ktime) {
-        return getValue().compareTo(ktime.getValue()) > 0;
-    }
-
-    /**
-     * time in milliseconds
-     * @param clockSkew The clock skew
-     * @return true if in clock skew
-     */
-    public boolean isInClockSkew(long clockSkew) {
-        long delta = Math.abs(getTime() - System.currentTimeMillis());
-
-        return delta < clockSkew;
-    }
-
-    public KerberosTime copy() {
-        long time = getTime();
-        return new KerberosTime(time);
-    }
-
-    /**
-     * time in milliseconds.
-     * @param duration The duration
-     * @return The kerberos time
-     */
-    public KerberosTime extend(long duration) {
-        long result = getTime() + duration;
-        return new KerberosTime(result);
-    }
-
-    /**
-     * Return diff time in milliseconds
-     * @param other The kerberos time
-     * @return The diff time
-     */
-    public long diff(KerberosTime other) {
-        return getTime() - other.getTime();
-    }
-
-    public static KerberosTime now() {
-        return new KerberosTime(new Date().getTime());
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-
-        KerberosTime time = (KerberosTime) o;
-        return this.getValue().equals(time.getValue());
-    }
-
-    @Override
-    public int hashCode() {
-        return getValue().hashCode();
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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
deleted file mode 100644
index 244e089..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbAppSequenceType.java
+++ /dev/null
@@ -1,57 +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.spec;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.TaggingSequence;
-
-/**
- * This is for application specific sequence tagged with a number.
- */
-public abstract class KrbAppSequenceType extends TaggingSequence {
-    public KrbAppSequenceType(int tagNo, Asn1FieldInfo[] fieldInfos) {
-        super(tagNo, fieldInfos, true, false); // Kerberos favors explicit
-    }
-
-    protected int getFieldAsInt(int index) {
-        Integer value = getFieldAsInteger(index);
-        if (value != null) {
-            return value.intValue();
-        }
-        return -1;
-    }
-
-    protected void setFieldAsString(int index, String value) {
-        setFieldAs(index, new KerberosString(value));
-    }
-
-    protected KerberosTime getFieldAsTime(int index) {
-        return getFieldAs(index, KerberosTime.class);
-    }
-
-    protected void setFieldAsTime(int index, long value) {
-        setFieldAs(index, new KerberosTime(value));
-    }
-
-    protected void setField(int index, Asn1EnumType krbEnum) {
-        setFieldAsInt(index, krbEnum.getValue());
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbIntegers.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbIntegers.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbIntegers.java
deleted file mode 100644
index 1eef42e..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbIntegers.java
+++ /dev/null
@@ -1,54 +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.spec;
-
-import org.apache.kerby.asn1.type.Asn1Integer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class KrbIntegers extends KrbSequenceOfType<Asn1Integer> {
-
-    public KrbIntegers() {
-        super();
-    }
-
-    public KrbIntegers(List<Integer> values) {
-        super();
-        setValues(values);
-    }
-
-    public void setValues(List<Integer> values) {
-        clear();
-        if (values != null) {
-            for (Integer value : values) {
-                addElement(new Asn1Integer(value));
-            }
-        }
-    }
-
-    public List<Integer> getValues() {
-        List<Integer> results = new ArrayList<Integer>();
-        for (Asn1Integer value : getElements()) {
-            results.add(value.getValue().intValue());
-        }
-        return results;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceOfType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceOfType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceOfType.java
deleted file mode 100644
index c4ea121..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceOfType.java
+++ /dev/null
@@ -1,43 +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.spec;
-
-import org.apache.kerby.asn1.type.Asn1SequenceOf;
-import org.apache.kerby.asn1.type.Asn1String;
-import org.apache.kerby.asn1.type.Asn1Type;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class KrbSequenceOfType<T extends Asn1Type> extends Asn1SequenceOf<T> {
-
-    public List<String> getAsStrings() {
-        List<T> elements = getElements();
-        List<String> results = new ArrayList<String>();
-        for (T ele : elements) {
-            if (ele instanceof Asn1String) {
-                results.add(((Asn1String) ele).getValue());
-            } else {
-                throw new RuntimeException("The targeted field type isn't of string");
-            }
-        }
-        return results;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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
deleted file mode 100644
index 5a5b6ee..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/KrbSequenceType.java
+++ /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. 
- *  
- */
-package org.apache.kerby.kerberos.kerb.spec;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1SequenceType;
-
-public abstract class KrbSequenceType extends Asn1SequenceType {
-
-    public KrbSequenceType(Asn1FieldInfo[] fieldInfos) {
-        super(fieldInfos);
-    }
-
-    protected int getFieldAsInt(int index) {
-        Integer value = getFieldAsInteger(index);
-        if (value != null) {
-            return value.intValue();
-        }
-        return -1;
-    }
-
-    protected void setFieldAsString(int index, String value) {
-        setFieldAs(index, new KerberosString(value));
-    }
-
-    protected KerberosTime getFieldAsTime(int index) {
-        return getFieldAs(index, KerberosTime.class);
-    }
-
-    protected void setFieldAsTime(int index, long value) {
-        setFieldAs(index, new KerberosTime(value));
-    }
-
-    protected void setField(int index, Asn1EnumType value) {
-        setFieldAsInt(index, value.getValue());
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java
deleted file mode 100644
index ef49215..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java
+++ /dev/null
@@ -1,51 +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.spec.ad;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbToken;
-
-/**
- AD-TOKEN ::= SEQUENCE {
-    token     [0]  OCTET STRING,
- }
-*/
-public class AdToken extends KrbSequenceType {
-    private static final int TOKEN = 0;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(TOKEN, KrbToken.class)
-    };
-
-    public AdToken() {
-        super(fieldInfos);
-    }
-
-    public KrbToken getToken() {
-        return getFieldAs(TOKEN, KrbToken.class);
-    }
-
-    public void setToken(KrbToken token) {
-        setFieldAs(TOKEN, token);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationData.java
deleted file mode 100644
index d47a0e6..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationData.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.spec.ad;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- AuthorizationData       ::= SEQUENCE OF SEQUENCE {
- ad-type         [0] Int32,
- ad-data         [1] OCTET STRING
- }
- */
-public class AuthorizationData extends KrbSequenceOfType<AuthorizationDataEntry> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.java
deleted file mode 100644
index 08a8fc2..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.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.spec.ad;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- AuthorizationData       ::= SEQUENCE OF SEQUENCE {
- ad-type         [0] Int32,
- ad-data         [1] OCTET STRING
- }
- */
-public class AuthorizationDataEntry extends KrbSequenceType {
-    private static final int AD_TYPE = 0;
-    private static final int AD_DATA = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(AD_TYPE, 0, Asn1Integer.class),
-            new ExplicitField(AD_DATA, 1, Asn1OctetString.class)
-    };
-
-    public AuthorizationDataEntry() {
-        super(fieldInfos);
-    }
-
-    public AuthorizationType getAuthzType() {
-        Integer value = getFieldAsInteger(AD_TYPE);
-        return AuthorizationType.fromValue(value);
-    }
-
-    public void setAuthzType(AuthorizationType authzType) {
-        setFieldAsInt(AD_TYPE, authzType.getValue());
-    }
-
-    public byte[] getAuthzData() {
-        return getFieldAsOctets(AD_DATA);
-    }
-
-    public void setAuthzData(byte[] authzData) {
-        setFieldAsOctets(AD_DATA, authzData);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationType.java
deleted file mode 100644
index f4c4988..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationType.java
+++ /dev/null
@@ -1,143 +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.spec.ad;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum AuthorizationType implements Asn1EnumType {
-    /**
-     * Constant for the "null" authorization type.
-     */
-    NULL(0),
-
-    /**
-     * Constant for the "if relevant" authorization type.
-     *
-     * RFC 4120
-     */
-    AD_IF_RELEVANT(1),
-
-    /**
-     * Constant for the "intended for server" authorization type.
-     *
-     * RFC 4120
-     */
-    AD_INTENDED_FOR_SERVER(2),
-
-    /**
-     * Constant for the  "intended for application class" authorization type.
-     *
-     * RFC 4120
-     */
-    AD_INTENDED_FOR_APPLICATION_CLASS(3),
-
-    /**
-     * Constant for the "kdc issued" authorization type.
-     *
-     * RFC 4120
-     */
-    AD_KDC_ISSUED(4),
-
-    /**
-     * Constant for the "or" authorization type.
-     *
-     * RFC 4120
-     */
-    AD_OR(5),
-
-    /**
-     * Constant for the "mandatory ticket extensions" authorization type.
-     *
-     * RFC 4120
-     */
-    AD_MANDATORY_TICKET_EXTENSIONS(6),
-
-    /**
-     * Constant for the "in ticket extensions" authorization type.
-     *
-     * RFC 4120
-     */
-    AD_IN_TICKET_EXTENSIONS(7),
-
-    /**
-     * Constant for the "mandatory-for-kdc" authorization type.
-     *
-     * RFC 4120
-     */
-    AD_MANDATORY_FOR_KDC(8),
-
-    /**
-     * Constant for the "OSF DCE" authorization type.
-     *
-     * RFC 1510
-     */
-    OSF_DCE(64),
-
-    /**
-     * Constant for the "sesame" authorization type.
-     *
-     * RFC 1510
-     */
-    SESAME(65),
-
-    /**
-     * Constant for the "OSF-DCE pki certid" authorization type.
-     *
-     * RFC 1510
-     */
-    AD_OSF_DCE_PKI_CERTID(66),
-
-    /**
-     * Constant for the "sesame" authorization type.
-     *
-     * RFC 1510
-     */
-    AD_WIN2K_PAC(128),
-
-    /**
-     * Constant for the "sesame" authorization type.
-     *
-     * RFC 1510
-     */
-    AD_ETYPE_NEGOTIATION(129);
-
-    private final int value;
-
-    private AuthorizationType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static AuthorizationType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value.intValue()) {
-                    return (AuthorizationType) e;
-                }
-            }
-        }
-
-        return NULL;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApOption.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApOption.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApOption.java
deleted file mode 100644
index b62d298..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApOption.java
+++ /dev/null
@@ -1,58 +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.spec.ap;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-/**
- APOptions       ::= KrbFlags
- -- reserved(0),
- -- use-session-key(1),
- -- mutual-required(2)
- */
-public enum ApOption implements Asn1EnumType {
-    NONE(-1),
-    RESERVED(0x80000000),
-    USE_SESSION_KEY(0x40000000),
-    MUTUAL_REQUIRED(0x20000000),
-    ETYPE_NEGOTIATION(0x00000002),
-    USE_SUBKEY(0x00000001);
-
-    private final int value;
-
-    private ApOption(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static ApOption fromValue(int value) {
-        for (Asn1EnumType e : values()) {
-            if (e.getValue() == value) {
-                return (ApOption) e;
-            }
-        }
-
-        return NONE;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApOptions.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApOptions.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApOptions.java
deleted file mode 100644
index a8518d2..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApOptions.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.spec.ap;
-
-import org.apache.kerby.asn1.type.Asn1Flags;
-
-public class ApOptions extends Asn1Flags {
-
-    public ApOptions() {
-        this(0);
-    }
-
-    public ApOptions(int value) {
-        setFlags(value);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java
deleted file mode 100644
index 08db746..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java
+++ /dev/null
@@ -1,66 +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.spec.ap;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-
-/**
- AP-REP          ::= [APPLICATION 15] SEQUENCE {
- pvno            [0] INTEGER (5),
- msg-type        [1] INTEGER (15),
- enc-part        [2] EncryptedData -- EncAPRepPart
- }
- */
-public class ApRep extends KrbMessage {
-    private static final int ENC_PART = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PVNO, 0, Asn1Integer.class),
-            new ExplicitField(MSG_TYPE, 1, Asn1Integer.class),
-            new ExplicitField(ENC_PART, 2, EncryptedData.class)
-    };
-
-    public ApRep() {
-        super(KrbMessageType.AP_REP, fieldInfos);
-    }
-
-    private EncAPRepPart encRepPart;
-
-    public EncAPRepPart getEncRepPart() {
-        return encRepPart;
-    }
-
-    public void setEncRepPart(EncAPRepPart encRepPart) {
-        this.encRepPart = encRepPart;
-    }
-
-    public EncryptedData getEncryptedEncPart() {
-        return getFieldAs(ENC_PART, EncryptedData.class);
-    }
-
-    public void setEncryptedEncPart(EncryptedData encryptedEncPart) {
-        setFieldAs(ENC_PART, encryptedEncPart);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java
deleted file mode 100644
index bf9f82e..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java
+++ /dev/null
@@ -1,90 +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.spec.ap;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-
-/**
- AP-REQ          ::= [APPLICATION 14] SEQUENCE {
- pvno            [0] INTEGER (5),
- msg-type        [1] INTEGER (14),
- ap-options      [2] APOptions,
- ticket          [3] Ticket,
- authenticator   [4] EncryptedData -- Authenticator
- }
- */
-public class ApReq extends KrbMessage {
-    private static final int AP_OPTIONS = 2;
-    private static final int TICKET = 3;
-    private static final int AUTHENTICATOR = 4;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PVNO, Asn1Integer.class),
-            new ExplicitField(MSG_TYPE, Asn1Integer.class),
-            new ExplicitField(AP_OPTIONS, ApOptions.class),
-            new ExplicitField(TICKET, Ticket.class),
-            new ExplicitField(AUTHENTICATOR, EncryptedData.class)
-    };
-
-    private Authenticator authenticator;
-
-    public ApReq() {
-        super(KrbMessageType.AP_REQ, fieldInfos);
-    }
-
-    public ApOptions getApOptions() {
-        return getFieldAs(AP_OPTIONS, ApOptions.class);
-    }
-
-    public void setApOptions(ApOptions apOptions) {
-        setFieldAs(AP_OPTIONS, apOptions);
-    }
-
-    public Ticket getTicket() {
-        return getFieldAs(TICKET, Ticket.class);
-    }
-
-    public void setTicket(Ticket ticket) {
-        setFieldAs(TICKET, ticket);
-    }
-
-    public Authenticator getAuthenticator() {
-        return authenticator;
-    }
-
-    public void setAuthenticator(Authenticator authenticator) {
-        this.authenticator = authenticator;
-    }
-
-    public EncryptedData getEncryptedAuthenticator() {
-        return getFieldAs(AUTHENTICATOR, EncryptedData.class);
-    }
-
-    public void setEncryptedAuthenticator(EncryptedData encryptedAuthenticator) {
-        setFieldAs(AUTHENTICATOR, encryptedAuthenticator);
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java
deleted file mode 100644
index e5abe6a..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java
+++ /dev/null
@@ -1,145 +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.spec.ap;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-
-/**
- Authenticator   ::= [APPLICATION 2] SEQUENCE  {
- authenticator-vno       [0] INTEGER (5),
- crealm                  [1] Realm,
- cname                   [2] PrincipalName,
- cksum                   [3] Checksum OPTIONAL,
- cusec                   [4] Microseconds,
- ctime                   [5] KerberosTime,
- subkey                  [6] EncryptionKey OPTIONAL,
- seq-number              [7] UInt32 OPTIONAL,
- authorization-data      [8] AuthorizationData OPTIONAL
- }
- */
-public class Authenticator extends KrbAppSequenceType {
-    public static final int TAG = 2;
-    private static final int AUTHENTICATOR_VNO = 0;
-    private static final int CREALM = 1;
-    private static final int CNAME = 2;
-    private static final int CKSUM = 3;
-    private static final int CUSEC = 4;
-    private static final int CTIME = 5;
-    private static final int SUBKEY = 6;
-    private static final int SEQ_NUMBER = 7;
-    private static final int AUTHORIZATION_DATA = 8;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(AUTHENTICATOR_VNO, 0, Asn1Integer.class),
-            new ExplicitField(CREALM, 1, KerberosString.class),
-            new ExplicitField(CNAME, 2, PrincipalName.class),
-            new ExplicitField(CKSUM, 3, CheckSum.class),
-            new ExplicitField(CUSEC, 4, Asn1Integer.class),
-            new ExplicitField(CTIME, 5, KerberosTime.class),
-            new ExplicitField(SUBKEY, 6, EncryptionKey.class),
-            new ExplicitField(SEQ_NUMBER, 7, Asn1Integer.class),
-            new ExplicitField(AUTHORIZATION_DATA, 8, AuthorizationData.class)
-    };
-
-    public Authenticator() {
-        super(TAG, fieldInfos);
-    }
-
-    public int getAuthenticatorVno() {
-        return getFieldAsInt(AUTHENTICATOR_VNO);
-    }
-
-    public void setAuthenticatorVno(int authenticatorVno) {
-        setFieldAsInt(AUTHENTICATOR_VNO, authenticatorVno);
-    }
-
-    public String getCrealm() {
-        return getFieldAsString(CREALM);
-    }
-
-    public void setCrealm(String crealm) {
-        setFieldAsString(CREALM, crealm);
-    }
-
-    public PrincipalName getCname() {
-        return getFieldAs(CNAME, PrincipalName.class);
-    }
-
-    public void setCname(PrincipalName cname) {
-        setFieldAs(CNAME, cname);
-    }
-
-    public CheckSum getCksum() {
-        return getFieldAs(CKSUM, CheckSum.class);
-    }
-
-    public void setCksum(CheckSum cksum) {
-        setFieldAs(CKSUM, cksum);
-    }
-
-    public int getCusec() {
-        return getFieldAsInt(CUSEC);
-    }
-
-    public void setCusec(int cusec) {
-        setFieldAsInt(CUSEC, cusec);
-    }
-
-    public KerberosTime getCtime() {
-        return getFieldAsTime(CTIME);
-    }
-
-    public void setCtime(KerberosTime ctime) {
-        setFieldAs(CTIME, ctime);
-    }
-
-    public EncryptionKey getSubKey() {
-        return getFieldAs(SUBKEY, EncryptionKey.class);
-    }
-
-    public void setSubKey(EncryptionKey subKey) {
-        setFieldAs(SUBKEY, subKey);
-    }
-
-    public int getSeqNumber() {
-        return getFieldAsInt(SEQ_NUMBER);
-    }
-
-    public void setSeqNumber(Integer seqNumber) {
-        setFieldAsInt(SEQ_NUMBER, seqNumber);
-    }
-
-    public AuthorizationData getAuthorizationData() {
-        return getFieldAs(AUTHORIZATION_DATA, AuthorizationData.class);
-    }
-
-    public void setAuthorizationData(AuthorizationData authorizationData) {
-        setFieldAs(AUTHORIZATION_DATA, authorizationData);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java
deleted file mode 100644
index bd56091..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java
+++ /dev/null
@@ -1,86 +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.spec.ap;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-
-/**
- EncAPRepPart    ::= [APPLICATION 27] SEQUENCE {
- ctime           [0] KerberosTime,
- cusec           [1] Microseconds,
- subkey          [2] EncryptionKey OPTIONAL,
- seq-number      [3] UInt32 OPTIONAL
- }
- */
-public class EncAPRepPart extends KrbAppSequenceType {
-    public static final int TAG = 27;
-    private static final int CTIME = 0;
-    private static final int CUSEC = 1;
-    private static final int SUBKEY = 2;
-    private static final int SEQ_NUMBER = 3;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(CTIME, 0, KerberosTime.class),
-            new ExplicitField(CUSEC, 1, Asn1Integer.class),
-            new ExplicitField(SUBKEY, 2, EncryptionKey.class),
-            new ExplicitField(SEQ_NUMBER, 3, Asn1Integer.class)
-    };
-
-    public EncAPRepPart() {
-        super(TAG, fieldInfos);
-    }
-
-    public KerberosTime getCtime() {
-        return getFieldAsTime(CTIME);
-    }
-
-    public void setCtime(KerberosTime ctime) {
-        setFieldAs(CTIME, ctime);
-    }
-
-    public int getCusec() {
-        return getFieldAsInt(CUSEC);
-    }
-
-    public void setCusec(int cusec) {
-        setFieldAsInt(CUSEC, cusec);
-    }
-
-    public EncryptionKey getSubkey() {
-        return getFieldAs(SUBKEY, EncryptionKey.class);
-    }
-
-    public void setSubkey(EncryptionKey subkey) {
-        setFieldAs(SUBKEY, subkey);
-    }
-
-    public int getSeqNumber() {
-        return getFieldAsInt(SEQ_NUMBER);
-    }
-
-    public void setSeqNumber(Integer seqNumber) {
-        setFieldAsInt(SEQ_NUMBER, seqNumber);
-    }
-}


[02/19] directory-kerby git commit: Moved some classes out of the asn1 type package

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateInfoV1.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateInfoV1.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateInfoV1.java
index 9b6c395..e1796e9 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateInfoV1.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateInfoV1.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x509.type.AlgorithmIdentifier;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateV1.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateV1.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateV1.java
index 4556c39..c45a76f 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateV1.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/AttributeCertificateV1.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x509.type.AlgorithmIdentifier;
 import org.apache.kerby.x509.type.AttributeCertificateInfo;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Certificate.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Certificate.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Certificate.java
index 53a570f..46e625b 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Certificate.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Certificate.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x509.type.AlgorithmIdentifier;
 import org.apache.kerby.x509.type.TBSCertificate;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateChoices.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateChoices.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateChoices.java
index cb6a601..598c896 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateChoices.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateChoices.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ImplicitField;
 
 /**
  * CertificateChoices ::= CHOICE {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateList.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateList.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateList.java
index a456f96..8502ca6 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateList.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CertificateList.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x509.type.AlgorithmIdentifier;
 import org.apache.kerby.x509.type.TBSCertList;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CompressedData.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CompressedData.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CompressedData.java
index f678173..9f6f6cd 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CompressedData.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CompressedData.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.cms.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x509.type.AlgorithmIdentifier;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java
index 8190ff1..5244c8f 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java
@@ -20,11 +20,11 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1Any;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.asn1.type.Asn1Type;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * Ref. RFC 5652

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/EncapsulatedContentInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/EncapsulatedContentInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/EncapsulatedContentInfo.java
index 02f1765..24fa2ab 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/EncapsulatedContentInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/EncapsulatedContentInfo.java
@@ -19,11 +19,11 @@
  */
 package org.apache.kerby.cms.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * EncapsulatedContentInfo ::= SEQUENCE {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificate.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificate.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificate.java
index 6c5371d..7ab4681 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificate.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificate.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.cms.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificateInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificateInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificateInfo.java
index 49c8e04..a4803a4 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificateInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ExtendedCertificateInfo.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.cms.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/IssuerAndSerialNumber.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/IssuerAndSerialNumber.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/IssuerAndSerialNumber.java
index a9a7135..2416d3e 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/IssuerAndSerialNumber.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/IssuerAndSerialNumber.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.cms.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x500.type.Name;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java
index c206197..239848e 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1Any;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.asn1.type.Asn1Type;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java
index 5110212..bf0f53e 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1Any;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.asn1.type.Asn1Type;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/RevocationInfoChoice.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/RevocationInfoChoice.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/RevocationInfoChoice.java
index 15e1b3d..e1c0451 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/RevocationInfoChoice.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/RevocationInfoChoice.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ImplicitField;
 
 /**
  * RevocationInfoChoice ::= CHOICE {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignedData.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignedData.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignedData.java
index ecf20eb..0d23bbc 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignedData.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignedData.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.cms.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.ImplicitField;
 
 /**
  * Ref. RFC 5652

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerIdentifier.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerIdentifier.java
index c5668c8..9cd618b 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerIdentifier.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerIdentifier.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.x509.type.SubjectKeyIdentifier;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerInfo.java
index 879d73d..342d965 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/SignerInfo.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.cms.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.ImplicitField;
 
 /**
  * Ref. RFC 5652

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Subject.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Subject.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Subject.java
index a59690b..5c0bc88 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Subject.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Subject.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.x509.type.GeneralNames;
 import org.apache.kerby.x509.type.IssuerSerial;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java b/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java
index 21e314b..3f0c2d8 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x500.type;
 
 import org.apache.kerby.asn1.type.Asn1Any;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.asn1.type.Asn1Type;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x500/type/Name.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x500/type/Name.java b/kerby-pkix/src/main/java/org/apache/kerby/x500/type/Name.java
index 280082d..0e56095 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x500/type/Name.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x500/type/Name.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x500.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AccessDescription.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AccessDescription.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AccessDescription.java
index 5c40b48..4f88e22 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AccessDescription.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AccessDescription.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
index c5c1329..14bac49 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Any;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.asn1.type.Asn1Type;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertIssuer.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertIssuer.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertIssuer.java
index 1120b39..5665c07 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertIssuer.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertIssuer.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertValidityPeriod.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertValidityPeriod.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertValidityPeriod.java
index 20b2b9e..777cc91 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertValidityPeriod.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttCertValidityPeriod.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Attribute.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Attribute.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Attribute.java
index 36fb541..77d8f6b 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Attribute.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Attribute.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificate.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificate.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificate.java
index db7b342..8e7a308 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificate.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificate.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificateInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificateInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificateInfo.java
index a3c1a62..e38ff47 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificateInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AttributeCertificateInfo.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AuthorityKeyIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AuthorityKeyIdentifier.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AuthorityKeyIdentifier.java
index e289fc8..3ac11b3 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AuthorityKeyIdentifier.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AuthorityKeyIdentifier.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.ImplicitField;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/BasicConstraints.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/BasicConstraints.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/BasicConstraints.java
index d4b0ad0..bece3bd 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/BasicConstraints.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/BasicConstraints.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Boolean;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Certificate.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Certificate.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Certificate.java
index 53dc285..fbb5567 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Certificate.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Certificate.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificateList.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificateList.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificateList.java
index b9ea948..60b8d85 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificateList.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificateList.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificatePair.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificatePair.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificatePair.java
index 9a9c0db..35f27f0 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificatePair.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CertificatePair.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DSAParameter.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DSAParameter.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DSAParameter.java
index 3183d9f..d97db4c 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DSAParameter.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DSAParameter.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestInfo.java
index 1f0ddec..6df3743 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestInfo.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DirectoryString.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DirectoryString.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DirectoryString.java
index dfc6fd8..f2c5cd9 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DirectoryString.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DirectoryString.java
@@ -21,7 +21,7 @@ package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BmpString;
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1PrintableString;
 import org.apache.kerby.asn1.type.Asn1T61String;
 import org.apache.kerby.asn1.type.Asn1UniversalString;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DisplayText.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DisplayText.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DisplayText.java
index bb99ead..9162f03 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DisplayText.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DisplayText.java
@@ -21,7 +21,7 @@ package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BmpString;
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1IA5String;
 import org.apache.kerby.asn1.type.Asn1Utf8String;
 import org.apache.kerby.asn1.type.Asn1VisibleString;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPoint.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPoint.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPoint.java
index 7a70f65..6bdd897 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPoint.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPoint.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPointName.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPointName.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPointName.java
index 0dc0579..2c83ee5 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPointName.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DistributionPointName.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.x500.type.RelativeDistinguishedName;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/EDIPartyName.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/EDIPartyName.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/EDIPartyName.java
index b908b85..45eeb66 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/EDIPartyName.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/EDIPartyName.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * <pre>

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Extension.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Extension.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Extension.java
index 2275f43..da44646 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Extension.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Extension.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Boolean;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 import org.apache.kerby.asn1.type.Asn1SequenceType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralName.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralName.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralName.java
index 17581af..dcf6286 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralName.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralName.java
@@ -20,12 +20,12 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1IA5String;
 import org.apache.kerby.asn1.type.Asn1Item;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.x500.type.Name;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralSubtree.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralSubtree.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralSubtree.java
index 91cacba..84c8109 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralSubtree.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/GeneralSubtree.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Holder.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Holder.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Holder.java
index abc8d45..44319fd 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Holder.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Holder.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * <pre>

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntax.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntax.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntax.java
index ada014b..b7363dc 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntax.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntax.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * Ref. RFC3281

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntaxChoice.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntaxChoice.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntaxChoice.java
index 3a80dca..8149e51 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntaxChoice.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IetfAttrSyntaxChoice.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuerSerial.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuerSerial.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuerSerial.java
index 999ae11..34e8fd8 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuerSerial.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuerSerial.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuingDistributionPoint.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuingDistributionPoint.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuingDistributionPoint.java
index f2c724b..a725b5a 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuingDistributionPoint.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/IssuingDistributionPoint.java
@@ -20,9 +20,9 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Boolean;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * <pre>

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NameConstraints.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NameConstraints.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NameConstraints.java
index 8d12f42..96babc9 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NameConstraints.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NameConstraints.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /*
  * NameConstraints ::= SEQUENCE {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NoticeReference.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NoticeReference.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NoticeReference.java
index a64ef07..436fbc2 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NoticeReference.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/NoticeReference.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ObjectDigestInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ObjectDigestInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ObjectDigestInfo.java
index f6b7c5f..c6489a8 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ObjectDigestInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ObjectDigestInfo.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java
index d2f11ab..2933161 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java
@@ -20,11 +20,11 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Any;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.asn1.type.Asn1Type;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * <pre>

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyConstraints.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyConstraints.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyConstraints.java
index 874f99f..ded02b5 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyConstraints.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyConstraints.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * Ref. RFC 5280

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyInformation.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyInformation.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyInformation.java
index 481eb2e..5b5f06f 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyInformation.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyInformation.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /*

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyMapping.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyMapping.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyMapping.java
index aa764d5..56f5e68 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyMapping.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyMapping.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java
index 16832a7..ef75f0f 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Any;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.asn1.type.Asn1Type;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PrivateKeyUsagePeriod.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PrivateKeyUsagePeriod.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PrivateKeyUsagePeriod.java
index 86b6b83..1645d8f 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PrivateKeyUsagePeriod.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PrivateKeyUsagePeriod.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * <pre>

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RevokedCertificate.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RevokedCertificate.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RevokedCertificate.java
index 034e418..48a347a 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RevokedCertificate.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RevokedCertificate.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RoleSyntax.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RoleSyntax.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RoleSyntax.java
index 712b33f..d9c27d1 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RoleSyntax.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/RoleSyntax.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  *Ref. RFC3281

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/SubjectPublicKeyInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/SubjectPublicKeyInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/SubjectPublicKeyInfo.java
index d904e63..3b1eda2 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/SubjectPublicKeyInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/SubjectPublicKeyInfo.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertList.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertList.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertList.java
index 64f1b90..e4167ff 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertList.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertList.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.x500.type.Name;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertificate.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertificate.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertificate.java
index 23042c0..b5cbcf3 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertificate.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TBSCertificate.java
@@ -20,11 +20,11 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.asn1.ImplicitField;
 import org.apache.kerby.x500.type.Name;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Target.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Target.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Target.java
index 8ef6c5e..4e07667 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Target.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Target.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * Ref. RFC 3281

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TargetCert.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TargetCert.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TargetCert.java
index e630e08..441d249 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TargetCert.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/TargetCert.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Time.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Time.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Time.java
index fb3280d..5038e2f 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Time.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/Time.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.x509.type;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
 import org.apache.kerby.asn1.type.Asn1UtcTime;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/UserNotice.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/UserNotice.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/UserNotice.java
index d648218..3c1c879 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/UserNotice.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/UserNotice.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/x509/type/V2Form.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/V2Form.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/V2Form.java
index 26ecec3..4964d29 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/V2Form.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/V2Form.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.x509.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  * Produce an object suitable for an ASN1OutputStream.


[09/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/Krb5PrincipalName.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/Krb5PrincipalName.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/Krb5PrincipalName.java
new file mode 100644
index 0000000..4f131a4
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/Krb5PrincipalName.java
@@ -0,0 +1,62 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.Realm;
+
+/**
+ KRB5PrincipalName ::= SEQUENCE {
+     realm                   [0] Realm,
+     principalName           [1] PrincipalName
+ }
+ */
+public class Krb5PrincipalName extends KrbSequenceType {
+    private static final int REALM = 0;
+    private static final int PRINCIPAL_NAME = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(REALM, Realm.class),
+            new ExplicitField(PRINCIPAL_NAME, PrincipalName.class)
+    };
+
+    public Krb5PrincipalName() {
+        super(fieldInfos);
+    }
+
+    public String getRelm() {
+        return getFieldAsString(REALM);
+    }
+
+    public void setRealm(String realm) {
+        setFieldAsString(REALM, realm);
+    }
+
+    public PrincipalName getPrincipalName() {
+        return getFieldAs(PRINCIPAL_NAME, PrincipalName.class);
+    }
+
+    public void setPrincipalName(PrincipalName principalName) {
+        setFieldAs(PRINCIPAL_NAME, principalName);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PaPkAsRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PaPkAsRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PaPkAsRep.java
new file mode 100644
index 0000000..204b612
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PaPkAsRep.java
@@ -0,0 +1,62 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.type.Asn1Choice;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.asn1.ImplicitField;
+
+/**
+ PA-PK-AS-REP ::= CHOICE {
+    dhInfo                  [0] DHRepInfo,
+    encKeyPack              [1] IMPLICIT OCTET STRING,
+ }
+ */
+public class PaPkAsRep extends Asn1Choice {
+    private static final int DH_INFO = 0;
+    private static final int ENCKEY_PACK = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(DH_INFO, DHRepInfo.class),
+            new ImplicitField(ENCKEY_PACK, Asn1OctetString.class)
+    };
+
+    public PaPkAsRep() {
+        super(fieldInfos);
+    }
+
+    public DHRepInfo getDHRepInfo() {
+        return getFieldAs(DH_INFO, DHRepInfo.class);
+    }
+
+    public void setDHRepInfo(DHRepInfo dhRepInfo) {
+        setFieldAs(DH_INFO, dhRepInfo);
+    }
+
+    public byte[] getEncKeyPack() {
+        return getFieldAsOctets(ENCKEY_PACK);
+    }
+
+    public void setEncKeyPack(byte[] encKeyPack) {
+        setFieldAsOctets(ENCKEY_PACK, encKeyPack);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PaPkAsReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PaPkAsReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PaPkAsReq.java
new file mode 100644
index 0000000..1d59112
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PaPkAsReq.java
@@ -0,0 +1,73 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.asn1.ImplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ PA-PK-AS-REQ ::= SEQUENCE {
+     signedAuthPack          [0] IMPLICIT OCTET STRING,
+     trustedCertifiers       [1] SEQUENCE OF ExternalPrincipalIdentifier OPTIONAL,
+     kdcPkId                 [2] IMPLICIT OCTET STRING OPTIONAL
+ }
+ */
+public class PaPkAsReq extends KrbSequenceType {
+    private static final int SIGNED_AUTH_PACK = 0;
+    private static final int TRUSTED_CERTIFIERS = 1;
+    private static final int KDC_PKID = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ImplicitField(SIGNED_AUTH_PACK, Asn1OctetString.class),
+            new ExplicitField(TRUSTED_CERTIFIERS, TrustedCertifiers.class),
+            new ImplicitField(KDC_PKID, Asn1OctetString.class)
+    };
+
+    public PaPkAsReq() {
+        super(fieldInfos);
+    }
+
+    public byte[] getSignedAuthPack() {
+        return getFieldAsOctets(SIGNED_AUTH_PACK);
+    }
+
+    public void setSignedAuthPack(byte[] signedAuthPack) {
+        setFieldAsOctets(SIGNED_AUTH_PACK, signedAuthPack);
+    }
+
+    public TrustedCertifiers getTrustedCertifiers() {
+        return getFieldAs(TRUSTED_CERTIFIERS, TrustedCertifiers.class);
+    }
+
+    public void setTrustedCertifiers(TrustedCertifiers trustedCertifiers) {
+        setFieldAs(TRUSTED_CERTIFIERS, trustedCertifiers);
+    }
+
+    public byte[] getKdcPkId() {
+        return getFieldAsOctets(KDC_PKID);
+    }
+
+    public void setKdcPkId(byte[] kdcPkId) {
+        setFieldAsOctets(KDC_PKID, kdcPkId);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PkAuthenticator.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PkAuthenticator.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PkAuthenticator.java
new file mode 100644
index 0000000..4549552
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/PkAuthenticator.java
@@ -0,0 +1,92 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ PKAuthenticator ::= SEQUENCE {
+     cusec                   [0] INTEGER (0..999999),
+     ctime                   [1] KerberosTime,
+     -- cusec and ctime are used as in [RFC4120], for
+     -- replay prevention.
+     nonce                   [2] INTEGER (0..4294967295),
+     -- Chosen randomly; this nonce does not need to
+     -- match with the nonce in the KDC-REQ-BODY.
+     paChecksum              [3] OCTET STRING OPTIONAL,
+     -- MUST be present.
+     -- Contains the SHA1 checksum, performed over
+     -- KDC-REQ-BODY.
+ }
+ */
+public class PkAuthenticator extends KrbSequenceType {
+    private static final int CUSEC = 0;
+    private static final int CTIME = 1;
+    private static final int NONCE = 2;
+    private static final int PA_CHECKSUM = 3;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(CUSEC, Asn1Integer.class),
+            new ExplicitField(CTIME, KerberosTime.class),
+            new ExplicitField(NONCE, Asn1Integer.class),
+            new ExplicitField(PA_CHECKSUM, Asn1OctetString.class)
+    };
+
+    public PkAuthenticator() {
+        super(fieldInfos);
+    }
+
+    public int getCusec() {
+        return getFieldAsInt(CUSEC);
+    }
+
+    public void setCusec(int cusec) {
+        setFieldAsInt(CUSEC, cusec);
+    }
+
+    public KerberosTime getCtime() {
+        return getFieldAsTime(CTIME);
+    }
+
+    public void setCtime(KerberosTime ctime) {
+        setFieldAs(CTIME, ctime);
+    }
+
+    public int getNonce() {
+        return getFieldAsInt(NONCE);
+    }
+
+    public void setNonce(int nonce) {
+        setFieldAsInt(NONCE, nonce);
+    }
+
+    public byte[] getPaChecksum() {
+        return getFieldAsOctets(PA_CHECKSUM);
+    }
+
+    public void setPaChecksum(byte[] paChecksum) {
+        setFieldAsOctets(PA_CHECKSUM, paChecksum);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/ReplyKeyPack.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/ReplyKeyPack.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/ReplyKeyPack.java
new file mode 100644
index 0000000..8baa470
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/ReplyKeyPack.java
@@ -0,0 +1,62 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+
+/**
+ ReplyKeyPack ::= SEQUENCE {
+    replyKey                [0] EncryptionKey,
+    asChecksum              [1] Checksum,
+ }
+ */
+public class ReplyKeyPack extends KrbSequenceType {
+    private static final int REPLY_KEY = 0;
+    private static final int AS_CHECKSUM = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(REPLY_KEY, EncryptionKey.class),
+            new ExplicitField(AS_CHECKSUM, CheckSum.class)
+    };
+
+    public ReplyKeyPack() {
+        super(fieldInfos);
+    }
+
+    public EncryptionKey getReplyKey() {
+        return getFieldAs(REPLY_KEY, EncryptionKey.class);
+    }
+
+    public void setReplyKey(EncryptionKey replyKey) {
+        setFieldAs(REPLY_KEY, replyKey);
+    }
+
+    public CheckSum getAsChecksum() {
+        return getFieldAs(AS_CHECKSUM, CheckSum.class);
+    }
+
+    public void setAsChecksum(CheckSum checkSum) {
+        setFieldAs(AS_CHECKSUM, checkSum);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/TdDhParameters.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/TdDhParameters.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/TdDhParameters.java
new file mode 100644
index 0000000..97855c1
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/TdDhParameters.java
@@ -0,0 +1,26 @@
+/**
+ *  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.type.pa.pkinit;
+
+/**
+ * TD-DH-PARAMETERS ::= SEQUENCE OF AlgorithmIdentifier
+ */
+public class TdDhParameters extends AlgorithmIdentifiers {
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/TrustedCertifiers.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/TrustedCertifiers.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/TrustedCertifiers.java
new file mode 100644
index 0000000..c57a9c1
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/TrustedCertifiers.java
@@ -0,0 +1,29 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ trustedCertifiers       SEQUENCE OF ExternalPrincipalIdentifier OPTIONAL,
+ */
+public class TrustedCertifiers extends KrbSequenceOfType<ExternalPrincipalIdentifier> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/PaTokenChallenge.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/PaTokenChallenge.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/PaTokenChallenge.java
new file mode 100644
index 0000000..77bd369
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/PaTokenChallenge.java
@@ -0,0 +1,41 @@
+/**
+ *  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.type.pa.token;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ PA-TOKEN-CHALLENGE ::= SEQUENCE {
+    tokenInfos       [0] SEQUENCE (SIZE(1..MAX)) OF TokenInfo,
+ }
+*/
+public class PaTokenChallenge extends KrbSequenceType {
+    private static final int TOKENINFOS = 0;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(TOKENINFOS, TokenInfos.class)
+    };
+
+    public PaTokenChallenge() {
+        super(fieldInfos);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/PaTokenRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/PaTokenRequest.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/PaTokenRequest.java
new file mode 100644
index 0000000..0b99fe2
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/PaTokenRequest.java
@@ -0,0 +1,62 @@
+/**
+ *  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.type.pa.token;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
+
+/**
+ PA-TOKEN-REQUEST ::= SEQUENCE {
+    token          [0]  OCTET STRING,
+    tokenInfo      [1]  TokenInfo
+ }
+*/
+public class PaTokenRequest extends KrbSequenceType {
+    private static final int TOKEN_INFO = 0;
+    private static final int TOKEN = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(TOKEN_INFO, TokenInfo.class),
+            new ExplicitField(TOKEN, KrbToken.class)
+    };
+
+    public PaTokenRequest() {
+        super(fieldInfos);
+    }
+
+    public KrbToken getToken() {
+        return getFieldAs(TOKEN, KrbToken.class);
+    }
+
+    public void setToken(KrbToken token) {
+        setFieldAs(TOKEN, token);
+    }
+
+    public TokenInfo getTokenInfo() {
+        return getFieldAs(TOKEN_INFO, TokenInfo.class);
+    }
+
+    public void setTokenInfo(TokenInfo tokenInfo) {
+        setFieldAs(TOKEN_INFO, tokenInfo);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenFlag.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenFlag.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenFlag.java
new file mode 100644
index 0000000..037d7eb
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenFlag.java
@@ -0,0 +1,51 @@
+/**
+ *  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.type.pa.token;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum TokenFlag implements Asn1EnumType {
+    NONE(-1),
+    ID_TOKEN_REQUIRED(0x40000000),
+    AC_TOKEN_REQUIRED(0x20000000),
+    BEARER_TOKEN_REQUIRED(0x10000000),
+    HOK_TOKEN_REQUIRED(0x08000000);
+
+    private final int value;
+
+    private TokenFlag(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static TokenFlag fromValue(int value) {
+        for (Asn1EnumType e : values()) {
+            if (e.getValue() == value) {
+                return (TokenFlag) e;
+            }
+        }
+
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenFlags.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenFlags.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenFlags.java
new file mode 100644
index 0000000..4a2fa4a
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenFlags.java
@@ -0,0 +1,39 @@
+/**
+ *  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.type.pa.token;
+
+import org.apache.kerby.asn1.type.Asn1Flags;
+
+import static org.apache.kerby.kerberos.kerb.type.ticket.TicketFlag.INVALID;
+
+public class TokenFlags extends Asn1Flags {
+
+    public TokenFlags() {
+        this(0);
+    }
+
+    public TokenFlags(int value) {
+        setFlags(value);
+    }
+
+    public boolean isInvalid() {
+        return isFlagSet(INVALID.getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenInfo.java
new file mode 100644
index 0000000..0acc254
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenInfo.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.type.pa.token;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.type.Asn1Utf8String;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ TokenInfo ::= SEQUENCE {
+    flags            [0] TokenFlags,
+    tokenVendor      [1] UTF8String,
+ }
+ */
+public class TokenInfo extends KrbSequenceType {
+    private static final int FLAGS = 0;
+    private static final int TOKEN_VENDOR = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(FLAGS, Asn1OctetString.class),
+            new ExplicitField(TOKEN_VENDOR, Asn1Utf8String.class),
+    };
+
+    public TokenInfo() {
+        super(fieldInfos);
+    }
+
+    public TokenFlags getFlags() {
+        return getFieldAs(FLAGS, TokenFlags.class);
+    }
+
+    public void setFlags(TokenFlags flags) {
+        setFieldAs(FLAGS, flags);
+    }
+
+    public String getTokenVendor() {
+        return getFieldAsString(TOKEN_VENDOR);
+    }
+
+    public void setTokenVendor(String tokenVendor) {
+        setFieldAs(TOKEN_VENDOR, new Asn1Utf8String(tokenVendor));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenInfos.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenInfos.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenInfos.java
new file mode 100644
index 0000000..07faa44
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/token/TokenInfos.java
@@ -0,0 +1,29 @@
+/**
+ *  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.type.pa.token;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ SEQUENCE (SIZE(1..MAX)) OF TokenInfo,
+*/
+public class TokenInfos extends KrbSequenceOfType<TokenInfo> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/EncTicketPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/EncTicketPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/EncTicketPart.java
new file mode 100644
index 0000000..40c4473
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/EncTicketPart.java
@@ -0,0 +1,169 @@
+/**
+ *  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.type.ticket;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbAppSequenceType;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.TransitedEncoding;
+
+/**
+ -- Encrypted part of ticket
+ EncTicketPart   ::= [APPLICATION 3] SEQUENCE {
+ flags                   [0] TicketFlags,
+ key                     [1] EncryptionKey,
+ crealm                  [2] Realm,
+ cname                   [3] PrincipalName,
+ transited               [4] TransitedEncoding,
+ authtime                [5] KerberosTime,
+ starttime               [6] KerberosTime OPTIONAL,
+ endtime                 [7] KerberosTime,
+ renew-till              [8] KerberosTime OPTIONAL,
+ caddr                   [9] HostAddresses OPTIONAL,
+ authorization-data      [10] AuthorizationData OPTIONAL
+ }
+ */
+public class EncTicketPart extends KrbAppSequenceType {
+    public static final int TAG = 3;
+
+    private static final int FLAGS = 0;
+    private static final int KEY = 1;
+    private static final int CREALM = 2;
+    private static final int CNAME = 3;
+    private static final int TRANSITED = 4;
+    private static final int AUTHTIME = 5;
+    private static final int STARTTIME = 6;
+    private static final int ENDTIME = 7;
+    private static final int RENEW_TILL = 8;
+    private static final int CADDR = 9;
+    private static final int AUTHORIZATION_DATA = 10;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(FLAGS, 0, TicketFlags.class),
+            new ExplicitField(KEY, 1, EncryptionKey.class),
+            new ExplicitField(CREALM, 2, KerberosString.class),
+            new ExplicitField(CNAME, 3, PrincipalName.class),
+            new ExplicitField(TRANSITED, 4, TransitedEncoding.class),
+            new ExplicitField(AUTHTIME, 5, KerberosTime.class),
+            new ExplicitField(STARTTIME, 6, KerberosTime.class),
+            new ExplicitField(ENDTIME, 7, KerberosTime.class),
+            new ExplicitField(ENDTIME, 8, KerberosTime.class),
+            new ExplicitField(CADDR, 9, HostAddresses.class),
+            new ExplicitField(AUTHORIZATION_DATA, 10, AuthorizationData.class)
+    };
+
+    public EncTicketPart() {
+        super(TAG, fieldInfos);
+    }
+
+    public TicketFlags getFlags() {
+        return getFieldAs(FLAGS, TicketFlags.class);
+    }
+
+    public void setFlags(TicketFlags flags) {
+        setFieldAs(FLAGS, flags);
+    }
+
+    public EncryptionKey getKey() {
+        return getFieldAs(KEY, EncryptionKey.class);
+    }
+
+    public void setKey(EncryptionKey key) {
+        setFieldAs(KEY, key);
+    }
+
+    public String getCrealm() {
+        return getFieldAsString(CREALM);
+    }
+
+    public void setCrealm(String crealm) {
+        setFieldAsString(CREALM, crealm);
+    }
+
+    public PrincipalName getCname() {
+        return getFieldAs(CNAME, PrincipalName.class);
+    }
+
+    public void setCname(PrincipalName cname) {
+        setFieldAs(CNAME, cname);
+    }
+
+    public TransitedEncoding getTransited() {
+        return getFieldAs(TRANSITED, TransitedEncoding.class);
+    }
+
+    public void setTransited(TransitedEncoding transited) {
+        setFieldAs(TRANSITED, transited);
+    }
+
+    public KerberosTime getAuthTime() {
+        return getFieldAs(AUTHTIME, KerberosTime.class);
+    }
+
+    public void setAuthTime(KerberosTime authTime) {
+        setFieldAs(AUTHTIME, authTime);
+    }
+
+    public KerberosTime getStartTime() {
+        return getFieldAs(STARTTIME, KerberosTime.class);
+    }
+
+    public void setStartTime(KerberosTime startTime) {
+        setFieldAs(STARTTIME, startTime);
+    }
+
+    public KerberosTime getEndTime() {
+        return getFieldAs(ENDTIME, KerberosTime.class);
+    }
+
+    public void setEndTime(KerberosTime endTime) {
+        setFieldAs(ENDTIME, endTime);
+    }
+
+    public KerberosTime getRenewtill() {
+        return getFieldAs(RENEW_TILL, KerberosTime.class);
+    }
+
+    public void setRenewtill(KerberosTime renewtill) {
+        setFieldAs(RENEW_TILL, renewtill);
+    }
+
+    public HostAddresses getClientAddresses() {
+        return getFieldAs(CADDR, HostAddresses.class);
+    }
+
+    public void setClientAddresses(HostAddresses clientAddresses) {
+        setFieldAs(CADDR, clientAddresses);
+    }
+
+    public AuthorizationData getAuthorizationData() {
+        return getFieldAs(AUTHORIZATION_DATA, AuthorizationData.class);
+    }
+
+    public void setAuthorizationData(AuthorizationData authorizationData) {
+        setFieldAs(AUTHORIZATION_DATA, authorizationData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/KrbTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/KrbTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/KrbTicket.java
new file mode 100644
index 0000000..f0a00ca
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/KrbTicket.java
@@ -0,0 +1,49 @@
+/**
+ *  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.type.ticket;
+
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncKdcRepPart;
+
+public class KrbTicket {
+    private Ticket ticket;
+    private EncKdcRepPart encKdcRepPart;
+
+    public KrbTicket(Ticket ticket, EncKdcRepPart encKdcRepPart) {
+        this.ticket = ticket;
+        this.encKdcRepPart = encKdcRepPart;
+    }
+
+    public Ticket getTicket() {
+        return ticket;
+    }
+
+    public EncKdcRepPart getEncKdcRepPart() {
+        return encKdcRepPart;
+    }
+
+    public EncryptionKey getSessionKey() {
+        return encKdcRepPart.getKey();
+    }
+
+    public String getRealm() {
+        return ticket.getRealm();
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/SgtTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/SgtTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/SgtTicket.java
new file mode 100644
index 0000000..86cdf1e
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/SgtTicket.java
@@ -0,0 +1,31 @@
+/**
+ *  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.type.ticket;
+
+import org.apache.kerby.kerberos.kerb.type.kdc.EncTgsRepPart;
+
+/**
+ * Service granting ticket.
+ */
+public class SgtTicket extends KrbTicket {
+    public SgtTicket(Ticket ticket, EncTgsRepPart encKdcRepPart) {
+        super(ticket, encKdcRepPart);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TgtTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TgtTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TgtTicket.java
new file mode 100644
index 0000000..b05a3a1
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TgtTicket.java
@@ -0,0 +1,39 @@
+/**
+ *  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.type.ticket;
+
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncAsRepPart;
+
+/**
+ * Ticket granting ticket.
+ */
+public class TgtTicket extends KrbTicket {
+    private PrincipalName clientPrincipal;
+
+    public TgtTicket(Ticket ticket, EncAsRepPart encKdcRepPart, String clientPrincipal) {
+        super(ticket, encKdcRepPart);
+        this.clientPrincipal = new PrincipalName(clientPrincipal);
+    }
+
+    public PrincipalName getClientPrincipal() {
+        return clientPrincipal;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/Ticket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/Ticket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/Ticket.java
new file mode 100644
index 0000000..1855e37
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/Ticket.java
@@ -0,0 +1,100 @@
+/**
+ *  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.type.ticket;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.KrbConstant;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KrbAppSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+
+/**
+ Ticket          ::= [APPLICATION 1] SEQUENCE {
+ tkt-vno         [0] INTEGER (5),
+ realm           [1] Realm,
+ sname           [2] PrincipalName,
+ enc-part        [3] EncryptedData -- EncTicketPart
+ }
+ */
+public class Ticket extends KrbAppSequenceType {
+    public static final int TKT_KVNO = KrbConstant.KRB_V5;
+    public static final int TAG = 1;
+
+    private static final int TKT_VNO = 0;
+    private static final int REALM = 1;
+    private static final int SNAME = 2;
+    private static final int ENC_PART = 3;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(TKT_VNO, 0, Asn1Integer.class),
+            new ExplicitField(REALM, 1, KerberosString.class),
+            new ExplicitField(SNAME, 2, PrincipalName.class),
+            new ExplicitField(ENC_PART, 3, EncryptedData.class)
+    };
+
+    public Ticket() {
+        super(TAG, fieldInfos);
+        setTktKvno(TKT_KVNO);
+    }
+
+    private EncTicketPart encPart;
+
+    public int getTktvno() {
+        return getFieldAsInt(TKT_VNO);
+    }
+
+    public void setTktKvno(int kvno) {
+        setFieldAsInt(TKT_VNO, kvno);
+    }
+    public PrincipalName getSname() {
+        return getFieldAs(SNAME, PrincipalName.class);
+    }
+
+    public void setSname(PrincipalName sname) {
+        setFieldAs(SNAME, sname);
+    }
+
+    public String getRealm() {
+        return getFieldAsString(REALM);
+    }
+
+    public void setRealm(String realm) {
+        setFieldAs(REALM, new KerberosString(realm));
+    }
+
+    public EncryptedData getEncryptedEncPart() {
+        return getFieldAs(ENC_PART, EncryptedData.class);
+    }
+
+    public void setEncryptedEncPart(EncryptedData encryptedEncPart) {
+        setFieldAs(ENC_PART, encryptedEncPart);
+    }
+
+    public EncTicketPart getEncPart() {
+        return encPart;
+    }
+
+    public void setEncPart(EncTicketPart encPart) {
+        this.encPart = encPart;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TicketFlag.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TicketFlag.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TicketFlag.java
new file mode 100644
index 0000000..e2e99a8
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TicketFlag.java
@@ -0,0 +1,62 @@
+/**
+ *  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.type.ticket;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum TicketFlag implements Asn1EnumType {
+    NONE(-1),
+    FORWARDABLE(0x40000000),
+    FORWARDED(0x20000000),
+    PROXIABLE(0x10000000),
+    PROXY(0x08000000),
+    MAY_POSTDATE(0x04000000),
+    POSTDATED(0x02000000),
+    INVALID(0x01000000),
+    RENEWABLE(0x00800000),
+    INITIAL(0x00400000),
+    PRE_AUTH(0x00200000),
+    HW_AUTH(0x00100000),
+    TRANSIT_POLICY_CHECKED(0x00080000),
+    OK_AS_DELEGATE(0x00040000),
+    ENC_PA_REP(0x00010000),
+    ANONYMOUS(0x00008000);
+
+    private final int value;
+
+    private TicketFlag(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static TicketFlag fromValue(int value) {
+        for (Asn1EnumType e : values()) {
+            if (e.getValue() == value) {
+                return (TicketFlag) e;
+            }
+        }
+
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TicketFlags.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TicketFlags.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TicketFlags.java
new file mode 100644
index 0000000..05a697b
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/TicketFlags.java
@@ -0,0 +1,39 @@
+/**
+ *  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.type.ticket;
+
+import org.apache.kerby.asn1.type.Asn1Flags;
+
+import static org.apache.kerby.kerberos.kerb.type.ticket.TicketFlag.INVALID;
+
+public class TicketFlags extends Asn1Flags {
+
+    public TicketFlags() {
+        this(0);
+    }
+
+    public TicketFlags(int value) {
+        setFlags(value);
+    }
+
+    public boolean isInvalid() {
+        return isFlagSet(INVALID.getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/Tickets.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/Tickets.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/Tickets.java
new file mode 100644
index 0000000..60c445b
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ticket/Tickets.java
@@ -0,0 +1,29 @@
+/**
+ *  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.type.ticket;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ SEQUENCE OF Ticket
+ */
+public class Tickets extends KrbSequenceOfType<Ticket> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 5fb7d42..f00570f 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
@@ -35,9 +35,9 @@ import org.apache.kerby.kerberos.kerb.crypto.cksum.RsaMd4DesCheckSum;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.RsaMd5CheckSum;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.RsaMd5DesCheckSum;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.Sha1CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
 
 /**
  * Checksum handler as the highest level API for checksum stuffs defined in

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTypeHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTypeHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTypeHandler.java
index 5339a21..4c989e3 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTypeHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTypeHandler.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.crypto;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public interface CheckSumTypeHandler extends CryptoTypeHandler {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncTypeHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncTypeHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncTypeHandler.java
index f32a72f..09bad5d 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncTypeHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncTypeHandler.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.crypto;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public interface EncTypeHandler extends CryptoTypeHandler {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 a5e18df..91d7e34 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
@@ -32,11 +32,11 @@ import org.apache.kerby.kerberos.kerb.crypto.enc.DesCbcMd5Enc;
 import org.apache.kerby.kerberos.kerb.crypto.enc.Rc4HmacEnc;
 import org.apache.kerby.kerberos.kerb.crypto.enc.Rc4HmacExpEnc;
 import org.apache.kerby.kerberos.kerb.crypto.util.Random;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import javax.crypto.Cipher;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia128CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia128CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia128CheckSum.java
index 1f01725..93e329c 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia128CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia128CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Camellia128Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.CamelliaKeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class CmacCamellia128CheckSum extends CmacKcCheckSum {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia256CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia256CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia256CheckSum.java
index a932ed2..44e82dc 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia256CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacCamellia256CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Camellia256Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.CamelliaKeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class CmacCamellia256CheckSum extends CmacKcCheckSum {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Crc32CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Crc32CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Crc32CheckSum.java
index 09bf7dc..1056547 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Crc32CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Crc32CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.AbstractUnkeyedCheckSumTypeHandler;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Crc32Provider;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class Crc32CheckSum extends AbstractUnkeyedCheckSumTypeHandler {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/DesCbcCheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/DesCbcCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/DesCbcCheckSum.java
index 59b1f1d..bdee846 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/DesCbcCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/DesCbcCheckSum.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class DesCbcCheckSum extends ConfounderedDesCheckSum {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 f584915..73cdb0a 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
@@ -23,7 +23,7 @@ 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.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 import java.nio.charset.StandardCharsets;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes128CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes128CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes128CheckSum.java
index c393bbe..86a2aa6 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes128CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes128CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Aes128Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.AesKeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class HmacSha1Aes128CheckSum extends HmacKcCheckSum {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes256CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes256CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes256CheckSum.java
index d44e03d..8ee3272 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes256CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Aes256CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Aes256Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.AesKeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class HmacSha1Aes256CheckSum extends HmacKcCheckSum {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Des3CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Des3CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Des3CheckSum.java
index 30aea8a..26f58fc 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Des3CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacSha1Des3CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Des3Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.Des3KeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class HmacSha1Des3CheckSum extends HmacKcCheckSum {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 7b9e0e8..b76a75d 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
@@ -24,7 +24,7 @@ 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;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class Md5HmacRc4CheckSum extends AbstractKeyedCheckSumTypeHandler {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4CheckSum.java
index cdaa879..d347438 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.AbstractUnkeyedCheckSumTypeHandler;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md4Provider;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class RsaMd4CheckSum extends AbstractUnkeyedCheckSumTypeHandler {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4DesCheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4DesCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4DesCheckSum.java
index 5a410ec..d64b366 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4DesCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd4DesCheckSum.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md4Provider;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class RsaMd4DesCheckSum extends ConfounderedDesCheckSum {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5CheckSum.java
index bcc1465..d769bda 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.AbstractUnkeyedCheckSumTypeHandler;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md5Provider;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class RsaMd5CheckSum extends AbstractUnkeyedCheckSumTypeHandler {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5DesCheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5DesCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5DesCheckSum.java
index 2080fa7..8699065 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5DesCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/RsaMd5DesCheckSum.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md5Provider;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public final class RsaMd5DesCheckSum extends ConfounderedDesCheckSum {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Sha1CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Sha1CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Sha1CheckSum.java
index 8a920e6..ca0ddfc 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Sha1CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Sha1CheckSum.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.cksum;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.AbstractUnkeyedCheckSumTypeHandler;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Sha1Provider;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
 
 public class Sha1CheckSum extends AbstractUnkeyedCheckSumTypeHandler {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes128CtsHmacSha1Enc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes128CtsHmacSha1Enc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes128CtsHmacSha1Enc.java
index ec6d15b..259fcf5 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes128CtsHmacSha1Enc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes128CtsHmacSha1Enc.java
@@ -23,8 +23,8 @@ import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Sha1Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Aes128Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.AesProvider;
 import org.apache.kerby.kerberos.kerb.crypto.key.AesKeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class Aes128CtsHmacSha1Enc extends KeKiHmacSha1Enc {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes256CtsHmacSha1Enc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes256CtsHmacSha1Enc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes256CtsHmacSha1Enc.java
index cc41273..e320cfa 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes256CtsHmacSha1Enc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Aes256CtsHmacSha1Enc.java
@@ -23,8 +23,8 @@ import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Sha1Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Aes256Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.AesProvider;
 import org.apache.kerby.kerberos.kerb.crypto.key.AesKeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class Aes256CtsHmacSha1Enc extends KeKiHmacSha1Enc {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia128CtsCmacEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia128CtsCmacEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia128CtsCmacEnc.java
index cf4003b..5d62903 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia128CtsCmacEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia128CtsCmacEnc.java
@@ -21,8 +21,8 @@ package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Camellia128Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.CamelliaKeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class Camellia128CtsCmacEnc extends KeKiCmacEnc {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia256CtsCmacEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia256CtsCmacEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia256CtsCmacEnc.java
index a3e4924..bae6061 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia256CtsCmacEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Camellia256CtsCmacEnc.java
@@ -21,8 +21,8 @@ package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Camellia256Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.CamelliaKeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class Camellia256CtsCmacEnc extends KeKiCmacEnc {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Des3CbcSha1Enc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Des3CbcSha1Enc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Des3CbcSha1Enc.java
index 7f19af3..18cfa11 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Des3CbcSha1Enc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Des3CbcSha1Enc.java
@@ -22,8 +22,8 @@ package org.apache.kerby.kerberos.kerb.crypto.enc;
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Sha1Provider;
 import org.apache.kerby.kerberos.kerb.crypto.enc.provider.Des3Provider;
 import org.apache.kerby.kerberos.kerb.crypto.key.Des3KeyMaker;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class Des3CbcSha1Enc extends KeKiHmacSha1Enc {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcCrcEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcCrcEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcCrcEnc.java
index 0aee9be..dda8b2c 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcCrcEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcCrcEnc.java
@@ -21,8 +21,8 @@ package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Crc32Provider;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class DesCbcCrcEnc extends DesCbcEnc {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd4Enc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd4Enc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd4Enc.java
index 534a369..91ce509 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd4Enc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd4Enc.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md4Provider;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class DesCbcMd4Enc extends DesCbcEnc {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd5Enc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd5Enc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd5Enc.java
index 3a8e26d..ea404ea 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd5Enc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/DesCbcMd5Enc.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
 import org.apache.kerby.kerberos.kerb.crypto.cksum.provider.Md5Provider;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class DesCbcMd5Enc extends DesCbcEnc {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 022d5df..5e52e05 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
@@ -23,7 +23,7 @@ import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
 import org.apache.kerby.kerberos.kerb.crypto.key.DkKeyMaker;
 import org.apache.kerby.kerberos.kerb.crypto.util.Cmac;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 import java.nio.charset.StandardCharsets;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 d7115e5..2f4aa59 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
@@ -29,8 +29,8 @@ 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;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class Rc4HmacEnc extends AbstractEncTypeHandler {
     private boolean exportable;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacExpEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacExpEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacExpEnc.java
index 2af6dd2..5d4e146 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacExpEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacExpEnc.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto.enc;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 public class Rc4HmacExpEnc extends Rc4HmacEnc {
 


[13/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaData.java
deleted file mode 100644
index 3594a61..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaData.java
+++ /dev/null
@@ -1,41 +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.spec.pa;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- PA-DATA         ::= SEQUENCE {
-     -- NOTE: first tag is [1], not [0]
-     padata-type     [1] Int32,
-     padata-value    [2] OCTET STRING -- might be encoded AP-REQ
- }
- */
-public class PaData extends KrbSequenceOfType<PaDataEntry> {
-
-    public PaDataEntry findEntry(PaDataType paType) {
-        for (PaDataEntry pae : getElements()) {
-            if (pae.getPaDataType() == paType) {
-                return pae;
-            }
-        }
-        return null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java
deleted file mode 100644
index 0ad3fa3..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java
+++ /dev/null
@@ -1,70 +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.spec.pa;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- PA-DATA         ::= SEQUENCE {
-     -- NOTE: first tag is [1], not [0]
-     padata-type     [1] Int32,
-     padata-value    [2] OCTET STRING -- might be encoded AP-REQ
- }
- */
-public class PaDataEntry extends KrbSequenceType {
-    private static final int PADATA_TYPE = 0;
-    private static final int PADATA_VALUE = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PADATA_TYPE, 1, Asn1Integer.class),
-            new ExplicitField(PADATA_VALUE, 2, Asn1OctetString.class)
-    };
-
-    public PaDataEntry() {
-        super(fieldInfos);
-    }
-
-    public PaDataEntry(PaDataType type, byte[] paData) {
-        this();
-        setPaDataType(type);
-        setPaDataValue(paData);
-    }
-
-    public PaDataType getPaDataType() {
-        Integer value = getFieldAsInteger(PADATA_TYPE);
-        return PaDataType.fromValue(value);
-    }
-
-    public void setPaDataType(PaDataType paDataType) {
-        setFieldAsInt(PADATA_TYPE, paDataType.getValue());
-    }
-
-    public byte[] getPaDataValue() {
-        return getFieldAsOctets(PADATA_VALUE);
-    }
-
-    public void setPaDataValue(byte[] paDataValue) {
-        setFieldAsOctets(PADATA_VALUE, paDataValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataType.java
deleted file mode 100644
index 3656b5e..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataType.java
+++ /dev/null
@@ -1,92 +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.spec.pa;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-/**
- * From krb5.h
- */
-public enum PaDataType implements Asn1EnumType {
-    NONE                (0),
-    TGS_REQ              (1),
-    AP_REQ              (1),
-    ENC_TIMESTAMP       (2), // RFC 4120
-    PW_SALT             (3), // RFC 4120
-    ENC_ENCKEY        (4),  // Key encrypted within itself
-    ENC_UNIX_TIME       (5),  // timestamp encrypted in key. RFC 4120
-    ENC_SANDIA_SECURID (6),  // SecurId passcode. RFC 4120
-    SESAME              (7),  // Sesame project. RFC 4120
-    OSF_DCE             (8),  // OSF DCE. RFC 4120
-    CYBERSAFE_SECUREID (9),  // Cybersafe. RFC 4120
-    AFS3_SALT           (10), // Cygnus. RFC 4120, 3961
-    ETYPE_INFO          (11), // Etype info for preauth. RFC 4120
-    SAM_CHALLENGE       (12), // SAM/OTP
-    SAM_RESPONSE        (13), // SAM/OTP
-    PK_AS_REQ           (16), // PKINIT. RFC 4556
-    PK_AS_REP           (17), // PKINIT. RFC 4556
-    ETYPE_INFO2         (19), // RFC 4120
-    USE_SPECIFIED_KVNO  (20), // RFC 4120
-    SVR_REFERRAL_INFO   (20), // Windows 2000 referrals. RFC 6820
-    SAM_REDIRECT        (21), // SAM/OTP. RFC 4120
-    GET_FROM_TYPED_DATA (22), // Embedded in typed data. RFC 4120
-    REFERRAL            (25), // draft referral system
-    SAM_CHALLENGE_2     (30), // draft challenge system, updated
-    SAM_RESPONSE_2      (31), // draft challenge system, updated
-    /* MS-KILE */
-    PAC_REQUEST         (128), // include Windows PAC
-    FOR_USER            (129), // username protocol transition request
-    S4U_X509_USER       (130), // certificate protocol transition request
-    AS_CHECKSUM         (132), // AS checksum
-    FX_COOKIE           (133), // RFC 6113
-    FX_FAST             (136), // RFC 6113
-    FX_ERROR            (137), // RFC 6113
-    ENCRYPTED_CHALLENGE (138), // RFC 6113
-    OTP_CHALLENGE       (141), // RFC 6560 section 4.1
-    OTP_REQUEST         (142), // RFC 6560 section 4.2
-    OTP_PIN_CHANGE      (144), // RFC 6560 section 4.3
-    PKINIT_KX           (147), // RFC 6112
-    ENCPADATA_REQ_ENC_PA_REP   (149), // RFC 6806
-    TOKEN_REQUEST       (148), // TokenPreauth
-    TOKEN_CHALLENGE     (149);
-
-    private final int value;
-
-    private PaDataType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static PaDataType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value.intValue()) {
-                    return (PaDataType) e;
-                }
-            }
-        }
-
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java
deleted file mode 100644
index 66594d4..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java
+++ /dev/null
@@ -1,67 +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.spec.pa;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- PA-ENC-TS-ENC           ::= SEQUENCE {
-    patimestamp     [0] KerberosTime -- client's time --,
-    pausec          [1] Microseconds OPTIONAL
- }
- */
-public class PaEncTsEnc extends KrbSequenceType {
-    private static final int PATIMESTAMP = 0;
-    private static final int PAUSEC = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PATIMESTAMP, 0, KerberosTime.class),
-            new ExplicitField(PAUSEC, 1, Asn1Integer.class)
-    };
-
-    public PaEncTsEnc() {
-        super(fieldInfos);
-    }
-
-    public KerberosTime getPaTimestamp() {
-        return getFieldAsTime(PATIMESTAMP);
-    }
-
-    public void setPaTimestamp(KerberosTime paTimestamp) {
-        setFieldAs(PATIMESTAMP, paTimestamp);
-    }
-
-    public int getPaUsec() {
-        return getFieldAsInt(PAUSEC);
-    }
-
-    public void setPaUsec(int paUsec) {
-        setFieldAsInt(PAUSEC, paUsec);
-    }
-
-    public KerberosTime getAllTime() {
-        KerberosTime paTimestamp = getPaTimestamp();
-        return paTimestamp.extend(getPaUsec() / 1000);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java
deleted file mode 100644
index 1157b50..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java
+++ /dev/null
@@ -1,70 +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.spec.pa.otp;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.Asn1Utf8String;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.AlgorithmIdentifiers;
-
-/**
- OTP-TOKENINFO ::= SEQUENCE {
-     flags            [0] OTPFlags,
-     otp-vendor       [1] UTF8String               OPTIONAL,
-     otp-challenge    [2] OCTET STRING (SIZE(1..MAX)) OPTIONAL,
-     otp-length       [3] Int32                    OPTIONAL,
-     otp-format       [4] OTPFormat                OPTIONAL,
-     otp-tokenID      [5] OCTET STRING             OPTIONAL,
-     otp-algID        [6] AnyURI                   OPTIONAL,
-     supportedHashAlg [7] SEQUENCE OF AlgorithmIdentifier OPTIONAL,
-     iterationCount   [8] Int32                    OPTIONAL
- }
- */
-public class OtpTokenInfo extends KrbSequenceType {
-    private static final int FLAGS = 0;
-    private static final int OTP_VENDOR = 1;
-    private static final int OTP_CHALLENGE = 2;
-    private static final int OTP_LENGTH = 3;
-    private static final int OTP_FORMAT = 4;
-    private static final int OTP_TOKEN_ID = 5;
-    private static final int OTP_ALG_ID = 6;
-    private static final int SUPPORTED_HASH_ALG = 7;
-    private static final int ITERATION_COUNT = 8;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(FLAGS, Asn1OctetString.class),
-            new ExplicitField(OTP_VENDOR, Asn1Utf8String.class),
-            new ExplicitField(OTP_CHALLENGE, Asn1OctetString.class),
-            new ExplicitField(OTP_LENGTH, KerberosString.class),
-            new ExplicitField(OTP_FORMAT, Asn1OctetString.class),
-            new ExplicitField(OTP_TOKEN_ID, Asn1Utf8String.class),
-            new ExplicitField(OTP_ALG_ID, Asn1OctetString.class),
-            new ExplicitField(SUPPORTED_HASH_ALG, AlgorithmIdentifiers.class),
-            new ExplicitField(ITERATION_COUNT, Asn1Integer.class)
-    };
-
-    public OtpTokenInfo() {
-        super(fieldInfos);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java
deleted file mode 100644
index 161b230..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java
+++ /dev/null
@@ -1,56 +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.spec.pa.otp;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.Asn1Utf8String;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- PA-OTP-CHALLENGE ::= SEQUENCE {
-     nonce            [0] OCTET STRING,
-     otp-service      [1] UTF8String               OPTIONAL,
-     otp-tokenInfo    [2] SEQUENCE (SIZE(1..MAX)) OF OTP-TOKENINFO,
-     salt             [3] KerberosString           OPTIONAL,
-     s2kparams        [4] OCTET STRING             OPTIONAL,
- }
- */
-public class PaOtpChallenge extends KrbSequenceType {
-    private static final int NONCE = 0;
-    private static final int OTP_SERVICE = 1;
-    private static final int OTP_TOKEN_INFO = 2;
-    private static final int SALT = 3;
-    private static final int S2KPARAMS = 4;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(NONCE, Asn1OctetString.class),
-            new ExplicitField(OTP_SERVICE, Asn1Utf8String.class),
-            new ExplicitField(OTP_TOKEN_INFO, Asn1OctetString.class),
-            new ExplicitField(SALT, KerberosString.class),
-            new ExplicitField(S2KPARAMS, Asn1OctetString.class)
-    };
-
-    public PaOtpChallenge() {
-        super(fieldInfos);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AdInitialVerifiedCas.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AdInitialVerifiedCas.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AdInitialVerifiedCas.java
deleted file mode 100644
index 484f37b..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AdInitialVerifiedCas.java
+++ /dev/null
@@ -1,28 +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.spec.pa.pkinit;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- * AD-INITIAL-VERIFIED-CAS ::= SEQUENCE OF ExternalPrincipalIdentifier
- */
-public class AdInitialVerifiedCas extends KrbSequenceOfType<ExternalPrincipalIdentifier> {
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AlgorithmIdentifiers.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AlgorithmIdentifiers.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AlgorithmIdentifiers.java
deleted file mode 100644
index 3a68fbb..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AlgorithmIdentifiers.java
+++ /dev/null
@@ -1,30 +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.spec.pa.pkinit;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-import org.apache.kerby.x509.type.AlgorithmIdentifier;
-
-/**
- trustedCertifiers       SEQUENCE OF AlgorithmIdentifier OPTIONAL,
- */
-public class AlgorithmIdentifiers extends KrbSequenceOfType<AlgorithmIdentifier> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java
deleted file mode 100644
index 78dc6b0..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java
+++ /dev/null
@@ -1,83 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.x509.type.SubjectPublicKeyInfo;
-
-/**
- AuthPack ::= SEQUENCE {
-     pkAuthenticator         [0] PKAuthenticator,
-     clientPublicValue       [1] SubjectPublicKeyInfo OPTIONAL,
-     supportedCMSTypes       [2] SEQUENCE OF AlgorithmIdentifier OPTIONAL,
-     clientDHNonce           [3] DHNonce OPTIONAL
- }
- */
-public class AuthPack extends KrbSequenceType {
-    private static final int PK_AUTHENTICATOR = 0;
-    private static final int CLIENT_PUBLIC_VALUE = 1;
-    private static final int SUPPORTED_CMS_TYPES = 2;
-    private static final int CLIENT_DH_NONCE = 3;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PK_AUTHENTICATOR, PkAuthenticator.class),
-            new ExplicitField(CLIENT_PUBLIC_VALUE, SubjectPublicKeyInfo.class),
-            new ExplicitField(SUPPORTED_CMS_TYPES, AlgorithmIdentifiers.class),
-            new ExplicitField(CLIENT_DH_NONCE, DHNonce.class)
-    };
-
-    public AuthPack() {
-        super(fieldInfos);
-    }
-
-    public PkAuthenticator getPkAuthenticator() {
-        return getFieldAs(PK_AUTHENTICATOR, PkAuthenticator.class);
-    }
-
-    public void setPkAuthenticator(PkAuthenticator pkAuthenticator) {
-        setFieldAs(PK_AUTHENTICATOR, pkAuthenticator);
-    }
-
-    public SubjectPublicKeyInfo getClientPublicValue() {
-        return getFieldAs(CLIENT_PUBLIC_VALUE, SubjectPublicKeyInfo.class);
-    }
-
-    public void setClientPublicValue(SubjectPublicKeyInfo clientPublicValue) {
-        setFieldAs(CLIENT_PUBLIC_VALUE, clientPublicValue);
-    }
-
-    public AlgorithmIdentifiers getsupportedCmsTypes() {
-        return getFieldAs(CLIENT_DH_NONCE, AlgorithmIdentifiers.class);
-    }
-
-    public void setsupportedCmsTypes(AlgorithmIdentifiers supportedCMSTypes) {
-        setFieldAs(CLIENT_DH_NONCE, supportedCMSTypes);
-    }
-
-    public DHNonce getClientDhNonce() {
-        return getFieldAs(CLIENT_DH_NONCE, DHNonce.class);
-    }
-
-    public void setClientDhNonce(DHNonce dhNonce) {
-        setFieldAs(CLIENT_DH_NONCE, dhNonce);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHNonce.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHNonce.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHNonce.java
deleted file mode 100644
index 4e51adb..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHNonce.java
+++ /dev/null
@@ -1,28 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.type.Asn1OctetString;
-
-/**
- * DHNonce ::= OCTET STRING
- */
-public class DHNonce extends Asn1OctetString {
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java
deleted file mode 100644
index e2a39f1..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java
+++ /dev/null
@@ -1,62 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.asn1.ImplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- DHRepInfo ::= SEQUENCE {
-    dhSignedData            [0] IMPLICIT OCTET STRING,
-    serverDHNonce           [1] DHNonce OPTIONAL
- }
- */
-public class DHRepInfo extends KrbSequenceType {
-    private static final int DH_SIGNED_DATA = 0;
-    private static final int SERVER_DH_NONCE = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ImplicitField(DH_SIGNED_DATA, Asn1OctetString.class),
-            new ExplicitField(SERVER_DH_NONCE, DHNonce.class)
-    };
-
-    public DHRepInfo() {
-        super(fieldInfos);
-    }
-
-    public byte[] getDHSignedData() {
-        return getFieldAsOctets(DH_SIGNED_DATA);
-    }
-
-    public void setDHSignedData(byte[] dhSignedData) {
-        setFieldAsOctets(DH_SIGNED_DATA, dhSignedData);
-    }
-
-    public DHNonce getServerDhNonce() {
-        return getFieldAs(SERVER_DH_NONCE, DHNonce.class);
-    }
-
-    public void setServerDhNonce(DHNonce dhNonce) {
-        setFieldAs(SERVER_DH_NONCE, dhNonce);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java
deleted file mode 100644
index 177aed7..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java
+++ /dev/null
@@ -1,72 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ImplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- ExternalPrincipalIdentifier ::= SEQUENCE {
-     subjectName             [0] IMPLICIT OCTET STRING OPTIONAL,
-     issuerAndSerialNumber   [1] IMPLICIT OCTET STRING OPTIONAL,
-     subjectKeyIdentifier    [2] IMPLICIT OCTET STRING OPTIONAL
- }
- */
-public class ExternalPrincipalIdentifier extends KrbSequenceType {
-    private static final int SUBJECT_NAME = 0;
-    private static final int ISSUER_AND_SERIAL_NUMBER = 1;
-    private static final int SUBJECT_KEY_IDENTIFIER = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ImplicitField(SUBJECT_NAME, Asn1OctetString.class),
-            new ImplicitField(ISSUER_AND_SERIAL_NUMBER, Asn1OctetString.class),
-            new ImplicitField(SUBJECT_KEY_IDENTIFIER, Asn1OctetString.class)
-    };
-
-    public ExternalPrincipalIdentifier() {
-        super(fieldInfos);
-    }
-
-    public byte[] getSubjectName() {
-        return getFieldAsOctets(SUBJECT_NAME);
-    }
-
-    public void setSubjectName(byte[] subjectName) {
-        setFieldAsOctets(SUBJECT_NAME, subjectName);
-    }
-
-    public byte[] getIssuerSerialNumber() {
-        return getFieldAsOctets(ISSUER_AND_SERIAL_NUMBER);
-    }
-
-    public void setIssuerSerialNumber(byte[] issuerSerialNumber) {
-        setFieldAsOctets(ISSUER_AND_SERIAL_NUMBER, issuerSerialNumber);
-    }
-
-    public byte[] getSubjectKeyIdentifier() {
-        return getFieldAsOctets(SUBJECT_KEY_IDENTIFIER);
-    }
-
-    public void setSubjectKeyIdentifier(byte[] subjectKeyIdentifier) {
-        setFieldAsOctets(SUBJECT_KEY_IDENTIFIER, subjectKeyIdentifier);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java
deleted file mode 100644
index 8bfe151..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java
+++ /dev/null
@@ -1,66 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- KDCDHKeyInfo ::= SEQUENCE {
-    subjectPublicKey        [0] BIT STRING,
-    nonce                   [1] INTEGER (0..4294967295),
-    dhKeyExpiration         [2] KerberosTime OPTIONAL,
- }
- */
-public class KdcDHKeyInfo extends KrbSequenceType {
-    private static final int SUBJECT_PUBLICK_KEY = 0;
-    private static final int NONCE = 1;
-    private static final int DH_KEY_EXPIRATION = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(SUBJECT_PUBLICK_KEY, Asn1BitString.class),
-            new ExplicitField(NONCE, Asn1Integer.class),
-            new ExplicitField(DH_KEY_EXPIRATION, KerberosTime.class)
-    };
-
-    public KdcDHKeyInfo() {
-        super(fieldInfos);
-    }
-
-    public byte[] getSubjectPublicKey() {
-        return getFieldAsOctets(SUBJECT_PUBLICK_KEY);
-    }
-
-    public void setSubjectPublicKey(byte[] subjectPublicKey) {
-        setFieldAsOctets(SUBJECT_PUBLICK_KEY, subjectPublicKey);
-    }
-
-    public int getNonce() {
-        return getFieldAsInt(NONCE);
-    }
-
-    public void setNonce(int nonce) {
-        setFieldAsInt(NONCE, nonce);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java
deleted file mode 100644
index 816776b..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java
+++ /dev/null
@@ -1,62 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.base.Realm;
-
-/**
- KRB5PrincipalName ::= SEQUENCE {
-     realm                   [0] Realm,
-     principalName           [1] PrincipalName
- }
- */
-public class Krb5PrincipalName extends KrbSequenceType {
-    private static final int REALM = 0;
-    private static final int PRINCIPAL_NAME = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(REALM, Realm.class),
-            new ExplicitField(PRINCIPAL_NAME, PrincipalName.class)
-    };
-
-    public Krb5PrincipalName() {
-        super(fieldInfos);
-    }
-
-    public String getRelm() {
-        return getFieldAsString(REALM);
-    }
-
-    public void setRealm(String realm) {
-        setFieldAsString(REALM, realm);
-    }
-
-    public PrincipalName getPrincipalName() {
-        return getFieldAs(PRINCIPAL_NAME, PrincipalName.class);
-    }
-
-    public void setPrincipalName(PrincipalName principalName) {
-        setFieldAs(PRINCIPAL_NAME, principalName);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java
deleted file mode 100644
index dc2bbc8..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java
+++ /dev/null
@@ -1,62 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.asn1.ImplicitField;
-
-/**
- PA-PK-AS-REP ::= CHOICE {
-    dhInfo                  [0] DHRepInfo,
-    encKeyPack              [1] IMPLICIT OCTET STRING,
- }
- */
-public class PaPkAsRep extends Asn1Choice {
-    private static final int DH_INFO = 0;
-    private static final int ENCKEY_PACK = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(DH_INFO, DHRepInfo.class),
-            new ImplicitField(ENCKEY_PACK, Asn1OctetString.class)
-    };
-
-    public PaPkAsRep() {
-        super(fieldInfos);
-    }
-
-    public DHRepInfo getDHRepInfo() {
-        return getFieldAs(DH_INFO, DHRepInfo.class);
-    }
-
-    public void setDHRepInfo(DHRepInfo dhRepInfo) {
-        setFieldAs(DH_INFO, dhRepInfo);
-    }
-
-    public byte[] getEncKeyPack() {
-        return getFieldAsOctets(ENCKEY_PACK);
-    }
-
-    public void setEncKeyPack(byte[] encKeyPack) {
-        setFieldAsOctets(ENCKEY_PACK, encKeyPack);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java
deleted file mode 100644
index 2c21cc2..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java
+++ /dev/null
@@ -1,73 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.asn1.ImplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- PA-PK-AS-REQ ::= SEQUENCE {
-     signedAuthPack          [0] IMPLICIT OCTET STRING,
-     trustedCertifiers       [1] SEQUENCE OF ExternalPrincipalIdentifier OPTIONAL,
-     kdcPkId                 [2] IMPLICIT OCTET STRING OPTIONAL
- }
- */
-public class PaPkAsReq extends KrbSequenceType {
-    private static final int SIGNED_AUTH_PACK = 0;
-    private static final int TRUSTED_CERTIFIERS = 1;
-    private static final int KDC_PKID = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ImplicitField(SIGNED_AUTH_PACK, Asn1OctetString.class),
-            new ExplicitField(TRUSTED_CERTIFIERS, TrustedCertifiers.class),
-            new ImplicitField(KDC_PKID, Asn1OctetString.class)
-    };
-
-    public PaPkAsReq() {
-        super(fieldInfos);
-    }
-
-    public byte[] getSignedAuthPack() {
-        return getFieldAsOctets(SIGNED_AUTH_PACK);
-    }
-
-    public void setSignedAuthPack(byte[] signedAuthPack) {
-        setFieldAsOctets(SIGNED_AUTH_PACK, signedAuthPack);
-    }
-
-    public TrustedCertifiers getTrustedCertifiers() {
-        return getFieldAs(TRUSTED_CERTIFIERS, TrustedCertifiers.class);
-    }
-
-    public void setTrustedCertifiers(TrustedCertifiers trustedCertifiers) {
-        setFieldAs(TRUSTED_CERTIFIERS, trustedCertifiers);
-    }
-
-    public byte[] getKdcPkId() {
-        return getFieldAsOctets(KDC_PKID);
-    }
-
-    public void setKdcPkId(byte[] kdcPkId) {
-        setFieldAsOctets(KDC_PKID, kdcPkId);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java
deleted file mode 100644
index 91451c7..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java
+++ /dev/null
@@ -1,92 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- PKAuthenticator ::= SEQUENCE {
-     cusec                   [0] INTEGER (0..999999),
-     ctime                   [1] KerberosTime,
-     -- cusec and ctime are used as in [RFC4120], for
-     -- replay prevention.
-     nonce                   [2] INTEGER (0..4294967295),
-     -- Chosen randomly; this nonce does not need to
-     -- match with the nonce in the KDC-REQ-BODY.
-     paChecksum              [3] OCTET STRING OPTIONAL,
-     -- MUST be present.
-     -- Contains the SHA1 checksum, performed over
-     -- KDC-REQ-BODY.
- }
- */
-public class PkAuthenticator extends KrbSequenceType {
-    private static final int CUSEC = 0;
-    private static final int CTIME = 1;
-    private static final int NONCE = 2;
-    private static final int PA_CHECKSUM = 3;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(CUSEC, Asn1Integer.class),
-            new ExplicitField(CTIME, KerberosTime.class),
-            new ExplicitField(NONCE, Asn1Integer.class),
-            new ExplicitField(PA_CHECKSUM, Asn1OctetString.class)
-    };
-
-    public PkAuthenticator() {
-        super(fieldInfos);
-    }
-
-    public int getCusec() {
-        return getFieldAsInt(CUSEC);
-    }
-
-    public void setCusec(int cusec) {
-        setFieldAsInt(CUSEC, cusec);
-    }
-
-    public KerberosTime getCtime() {
-        return getFieldAsTime(CTIME);
-    }
-
-    public void setCtime(KerberosTime ctime) {
-        setFieldAs(CTIME, ctime);
-    }
-
-    public int getNonce() {
-        return getFieldAsInt(NONCE);
-    }
-
-    public void setNonce(int nonce) {
-        setFieldAsInt(NONCE, nonce);
-    }
-
-    public byte[] getPaChecksum() {
-        return getFieldAsOctets(PA_CHECKSUM);
-    }
-
-    public void setPaChecksum(byte[] paChecksum) {
-        setFieldAsOctets(PA_CHECKSUM, paChecksum);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java
deleted file mode 100644
index 6bf77fe..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java
+++ /dev/null
@@ -1,62 +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.spec.pa.pkinit;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-
-/**
- ReplyKeyPack ::= SEQUENCE {
-    replyKey                [0] EncryptionKey,
-    asChecksum              [1] Checksum,
- }
- */
-public class ReplyKeyPack extends KrbSequenceType {
-    private static final int REPLY_KEY = 0;
-    private static final int AS_CHECKSUM = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(REPLY_KEY, EncryptionKey.class),
-            new ExplicitField(AS_CHECKSUM, CheckSum.class)
-    };
-
-    public ReplyKeyPack() {
-        super(fieldInfos);
-    }
-
-    public EncryptionKey getReplyKey() {
-        return getFieldAs(REPLY_KEY, EncryptionKey.class);
-    }
-
-    public void setReplyKey(EncryptionKey replyKey) {
-        setFieldAs(REPLY_KEY, replyKey);
-    }
-
-    public CheckSum getAsChecksum() {
-        return getFieldAs(AS_CHECKSUM, CheckSum.class);
-    }
-
-    public void setAsChecksum(CheckSum checkSum) {
-        setFieldAs(AS_CHECKSUM, checkSum);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/TdDhParameters.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/TdDhParameters.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/TdDhParameters.java
deleted file mode 100644
index 77e82b1..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/TdDhParameters.java
+++ /dev/null
@@ -1,26 +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.spec.pa.pkinit;
-
-/**
- * TD-DH-PARAMETERS ::= SEQUENCE OF AlgorithmIdentifier
- */
-public class TdDhParameters extends AlgorithmIdentifiers {
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/TrustedCertifiers.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/TrustedCertifiers.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/TrustedCertifiers.java
deleted file mode 100644
index 418b213..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/TrustedCertifiers.java
+++ /dev/null
@@ -1,29 +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.spec.pa.pkinit;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- trustedCertifiers       SEQUENCE OF ExternalPrincipalIdentifier OPTIONAL,
- */
-public class TrustedCertifiers extends KrbSequenceOfType<ExternalPrincipalIdentifier> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java
deleted file mode 100644
index 45b8aff..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java
+++ /dev/null
@@ -1,41 +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.spec.pa.token;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- PA-TOKEN-CHALLENGE ::= SEQUENCE {
-    tokenInfos       [0] SEQUENCE (SIZE(1..MAX)) OF TokenInfo,
- }
-*/
-public class PaTokenChallenge extends KrbSequenceType {
-    private static final int TOKENINFOS = 0;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(TOKENINFOS, TokenInfos.class)
-    };
-
-    public PaTokenChallenge() {
-        super(fieldInfos);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java
deleted file mode 100644
index b8a62b5..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java
+++ /dev/null
@@ -1,62 +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.spec.pa.token;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbToken;
-
-/**
- PA-TOKEN-REQUEST ::= SEQUENCE {
-    token          [0]  OCTET STRING,
-    tokenInfo      [1]  TokenInfo
- }
-*/
-public class PaTokenRequest extends KrbSequenceType {
-    private static final int TOKEN_INFO = 0;
-    private static final int TOKEN = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(TOKEN_INFO, TokenInfo.class),
-            new ExplicitField(TOKEN, KrbToken.class)
-    };
-
-    public PaTokenRequest() {
-        super(fieldInfos);
-    }
-
-    public KrbToken getToken() {
-        return getFieldAs(TOKEN, KrbToken.class);
-    }
-
-    public void setToken(KrbToken token) {
-        setFieldAs(TOKEN, token);
-    }
-
-    public TokenInfo getTokenInfo() {
-        return getFieldAs(TOKEN_INFO, TokenInfo.class);
-    }
-
-    public void setTokenInfo(TokenInfo tokenInfo) {
-        setFieldAs(TOKEN_INFO, tokenInfo);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenFlag.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenFlag.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenFlag.java
deleted file mode 100644
index 512cda2..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenFlag.java
+++ /dev/null
@@ -1,51 +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.spec.pa.token;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum TokenFlag implements Asn1EnumType {
-    NONE(-1),
-    ID_TOKEN_REQUIRED(0x40000000),
-    AC_TOKEN_REQUIRED(0x20000000),
-    BEARER_TOKEN_REQUIRED(0x10000000),
-    HOK_TOKEN_REQUIRED(0x08000000);
-
-    private final int value;
-
-    private TokenFlag(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static TokenFlag fromValue(int value) {
-        for (Asn1EnumType e : values()) {
-            if (e.getValue() == value) {
-                return (TokenFlag) e;
-            }
-        }
-
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenFlags.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenFlags.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenFlags.java
deleted file mode 100644
index 026c054..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenFlags.java
+++ /dev/null
@@ -1,39 +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.spec.pa.token;
-
-import org.apache.kerby.asn1.type.Asn1Flags;
-
-import static org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlag.INVALID;
-
-public class TokenFlags extends Asn1Flags {
-
-    public TokenFlags() {
-        this(0);
-    }
-
-    public TokenFlags(int value) {
-        setFlags(value);
-    }
-
-    public boolean isInvalid() {
-        return isFlagSet(INVALID.getValue());
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.java
deleted file mode 100644
index 6d2c631..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.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.spec.pa.token;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.Asn1Utf8String;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- TokenInfo ::= SEQUENCE {
-    flags            [0] TokenFlags,
-    tokenVendor      [1] UTF8String,
- }
- */
-public class TokenInfo extends KrbSequenceType {
-    private static final int FLAGS = 0;
-    private static final int TOKEN_VENDOR = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(FLAGS, Asn1OctetString.class),
-            new ExplicitField(TOKEN_VENDOR, Asn1Utf8String.class),
-    };
-
-    public TokenInfo() {
-        super(fieldInfos);
-    }
-
-    public TokenFlags getFlags() {
-        return getFieldAs(FLAGS, TokenFlags.class);
-    }
-
-    public void setFlags(TokenFlags flags) {
-        setFieldAs(FLAGS, flags);
-    }
-
-    public String getTokenVendor() {
-        return getFieldAsString(TOKEN_VENDOR);
-    }
-
-    public void setTokenVendor(String tokenVendor) {
-        setFieldAs(TOKEN_VENDOR, new Asn1Utf8String(tokenVendor));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfos.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfos.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfos.java
deleted file mode 100644
index 85d6e58..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfos.java
+++ /dev/null
@@ -1,29 +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.spec.pa.token;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- SEQUENCE (SIZE(1..MAX)) OF TokenInfo,
-*/
-public class TokenInfos extends KrbSequenceOfType<TokenInfo> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java
deleted file mode 100644
index f44a71e..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java
+++ /dev/null
@@ -1,169 +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.spec.ticket;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.base.TransitedEncoding;
-
-/**
- -- Encrypted part of ticket
- EncTicketPart   ::= [APPLICATION 3] SEQUENCE {
- flags                   [0] TicketFlags,
- key                     [1] EncryptionKey,
- crealm                  [2] Realm,
- cname                   [3] PrincipalName,
- transited               [4] TransitedEncoding,
- authtime                [5] KerberosTime,
- starttime               [6] KerberosTime OPTIONAL,
- endtime                 [7] KerberosTime,
- renew-till              [8] KerberosTime OPTIONAL,
- caddr                   [9] HostAddresses OPTIONAL,
- authorization-data      [10] AuthorizationData OPTIONAL
- }
- */
-public class EncTicketPart extends KrbAppSequenceType {
-    public static final int TAG = 3;
-
-    private static final int FLAGS = 0;
-    private static final int KEY = 1;
-    private static final int CREALM = 2;
-    private static final int CNAME = 3;
-    private static final int TRANSITED = 4;
-    private static final int AUTHTIME = 5;
-    private static final int STARTTIME = 6;
-    private static final int ENDTIME = 7;
-    private static final int RENEW_TILL = 8;
-    private static final int CADDR = 9;
-    private static final int AUTHORIZATION_DATA = 10;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(FLAGS, 0, TicketFlags.class),
-            new ExplicitField(KEY, 1, EncryptionKey.class),
-            new ExplicitField(CREALM, 2, KerberosString.class),
-            new ExplicitField(CNAME, 3, PrincipalName.class),
-            new ExplicitField(TRANSITED, 4, TransitedEncoding.class),
-            new ExplicitField(AUTHTIME, 5, KerberosTime.class),
-            new ExplicitField(STARTTIME, 6, KerberosTime.class),
-            new ExplicitField(ENDTIME, 7, KerberosTime.class),
-            new ExplicitField(ENDTIME, 8, KerberosTime.class),
-            new ExplicitField(CADDR, 9, HostAddresses.class),
-            new ExplicitField(AUTHORIZATION_DATA, 10, AuthorizationData.class)
-    };
-
-    public EncTicketPart() {
-        super(TAG, fieldInfos);
-    }
-
-    public TicketFlags getFlags() {
-        return getFieldAs(FLAGS, TicketFlags.class);
-    }
-
-    public void setFlags(TicketFlags flags) {
-        setFieldAs(FLAGS, flags);
-    }
-
-    public EncryptionKey getKey() {
-        return getFieldAs(KEY, EncryptionKey.class);
-    }
-
-    public void setKey(EncryptionKey key) {
-        setFieldAs(KEY, key);
-    }
-
-    public String getCrealm() {
-        return getFieldAsString(CREALM);
-    }
-
-    public void setCrealm(String crealm) {
-        setFieldAsString(CREALM, crealm);
-    }
-
-    public PrincipalName getCname() {
-        return getFieldAs(CNAME, PrincipalName.class);
-    }
-
-    public void setCname(PrincipalName cname) {
-        setFieldAs(CNAME, cname);
-    }
-
-    public TransitedEncoding getTransited() {
-        return getFieldAs(TRANSITED, TransitedEncoding.class);
-    }
-
-    public void setTransited(TransitedEncoding transited) {
-        setFieldAs(TRANSITED, transited);
-    }
-
-    public KerberosTime getAuthTime() {
-        return getFieldAs(AUTHTIME, KerberosTime.class);
-    }
-
-    public void setAuthTime(KerberosTime authTime) {
-        setFieldAs(AUTHTIME, authTime);
-    }
-
-    public KerberosTime getStartTime() {
-        return getFieldAs(STARTTIME, KerberosTime.class);
-    }
-
-    public void setStartTime(KerberosTime startTime) {
-        setFieldAs(STARTTIME, startTime);
-    }
-
-    public KerberosTime getEndTime() {
-        return getFieldAs(ENDTIME, KerberosTime.class);
-    }
-
-    public void setEndTime(KerberosTime endTime) {
-        setFieldAs(ENDTIME, endTime);
-    }
-
-    public KerberosTime getRenewtill() {
-        return getFieldAs(RENEW_TILL, KerberosTime.class);
-    }
-
-    public void setRenewtill(KerberosTime renewtill) {
-        setFieldAs(RENEW_TILL, renewtill);
-    }
-
-    public HostAddresses getClientAddresses() {
-        return getFieldAs(CADDR, HostAddresses.class);
-    }
-
-    public void setClientAddresses(HostAddresses clientAddresses) {
-        setFieldAs(CADDR, clientAddresses);
-    }
-
-    public AuthorizationData getAuthorizationData() {
-        return getFieldAs(AUTHORIZATION_DATA, AuthorizationData.class);
-    }
-
-    public void setAuthorizationData(AuthorizationData authorizationData) {
-        setFieldAs(AUTHORIZATION_DATA, authorizationData);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/KrbTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/KrbTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/KrbTicket.java
deleted file mode 100644
index 1aae717..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/KrbTicket.java
+++ /dev/null
@@ -1,49 +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.spec.ticket;
-
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncKdcRepPart;
-
-public class KrbTicket {
-    private Ticket ticket;
-    private EncKdcRepPart encKdcRepPart;
-
-    public KrbTicket(Ticket ticket, EncKdcRepPart encKdcRepPart) {
-        this.ticket = ticket;
-        this.encKdcRepPart = encKdcRepPart;
-    }
-
-    public Ticket getTicket() {
-        return ticket;
-    }
-
-    public EncKdcRepPart getEncKdcRepPart() {
-        return encKdcRepPart;
-    }
-
-    public EncryptionKey getSessionKey() {
-        return encKdcRepPart.getKey();
-    }
-
-    public String getRealm() {
-        return ticket.getRealm();
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/SgtTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/SgtTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/SgtTicket.java
deleted file mode 100644
index 04068c6..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/SgtTicket.java
+++ /dev/null
@@ -1,31 +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.spec.ticket;
-
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncTgsRepPart;
-
-/**
- * Service granting ticket.
- */
-public class SgtTicket extends KrbTicket {
-    public SgtTicket(Ticket ticket, EncTgsRepPart encKdcRepPart) {
-        super(ticket, encKdcRepPart);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java
deleted file mode 100644
index 23df8d9..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java
+++ /dev/null
@@ -1,39 +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.spec.ticket;
-
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncAsRepPart;
-
-/**
- * Ticket granting ticket.
- */
-public class TgtTicket extends KrbTicket {
-    private PrincipalName clientPrincipal;
-
-    public TgtTicket(Ticket ticket, EncAsRepPart encKdcRepPart, String clientPrincipal) {
-        super(ticket, encKdcRepPart);
-        this.clientPrincipal = new PrincipalName(clientPrincipal);
-    }
-
-    public PrincipalName getClientPrincipal() {
-        return clientPrincipal;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java
deleted file mode 100644
index de6ca31..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java
+++ /dev/null
@@ -1,100 +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.spec.ticket;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.KrbConstant;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-
-/**
- Ticket          ::= [APPLICATION 1] SEQUENCE {
- tkt-vno         [0] INTEGER (5),
- realm           [1] Realm,
- sname           [2] PrincipalName,
- enc-part        [3] EncryptedData -- EncTicketPart
- }
- */
-public class Ticket extends KrbAppSequenceType {
-    public static final int TKT_KVNO = KrbConstant.KRB_V5;
-    public static final int TAG = 1;
-
-    private static final int TKT_VNO = 0;
-    private static final int REALM = 1;
-    private static final int SNAME = 2;
-    private static final int ENC_PART = 3;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(TKT_VNO, 0, Asn1Integer.class),
-            new ExplicitField(REALM, 1, KerberosString.class),
-            new ExplicitField(SNAME, 2, PrincipalName.class),
-            new ExplicitField(ENC_PART, 3, EncryptedData.class)
-    };
-
-    public Ticket() {
-        super(TAG, fieldInfos);
-        setTktKvno(TKT_KVNO);
-    }
-
-    private EncTicketPart encPart;
-
-    public int getTktvno() {
-        return getFieldAsInt(TKT_VNO);
-    }
-
-    public void setTktKvno(int kvno) {
-        setFieldAsInt(TKT_VNO, kvno);
-    }
-    public PrincipalName getSname() {
-        return getFieldAs(SNAME, PrincipalName.class);
-    }
-
-    public void setSname(PrincipalName sname) {
-        setFieldAs(SNAME, sname);
-    }
-
-    public String getRealm() {
-        return getFieldAsString(REALM);
-    }
-
-    public void setRealm(String realm) {
-        setFieldAs(REALM, new KerberosString(realm));
-    }
-
-    public EncryptedData getEncryptedEncPart() {
-        return getFieldAs(ENC_PART, EncryptedData.class);
-    }
-
-    public void setEncryptedEncPart(EncryptedData encryptedEncPart) {
-        setFieldAs(ENC_PART, encryptedEncPart);
-    }
-
-    public EncTicketPart getEncPart() {
-        return encPart;
-    }
-
-    public void setEncPart(EncTicketPart encPart) {
-        this.encPart = encPart;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TicketFlag.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TicketFlag.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TicketFlag.java
deleted file mode 100644
index ef53cee..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TicketFlag.java
+++ /dev/null
@@ -1,62 +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.spec.ticket;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum TicketFlag implements Asn1EnumType {
-    NONE(-1),
-    FORWARDABLE(0x40000000),
-    FORWARDED(0x20000000),
-    PROXIABLE(0x10000000),
-    PROXY(0x08000000),
-    MAY_POSTDATE(0x04000000),
-    POSTDATED(0x02000000),
-    INVALID(0x01000000),
-    RENEWABLE(0x00800000),
-    INITIAL(0x00400000),
-    PRE_AUTH(0x00200000),
-    HW_AUTH(0x00100000),
-    TRANSIT_POLICY_CHECKED(0x00080000),
-    OK_AS_DELEGATE(0x00040000),
-    ENC_PA_REP(0x00010000),
-    ANONYMOUS(0x00008000);
-
-    private final int value;
-
-    private TicketFlag(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static TicketFlag fromValue(int value) {
-        for (Asn1EnumType e : values()) {
-            if (e.getValue() == value) {
-                return (TicketFlag) e;
-            }
-        }
-
-        return NONE;
-    }
-}


[07/19] directory-kerby git commit: More refactoring using SGT

Posted by pl...@apache.org.
More refactoring using SGT


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

Branch: refs/heads/pkinit-support
Commit: 1d41d3a23f77e336c6518df81965a26607efe853
Parents: 5372621
Author: Kai Zheng <ka...@intel.com>
Authored: Sun Nov 29 07:48:29 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sun Nov 29 07:48:29 2015 +0800

----------------------------------------------------------------------
 .../kerb/client/impl/AbstractInternalKrbClient.java     | 12 ++++++------
 .../kerb/client/impl/DefaultInternalKrbClient.java      |  6 +++---
 .../kerby/kerberos/kerb/client/request/TgsRequest.java  |  2 +-
 3 files changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d41d3a2/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
index 9555a8b..d27609b 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
@@ -110,7 +110,7 @@ public abstract class AbstractInternalKrbClient implements InternalKrbClient {
 
         asRequest.setKrbOptions(requestOptions);
 
-        return doRequestTgtTicket(asRequest);
+        return doRequestTgt(asRequest);
     }
 
     /**
@@ -136,14 +136,14 @@ public abstract class AbstractInternalKrbClient implements InternalKrbClient {
         tgsRequest.setServerPrincipal(new PrincipalName(serverPrincipal));
         tgsRequest.setKrbOptions(requestOptions);
 
-        return doRequestServiceTicket(tgsRequest);
+        return doRequestSgt(tgsRequest);
     }
 
-    protected abstract TgtTicket doRequestTgtTicket(
-            AsRequest tgtTktReq) throws KrbException;
+    protected abstract TgtTicket doRequestTgt(
+        AsRequest tgtTktReq) throws KrbException;
 
-    protected abstract SgtTicket doRequestServiceTicket(
-            TgsRequest tgsRequest) throws KrbException;
+    protected abstract SgtTicket doRequestSgt(
+        TgsRequest tgsRequest) throws KrbException;
 
     /**
      * Fix principal name.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d41d3a2/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
index b8a7775..26943c6 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
@@ -68,7 +68,7 @@ public class DefaultInternalKrbClient extends AbstractInternalKrbClient {
      * {@inheritDoc}
      */
     @Override
-    protected TgtTicket doRequestTgtTicket(AsRequest tgtTktReq) throws KrbException {
+    protected TgtTicket doRequestTgt(AsRequest tgtTktReq) throws KrbException {
         tgtTktReq.setSessionData(transport);
 
         krbHandler.handleRequest(tgtTktReq);
@@ -80,12 +80,12 @@ public class DefaultInternalKrbClient extends AbstractInternalKrbClient {
      * {@inheritDoc}
      */
     @Override
-    protected SgtTicket doRequestServiceTicket(TgsRequest ticketReq) throws KrbException {
+    protected SgtTicket doRequestSgt(TgsRequest ticketReq) throws KrbException {
         ticketReq.setSessionData(transport);
 
         krbHandler.handleRequest(ticketReq);
 
-        return ticketReq.getServiceTicket();
+        return ticketReq.getSgt();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d41d3a2/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
index 5a813e9..e635a98 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
@@ -91,7 +91,7 @@ public class TgsRequest extends KdcRequest {
         }
     }
 
-    public SgtTicket getServiceTicket() {
+    public SgtTicket getSgt() {
         SgtTicket serviceTkt = new SgtTicket(getKdcRep().getTicket(),
                 (EncTgsRepPart) getKdcRep().getEncPart());
         return serviceTkt;


[11/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddrType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddrType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddrType.java
new file mode 100644
index 0000000..b148bf6
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddrType.java
@@ -0,0 +1,100 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum HostAddrType implements Asn1EnumType {
+    /**
+     * Constant for the "null" host address type.
+     */
+    NULL(0),
+
+    /**
+     * Constant for the "Internet" host address type.
+     */
+    ADDRTYPE_INET(2),
+
+    /**
+     * Constant for the "Arpanet" host address type.
+     */
+    ADDRTYPE_IMPLINK(3),
+
+    /**
+     * Constant for the "CHAOS" host address type.
+     */
+    ADDRTYPE_CHAOS(5),
+
+    /**
+     * Constant for the "XEROX Network Services" host address type.
+     */
+    ADDRTYPE_XNS(6),
+
+    /**
+     * Constant for the "OSI" host address type.
+     */
+    ADDRTYPE_OSI(7),
+
+    /**
+     * Constant for the "DECnet" host address type.
+     */
+    ADDRTYPE_DECNET(12),
+
+    /**
+     * Constant for the "AppleTalk" host address type.
+     */
+    ADDRTYPE_APPLETALK(16),
+
+    /**
+     * Constant for the "NetBios" host address type.
+     *
+     * Not in RFC
+     */
+    ADDRTYPE_NETBIOS(20),
+
+    /**
+     * Constant for the "Internet Protocol V6" host address type.
+     */
+    ADDRTYPE_INET6(24);
+
+
+    private final int value;
+
+    private HostAddrType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static HostAddrType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value.intValue()) {
+                    return (HostAddrType) e;
+                }
+            }
+        }
+
+        return NULL;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddress.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddress.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddress.java
new file mode 100644
index 0000000..948bcc4
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddress.java
@@ -0,0 +1,110 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+import java.net.InetAddress;
+import java.util.Arrays;
+
+/*
+HostAddress     ::= SEQUENCE  {
+        addr-type       [0] Int32,
+        address         [1] OCTET STRING
+}
+ */
+public class HostAddress extends KrbSequenceType {
+    private static final int ADDR_TYPE = 0;
+    private static final int ADDRESS = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ADDR_TYPE, 0, Asn1Integer.class),
+            new ExplicitField(ADDRESS, 1, Asn1OctetString.class)
+    };
+
+    public HostAddress() {
+        super(fieldInfos);
+    }
+
+    public HostAddress(InetAddress inetAddress) {
+        this();
+
+        setAddrType(HostAddrType.ADDRTYPE_INET);
+        setAddress(inetAddress.getAddress());
+    }
+
+    public HostAddrType getAddrType() {
+        Integer value = getFieldAsInteger(ADDR_TYPE);
+        return HostAddrType.fromValue(value);
+    }
+
+    public void setAddrType(HostAddrType addrType) {
+        setField(ADDR_TYPE, addrType);
+    }
+
+    public byte[] getAddress() {
+        return getFieldAsOctets(ADDRESS);
+    }
+
+    public void setAddress(byte[] address) {
+        setFieldAsOctets(ADDRESS, address);
+    }
+
+    public boolean equalsWith(InetAddress address) {
+        if (address == null) {
+            return false;
+        }
+        HostAddress that = new HostAddress(address);
+        return that.equals(this);
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == null) {
+            return false;
+        }
+        if (other == this) {
+            return true;
+        } else if (!(other instanceof HostAddress)) {
+            return false;
+        }
+
+        HostAddress that = (HostAddress) other;
+        if (getAddrType() == that.getAddrType()
+                && Arrays.equals(getAddress(), that.getAddress())) {
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getAddrType().getValue();
+        if (getAddress() != null) {
+            result = 31 * result + Arrays.hashCode(getAddress());
+        }
+
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddresses.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddresses.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddresses.java
new file mode 100644
index 0000000..21edb15
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/HostAddresses.java
@@ -0,0 +1,43 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+import java.net.InetAddress;
+
+/**
+ -- NOTE: HostAddresses is always used as an OPTIONAL field and
+ -- should not be empty.
+ HostAddresses   -- NOTE: subtly different from rfc1510,
+ -- but has a value mapping and encodes the same
+ ::= SEQUENCE OF HostAddress
+ */
+public class HostAddresses extends KrbSequenceOfType<HostAddress> {
+
+    public boolean contains(InetAddress address) {
+        for (HostAddress hostAddress : getElements()) {
+            if (hostAddress.equalsWith(address)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KeyUsage.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KeyUsage.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KeyUsage.java
new file mode 100644
index 0000000..055977c
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KeyUsage.java
@@ -0,0 +1,129 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+/**
+ * From krb5.hin
+ */
+public enum KeyUsage implements Asn1EnumType {
+    UNKNOWN(-1),
+    NONE(0),
+    //AS-REQ PA-ENC-TIMESTAMP padata timestamp, encrypted with the client key
+    AS_REQ_PA_ENC_TS(1),
+    //AS-REP Ticket and TGS-REP Ticket (includes TGS session key or application session key),
+    //encrypted with the service key (Section 5.3)
+    KDC_REP_TICKET(2),
+    //AS-REP encrypted part (includes TGS session key or application session key),
+    //encrypted with the client key (Section 5.4.2)
+    AS_REP_ENCPART(3),
+    //TGS-REQ KDC-REQ-BODY AuthorizationData,
+    //encrypted with the TGS session key (Section 5.4.1)
+    TGS_REQ_AD_SESSKEY(4),
+    //TGS-REQ KDC-REQ-BODY AuthorizationData,
+    //encrypted with the TGS authenticator subkey (Section 5.4.1)
+    TGS_REQ_AD_SUBKEY(5),
+    //TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator cksum,
+    //keyed with the TGS session key (Section 5.5.1)
+    TGS_REQ_AUTH_CKSUM(6),
+    //TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator (includes TGS authenticator subkey),
+    //encrypted with the TGS session key (Section 5.5.1)
+    TGS_REQ_AUTH(7),
+    //TGS-REP encrypted part (includes application session key),
+    //encrypted with the TGS session key (Section 5.4.2)
+    TGS_REP_ENCPART_SESSKEY(8),
+    //TGS-REP encrypted part (includes application session key),
+    //encrypted with the TGS authenticator subkey (Section 5.4.2)
+    TGS_REP_ENCPART_SUBKEY(9),
+    //AP-REQ Authenticator cksum, keyed with the application session key (Section 5.5.1)
+    AP_REQ_AUTH_CKSUM(10),
+    //AP-REQ Authenticator (includes application authenticator subkey),
+    //encrypted with the application session key (Section 5.5.1)
+    AP_REQ_AUTH(11),
+    //AP-REP encrypted part (includes application session subkey),
+    //encrypted with the application session key (Section 5.5.2)
+    AP_REP_ENCPART(12),
+    //KRB-PRIV encrypted part, encrypted with a key chosen by the application (Section 5.7.1)
+    KRB_PRIV_ENCPART(13),
+    KRB_CRED_ENCPART(14),
+    KRB_SAFE_CKSUM(15),
+    APP_DATA_ENCRYPT(16),
+    APP_DATA_CKSUM(17),
+    KRB_ERROR_CKSUM(18),
+    AD_KDCISSUED_CKSUM(19),
+    AD_MTE(20),
+    AD_ITE(21),
+    GSS_TOK_MIC(22),
+    GSS_TOK_WRAP_INTEG(23),
+    GSS_TOK_WRAP_PRIV(24),
+    //Defined in Integrating SAM Mechanisms with Kerberos draft
+    PA_SAM_CHALLENGE_CKSUM(25),
+    //Note conflict with @ref PA_S4U_X509_USER_REQUEST
+    PA_SAM_CHALLENGE_TRACKID(26),
+    //Note conflict with @ref PA_S4U_X509_USER_REPLY
+    PA_SAM_RESPONSE(27),
+    //Defined in [MS-SFU]
+    //Note conflict with @ref PA_SAM_CHALLENGE_TRACKID
+    PA_S4U_X509_USER_REQUEST(26),
+    //Note conflict with @ref PA_SAM_RESPONSE
+    PA_S4U_X509_USER_REPLY(27),
+    //unused
+    PA_REFERRAL(26),
+    AD_SIGNEDPATH(-21),
+    IAKERB_FINISHED(42),
+    PA_PKINIT_KX(44),
+    PA_OTP_REQUEST(45),  //See RFC 6560 section 4.2
+    //define in preauth-framework
+    FAST_REQ_CHKSUM(50),
+    FAST_ENC(51),
+    FAST_REP(52),
+    FAST_FINISHED(53),
+    ENC_CHALLENGE_CLIENT(54),
+    ENC_CHALLENGE_KDC(55),
+    AS_REQ(56),
+    //PA-TOKEN padata,encrypted with the client key
+    PA_TOKEN(57);
+
+    private int value;
+
+    private KeyUsage(int value) {
+        this.value = value;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static KeyUsage fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value) {
+                    return (KeyUsage) e;
+                }
+            }
+        }
+        return UNKNOWN;
+    }
+
+    public static final boolean isValid(int usage) {
+        return usage > -1;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbError.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbError.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbError.java
new file mode 100644
index 0000000..73b3e01
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbError.java
@@ -0,0 +1,167 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.KrbErrorCode;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+
+/**
+ KRB-ERROR       ::= [APPLICATION 30] SEQUENCE {
+     pvno            [0] INTEGER (5),
+     msg-type        [1] INTEGER (30),
+     ctime           [2] KerberosTime OPTIONAL,
+     cusec           [3] Microseconds OPTIONAL,
+     stime           [4] KerberosTime,
+     susec           [5] Microseconds,
+     error-code      [6] Int32,
+     crealm          [7] Realm OPTIONAL,
+     cname           [8] PrincipalName OPTIONAL,
+     realm           [9] Realm -- service realm --,
+     sname           [10] PrincipalName -- service name --,
+     e-text          [11] KerberosString OPTIONAL,
+     e-data          [12] OCTET STRING OPTIONAL
+ }
+ */
+public class KrbError extends KrbMessage {
+    private static final int CTIME = 2;
+    private static final int CUSEC = 3;
+    private static final int STIME = 4;
+    private static final int SUSEC = 5;
+    private static final int ERROR_CODE = 6;
+    private static final int CREALM = 7;
+    private static final int CNAME = 8;
+    private static final int REALM = 9;
+    private static final int SNAME = 10;
+    private static final int ETEXT = 11;
+    private static final int EDATA = 12;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PVNO, Asn1Integer.class),
+            new ExplicitField(MSG_TYPE, Asn1Integer.class),
+            new ExplicitField(CTIME, KerberosTime.class),
+            new ExplicitField(CUSEC, Asn1Integer.class),
+            new ExplicitField(STIME, KerberosTime.class),
+            new ExplicitField(SUSEC, Asn1Integer.class),
+            new ExplicitField(ERROR_CODE, Asn1Integer.class),
+            new ExplicitField(CREALM, KerberosString.class),
+            new ExplicitField(CNAME, PrincipalName.class),
+            new ExplicitField(REALM, KerberosString.class),
+            new ExplicitField(SNAME, PrincipalName.class),
+            new ExplicitField(ETEXT, KerberosString.class),
+            new ExplicitField(EDATA, Asn1OctetString.class)
+    };
+
+    public KrbError() {
+        super(KrbMessageType.KRB_ERROR, fieldInfos);
+    }
+
+    public KerberosTime getCtime() {
+        return getFieldAs(CTIME, KerberosTime.class);
+    }
+
+    public void setCtime(KerberosTime ctime) {
+        setFieldAs(CTIME, ctime);
+    }
+
+    public int getCusec() {
+        return getFieldAsInt(CUSEC);
+    }
+
+    public void setCusec(int cusec) {
+        setFieldAsInt(CUSEC, cusec);
+    }
+
+    public KerberosTime getStime() {
+        return getFieldAs(STIME, KerberosTime.class);
+    }
+
+    public void setStime(KerberosTime stime) {
+        setFieldAs(STIME, stime);
+    }
+
+    public int getSusec() {
+        return getFieldAsInt(SUSEC);
+    }
+
+    public void setSusec(int susec) {
+        setFieldAsInt(SUSEC, susec);
+    }
+
+    public KrbErrorCode getErrorCode() {
+        return KrbErrorCode.fromValue(getFieldAsInt(ERROR_CODE));
+    }
+
+    public void setErrorCode(KrbErrorCode errorCode) {
+        setField(ERROR_CODE, errorCode);
+    }
+
+    public String getCrealm() {
+        return getFieldAsString(CREALM);
+    }
+
+    public void setCrealm(String realm) {
+        setFieldAs(CREALM, new KerberosString(realm));
+    }
+
+    public PrincipalName getCname() {
+        return getFieldAs(CNAME, PrincipalName.class);
+    }
+
+    public void setCname(PrincipalName sname) {
+        setFieldAs(CNAME, sname);
+    }
+
+    public PrincipalName getSname() {
+        return getFieldAs(SNAME, PrincipalName.class);
+    }
+
+    public void setSname(PrincipalName sname) {
+        setFieldAs(SNAME, sname);
+    }
+
+    public String getRealm() {
+        return getFieldAsString(REALM);
+    }
+
+    public void setRealm(String realm) {
+        setFieldAs(REALM, new KerberosString(realm));
+    }
+
+    public String getEtext() {
+        return getFieldAsString(ETEXT);
+    }
+
+    public void setEtext(String realm) {
+        setFieldAs(ETEXT, new KerberosString(realm));
+    }
+
+    public byte[] getEdata() {
+        return getFieldAsOctetBytes(EDATA);
+    }
+
+    public void setEdata(byte[] edata) {
+        setFieldAsOctetBytes(EDATA, edata);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbMessage.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbMessage.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbMessage.java
new file mode 100644
index 0000000..ffcccfb
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbMessage.java
@@ -0,0 +1,54 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.kerberos.kerb.KrbConstant;
+import org.apache.kerby.kerberos.kerb.type.KrbAppSequenceType;
+
+public abstract class KrbMessage extends KrbAppSequenceType {
+    protected static final int PVNO = 0;
+    protected static final int MSG_TYPE = 1;
+
+    private final int pvno = KrbConstant.KRB_V5;
+
+    public KrbMessage(KrbMessageType msgType, Asn1FieldInfo[] fieldInfos) {
+        super(msgType.getValue(), fieldInfos);
+        setPvno(pvno);
+        setMsgType(msgType);
+    }
+
+    public int getPvno() {
+        return pvno;
+    }
+
+    protected void setPvno(int pvno) {
+        setFieldAsInt(0, pvno);
+    }
+
+    public KrbMessageType getMsgType() {
+        Integer value = getFieldAsInteger(MSG_TYPE);
+        return KrbMessageType.fromValue(value);
+    }
+
+    public void setMsgType(KrbMessageType msgType) {
+        setFieldAsInt(MSG_TYPE, msgType.getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbMessageType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbMessageType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbMessageType.java
new file mode 100644
index 0000000..d483838
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbMessageType.java
@@ -0,0 +1,59 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum KrbMessageType implements Asn1EnumType {
+    NONE(-1),
+    AS_REQ(10),
+    AS_REP(11),
+    TGS_REQ(12),
+    TGS_REP(13),
+    AP_REQ(14),
+    AP_REP(15),
+    KRB_SAFE(20),
+    KRB_PRIV(21),
+    KRB_CRED(22),
+    KRB_ERROR(30);
+
+    private int value;
+
+    private KrbMessageType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static KrbMessageType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value.intValue()) {
+                    return (KrbMessageType) e;
+                }
+            }
+        }
+
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbToken.java
new file mode 100644
index 0000000..f5910ca
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/KrbToken.java
@@ -0,0 +1,335 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.KrbConstant;
+import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.KrbRuntime;
+import org.apache.kerby.kerberos.kerb.provider.TokenDecoder;
+import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * KRB-TOKEN_VALUE ::= SEQUENCE {
+ * token-format [0] INTEGER,
+ * token-value  [1] OCTET STRING,
+ * }
+ */
+public class KrbToken extends KrbSequenceType implements AuthToken {
+    private static TokenEncoder tokenEncoder;
+    private static TokenDecoder tokenDecoder;
+
+    private static final int TOKEN_FORMAT = 0;
+    private static final int TOKEN_VALUE = 1;
+
+    private AuthToken innerToken = null;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
+            new ExplicitField(TOKEN_FORMAT, 0, Asn1Integer.class),
+            new ExplicitField(TOKEN_VALUE, 1, Asn1OctetString.class)
+    };
+
+
+    /**
+     * Default constructor.
+     */
+    public KrbToken() {
+        super(fieldInfos);
+    }
+
+    /**
+     * Construct with prepared authToken and token format.
+     *
+     * @param authToken The authToken
+     * @param format    The token format
+     */
+    public KrbToken(AuthToken authToken, TokenFormat format) {
+        this();
+
+        this.innerToken = authToken;
+        setTokenType();
+        setTokenFormat(format);
+        try {
+            setTokenValue(getTokenEncoder().encodeAsBytes(innerToken));
+        } catch (KrbException e) {
+            throw new RuntimeException("Failed to encode AuthToken", e);
+        }
+    }
+
+    /**
+     * Get AuthToken.
+     *
+     * @return The inner token.
+     */
+    public AuthToken getAuthToken() {
+        return innerToken;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void decode(ByteBuffer content) throws IOException {
+        super.decode(content);
+        this.innerToken = getTokenDecoder().decodeFromBytes(getTokenValue());
+        setTokenType();
+    }
+
+    /**
+     * Set token type.
+     */
+    public void setTokenType() {
+        List<String> audiences = this.innerToken.getAudiences();
+        if (audiences.size() == 1 && audiences.get(0).startsWith(KrbConstant.TGS_PRINCIPAL)) {
+            isIdToken(true);
+        } else {
+            isAcToken(true);
+        }
+    }
+
+    /**
+     * Get token encoder.
+     * @return The token encoder
+     */
+    private static TokenEncoder getTokenEncoder() {
+        if (tokenEncoder == null) {
+            tokenEncoder = KrbRuntime.getTokenProvider().createTokenEncoder();
+        }
+        return tokenEncoder;
+    }
+
+    /**
+     * Get token decoder.
+     * @return The token decoder
+     */
+    private static TokenDecoder getTokenDecoder() {
+        if (tokenDecoder == null) {
+            tokenDecoder = KrbRuntime.getTokenProvider().createTokenDecoder();
+        }
+        return tokenDecoder;
+    }
+
+    /**
+     * Get token format.
+     * @return The token format
+     */
+    public TokenFormat getTokenFormat() {
+        Integer value = getFieldAsInteger(TOKEN_FORMAT);
+        return TokenFormat.fromValue(value);
+    }
+
+    /**
+     * Set token format.
+     * @param tokenFormat The token format
+     */
+    public void setTokenFormat(TokenFormat tokenFormat) {
+        setFieldAsInt(TOKEN_FORMAT, tokenFormat.getValue());
+    }
+
+    /**
+     * Get token value.
+     * @return The token value
+     */
+    public byte[] getTokenValue() {
+        return getFieldAsOctets(TOKEN_VALUE);
+    }
+
+    /**
+     * Set token value.
+     * @param tokenValue The token value
+     */
+    public void setTokenValue(byte[] tokenValue) {
+        setFieldAsOctets(TOKEN_VALUE, tokenValue);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String getSubject() {
+        return innerToken.getSubject();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setSubject(String sub) {
+        innerToken.setSubject(sub);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String getIssuer() {
+        return innerToken.getIssuer();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setIssuer(String issuer) {
+        innerToken.setIssuer(issuer);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public List<String> getAudiences() {
+        return innerToken.getAudiences();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setAudiences(List<String> audiences) {
+        innerToken.setAudiences(audiences);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isIdToken() {
+        return innerToken.isIdToken();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void isIdToken(boolean isIdToken) {
+        innerToken.isIdToken(isIdToken);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isAcToken() {
+        return innerToken.isAcToken();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void isAcToken(boolean isAcToken) {
+        innerToken.isAcToken(isAcToken);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isBearerToken() {
+        return innerToken.isBearerToken();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isHolderOfKeyToken() {
+        return innerToken.isHolderOfKeyToken();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Date getExpiredTime() {
+        return innerToken.getExpiredTime();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setExpirationTime(Date exp) {
+        innerToken.setExpirationTime(exp);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Date getNotBeforeTime() {
+        return innerToken.getNotBeforeTime();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setNotBeforeTime(Date nbt) {
+        innerToken.setNotBeforeTime(nbt);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Date getIssueTime() {
+        return innerToken.getIssueTime();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setIssueTime(Date iat) {
+        innerToken.setIssueTime(iat);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Map<String, Object> getAttributes() {
+        return innerToken.getAttributes();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void addAttribute(String name, Object value) {
+        innerToken.addAttribute(name, value);
+    }
+
+    public void setInnerToken(AuthToken authToken) {
+        this.innerToken = authToken;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReq.java
new file mode 100644
index 0000000..d7e3623
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReq.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.type.base;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ LastReq         ::=     SEQUENCE OF SEQUENCE {
+ lr-type         [0] Int32,
+ lr-value        [1] KerberosTime
+ }
+ */
+public class LastReq extends KrbSequenceOfType<LastReqEntry> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReqEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReqEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReqEntry.java
new file mode 100644
index 0000000..4b1fff4
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReqEntry.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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ LastReq         ::=     SEQUENCE OF SEQUENCE {
+ lr-type         [0] Int32,
+ lr-value        [1] KerberosTime
+ }
+ */
+public class LastReqEntry extends KrbSequenceType {
+    private static final int LR_TYPE = 0;
+    private static final int LR_VALUE = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(LR_TYPE, 0, Asn1Integer.class),
+            new ExplicitField(LR_VALUE, 1, KerberosTime.class)
+    };
+
+    public LastReqEntry() {
+        super(fieldInfos);
+    }
+
+    public LastReqType getLrType() {
+        Integer value = getFieldAsInteger(LR_TYPE);
+        return LastReqType.fromValue(value);
+    }
+
+    public void setLrType(LastReqType lrType) {
+        setFieldAsInt(LR_TYPE, lrType.getValue());
+    }
+
+    public KerberosTime getLrValue() {
+        return getFieldAs(LR_VALUE, KerberosTime.class);
+    }
+
+    public void setLrValue(KerberosTime lrValue) {
+        setFieldAs(LR_VALUE, lrValue);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReqType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReqType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReqType.java
new file mode 100644
index 0000000..0353750
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/LastReqType.java
@@ -0,0 +1,62 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum LastReqType implements Asn1EnumType {
+    NONE(0),
+    ALL_LAST_TGT(1),
+    THE_LAST_TGT(-1),
+    ALL_LAST_INITIAL(2),
+    THE_LAST_INITIAL(-2),
+    ALL_LAST_TGT_ISSUED(3),
+    THE_LAST_TGT_ISSUED(-3),
+    ALL_LAST_RENEWAL(4),
+    THE_LAST_RENEWAL(-4),
+    ALL_LAST_REQ(5),
+    THE_LAST_REQ(-5),
+    ALL_PW_EXPTIME(6),
+    THE_PW_EXPTIME(-6),
+    ALL_ACCT_EXPTIME(7),
+    THE_ACCT_EXPTIME(-7);
+
+    private int value;
+
+    private LastReqType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static LastReqType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value) {
+                    return (LastReqType) e;
+                }
+            }
+        }
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/MethodData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/MethodData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/MethodData.java
new file mode 100644
index 0000000..454b340
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/MethodData.java
@@ -0,0 +1,30 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+
+/**
+ METHOD-DATA     ::= SEQUENCE OF PA-DATA
+ */
+public class MethodData extends KrbSequenceOfType<PaDataEntry> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/NameType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/NameType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/NameType.java
new file mode 100644
index 0000000..d85b786
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/NameType.java
@@ -0,0 +1,54 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum NameType implements Asn1EnumType {
+    NT_UNKNOWN(0),
+    NT_PRINCIPAL(1),
+    NT_SRV_INST(2),
+    NT_SRV_HST(3),
+    NT_SRV_XHST(4),
+    NT_UID(5);
+    
+    private int value;
+
+    private NameType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static NameType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value.intValue()) {
+                    return (NameType) e;
+                }
+            }
+        }
+
+        return NT_UNKNOWN;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/PrincipalName.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/PrincipalName.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/PrincipalName.java
new file mode 100644
index 0000000..1c94adc
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/PrincipalName.java
@@ -0,0 +1,202 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosStrings;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ PrincipalName   ::= SEQUENCE {
+ name-type       [0] Int32,
+ name-string     [1] SEQUENCE OF KerberosString
+ }
+ */
+public class PrincipalName extends KrbSequenceType {
+    private static final int NAME_TYPE = 0;
+    private static final int NAME_STRING = 1;
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(NAME_TYPE, Asn1Integer.class),
+            new ExplicitField(NAME_STRING, KerberosStrings.class)
+    };
+    private String realm;
+
+    public PrincipalName() {
+        super(fieldInfos);
+    }
+
+    public PrincipalName(String nameString) {
+        this();
+        setNameType(NameType.NT_PRINCIPAL);
+        fromNameString(nameString);
+    }
+
+    public PrincipalName(String nameString, NameType type) {
+        this();
+        fromNameString(nameString);
+        setNameType(type);
+    }
+
+    public PrincipalName(List<String> nameStrings, NameType type) {
+        this();
+        setNameStrings(nameStrings);
+        setNameType(type);
+    }
+
+    public static String extractRealm(String principal) {
+        int pos = principal.indexOf('@');
+
+        if (pos > 0) {
+            return principal.substring(pos + 1);
+        }
+
+        throw new IllegalArgumentException("Not a valid principal, missing realm name");
+    }
+
+    public static String extractName(String principal) {
+        int pos = principal.indexOf('@');
+
+        if (pos < 0) {
+            return principal;
+        }
+
+        return principal.substring(0, pos);
+    }
+
+    public static String makeSalt(PrincipalName principalName) {
+        StringBuilder salt = new StringBuilder();
+        if (principalName.getRealm() != null) {
+            salt.append(principalName.getRealm().toString());
+        }
+        List<String> nameStrings = principalName.getNameStrings();
+        for (String ns : nameStrings) {
+            salt.append(ns);
+        }
+        return salt.toString();
+    }
+
+    public NameType getNameType() {
+        Integer value = getFieldAsInteger(NAME_TYPE);
+        return NameType.fromValue(value);
+    }
+
+    public void setNameType(NameType nameType) {
+        setFieldAsInt(NAME_TYPE, nameType.getValue());
+    }
+
+    public List<String> getNameStrings() {
+        KerberosStrings krbStrings = getFieldAs(NAME_STRING, KerberosStrings.class);
+        if (krbStrings != null) {
+            return krbStrings.getAsStrings();
+        }
+        return Collections.emptyList();
+    }
+
+    public void setNameStrings(List<String> nameStrings) {
+        setFieldAs(NAME_STRING, new KerberosStrings(nameStrings));
+    }
+
+    public String getRealm() {
+        return this.realm;
+    }
+
+    public void setRealm(String realm) {
+        this.realm = realm;
+    }
+
+    public String getName() {
+        return makeSingleName();
+    }
+
+    private String makeSingleName() {
+        List<String> names = getNameStrings();
+        StringBuilder sb = new StringBuilder();
+        boolean isFirst = true;
+        for (String name : names) {
+            sb.append(name);
+            if (isFirst && names.size() > 1) {
+                sb.append('/');
+            }
+            isFirst = false;
+        }
+
+        String realm = getRealm();
+        if (realm != null && !realm.isEmpty()) {
+            sb.append('@');
+            sb.append(realm);
+        }
+
+        return sb.toString();
+    }
+
+    @Override
+    public String toString() {
+        return getName();
+    }
+
+    @Override
+    public int hashCode() {
+        return getName().hashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == null) {
+            return false;
+        } else if (this == other) {
+            return true;
+        } else if (!(other instanceof PrincipalName)) {
+            return false;
+        }
+
+        PrincipalName otherPrincipal = (PrincipalName) other;
+        if (getNameType() != ((PrincipalName) other).getNameType()) {
+            return false;
+        }
+
+        return getName().equals(otherPrincipal.getName());
+    }
+
+    private void fromNameString(String nameString) {
+        if (nameString == null) {
+            return;
+        }
+        String tmpRealm = null;
+        List<String> nameStrings;
+        int pos = nameString.indexOf('@');
+        String nameParts = nameString;
+        if (pos != -1) {
+            nameParts = nameString.substring(0, pos);
+            tmpRealm = nameString.substring(pos + 1);
+        }
+        String[] parts = nameParts.split("\\/");
+        nameStrings = Arrays.asList(parts);
+
+        setNameStrings(nameStrings);
+        setRealm(tmpRealm);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/Realm.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/Realm.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/Realm.java
new file mode 100644
index 0000000..76306f3
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/Realm.java
@@ -0,0 +1,34 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+
+/**
+ * Realm           ::= KerberosString
+ */
+public class Realm extends KerberosString {
+    public Realm() {
+    }
+
+    public Realm(String value) {
+        super(value);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/SamType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/SamType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/SamType.java
new file mode 100644
index 0000000..faa6e18
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/SamType.java
@@ -0,0 +1,65 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum SamType implements Asn1EnumType {
+    SAM_NONE(0),
+    /** safe SAM type enum for Enigma Logic */
+    SAM_TYPE_ENIGMA(1), // Enigma Logic"
+
+    /** safe SAM type enum for Digital Pathways */
+    SAM_TYPE_DIGI_PATH(2), // Digital Pathways
+
+    /** safe SAM type enum for S/key where KDC has key 0 */
+    SAM_TYPE_SKEY_K0(3), // S/key where KDC has key 0
+
+    /** safe SAM type enum for Traditional S/Key */
+    SAM_TYPE_SKEY(4), // Traditional S/Key
+
+    /** safe SAM type enum for Security Dynamics */
+    SAM_TYPE_SECURID(5), // Security Dynamics
+
+    /** safe SAM type enum for CRYPTOCard */
+    SAM_TYPE_CRYPTOCARD(6); // CRYPTOCard
+
+    private int value;
+
+    private SamType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static SamType fromValue(Integer value) {
+        if (value != null) {
+            for (SamType st : SamType.values()) {
+                if (value == st.getValue()) {
+                    return st;
+                }
+            }
+        }
+        return SAM_NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TokenFormat.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TokenFormat.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TokenFormat.java
new file mode 100644
index 0000000..15781b7
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TokenFormat.java
@@ -0,0 +1,50 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum TokenFormat implements Asn1EnumType {
+    NONE                (0),
+    JWT                 (1);
+
+    private final int value;
+
+    private TokenFormat(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static TokenFormat fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value.intValue()) {
+                    return (TokenFormat) e;
+                }
+            }
+        }
+
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TransitedEncoding.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TransitedEncoding.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TransitedEncoding.java
new file mode 100644
index 0000000..3b38ff9
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TransitedEncoding.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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ TransitedEncoding       ::= SEQUENCE {
+ tr-type         [0] Int32 -- must be registered --,
+ contents        [1] OCTET STRING
+ }
+ */
+public class TransitedEncoding extends KrbSequenceType {
+    private static final int TR_TYPE = 0;
+    private static final int CONTENTS = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(TR_TYPE, 0, Asn1Integer.class),
+            new ExplicitField(CONTENTS, 1, Asn1OctetString.class)
+    };
+
+    public TransitedEncoding() {
+        super(fieldInfos);
+    }
+
+    public TransitedEncodingType getTrType() {
+        Integer value = getFieldAsInteger(TR_TYPE);
+        return TransitedEncodingType.fromValue(value);
+    }
+
+    public void setTrType(TransitedEncodingType trType) {
+        setField(TR_TYPE, trType);
+    }
+
+    public byte[] getContents() {
+        return getFieldAsOctets(CONTENTS);
+    }
+
+    public void setContents(byte[] contents) {
+        setFieldAsOctets(CONTENTS, contents);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TransitedEncodingType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TransitedEncodingType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TransitedEncodingType.java
new file mode 100644
index 0000000..744b643
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/TransitedEncodingType.java
@@ -0,0 +1,51 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum TransitedEncodingType implements Asn1EnumType {
+    UNKNOWN(-1),
+    NULL(0),
+    DOMAIN_X500_COMPRESS(1);
+
+    private final int value;
+
+    private TransitedEncodingType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static TransitedEncodingType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value.intValue()) {
+                    return (TransitedEncodingType) e;
+                }
+            }
+        }
+
+        return NULL;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/ArmorType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/ArmorType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/ArmorType.java
new file mode 100644
index 0000000..3331088
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/ArmorType.java
@@ -0,0 +1,50 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum ArmorType implements Asn1EnumType {
+    NONE                (0),
+    ARMOR_AP_REQUEST              (1);
+
+    private final int value;
+
+    private ArmorType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static ArmorType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value.intValue()) {
+                    return (ArmorType) e;
+                }
+            }
+        }
+
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/FastOption.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/FastOption.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/FastOption.java
new file mode 100644
index 0000000..dc46d83
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/FastOption.java
@@ -0,0 +1,51 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum FastOption implements Asn1EnumType {
+    NONE(-1),
+    RESERVED(0),
+    HIDE_CLIENT_NAMES(1),
+
+    KDC_FOLLOW_REFERRALS(16);
+
+    private final int value;
+
+    private FastOption(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static FastOption fromValue(int value) {
+        for (Asn1EnumType e : values()) {
+            if (e.getValue() == value) {
+                return (FastOption) e;
+            }
+        }
+
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/FastOptions.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/FastOptions.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/FastOptions.java
new file mode 100644
index 0000000..21bc2c4
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/FastOptions.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.type.fast;
+
+import org.apache.kerby.asn1.type.Asn1Flags;
+
+public class FastOptions extends Asn1Flags {
+
+    public FastOptions() {
+        this(0);
+    }
+
+    public FastOptions(int value) {
+        setFlags(value);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmor.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmor.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmor.java
new file mode 100644
index 0000000..0cde5f6
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmor.java
@@ -0,0 +1,65 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ KrbFastArmor ::= SEQUENCE {
+     armor-type   [0] Int32,
+     -- Type of the armor.
+     armor-value  [1] OCTET STRING,
+     -- Value of the armor.
+ }
+ */
+public class KrbFastArmor extends KrbSequenceType {
+    private static final int ARMOR_TYPE = 0;
+    private static final int ARMOR_VALUE = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ARMOR_TYPE, Asn1Integer.class),
+            new ExplicitField(ARMOR_VALUE, Asn1OctetString.class)
+    };
+
+    public KrbFastArmor() {
+        super(fieldInfos);
+    }
+
+    public ArmorType getArmorType() {
+        Integer value = getFieldAsInteger(ARMOR_TYPE);
+        return ArmorType.fromValue(value);
+    }
+
+    public void setArmorType(ArmorType armorType) {
+        setFieldAsInt(ARMOR_TYPE, armorType.getValue());
+    }
+
+    public byte[] getArmorValue() {
+        return getFieldAsOctets(ARMOR_VALUE);
+    }
+
+    public void setArmorValue(byte[] armorValue) {
+        setFieldAsOctets(ARMOR_VALUE, armorValue);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmoredRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmoredRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmoredRep.java
new file mode 100644
index 0000000..0615a30
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmoredRep.java
@@ -0,0 +1,53 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+
+/**
+ KrbFastArmoredRep ::= SEQUENCE {
+    enc-fast-rep      [0] EncryptedData, -- KrbFastResponse --
+    -- The encryption key is the armor key in the request, and
+    -- the key usage number is KEY_USAGE_FAST_REP.
+ }
+ */
+public class KrbFastArmoredRep extends KrbSequenceType {
+    private static final int ENC_FAST_REP = 0;
+
+    //private
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ENC_FAST_REP, EncryptedData.class)
+    };
+
+    public KrbFastArmoredRep() {
+        super(fieldInfos);
+    }
+
+    public EncryptedData getEncFastRep() {
+        return getFieldAs(ENC_FAST_REP, EncryptedData.class);
+    }
+
+    public void setEncFastRep(EncryptedData encFastRep) {
+        setFieldAs(ENC_FAST_REP, encFastRep);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmoredReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmoredReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmoredReq.java
new file mode 100644
index 0000000..aaa0d24
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastArmoredReq.java
@@ -0,0 +1,96 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+
+/**
+ KrbFastArmoredReq ::= SEQUENCE {
+     armor        [0] KrbFastArmor OPTIONAL,
+     -- Contains the armor that identifies the armor key.
+     -- MUST be present in AS-REQ.
+     req-checksum [1] Checksum,
+     -- For AS, contains the checksum performed over the type
+     -- KDC-REQ-BODY for the req-body field of the KDC-REQ
+     -- structure;
+     -- For TGS, contains the checksum performed over the type
+     -- AP-REQ in the PA-TGS-REQ padata.
+     -- The checksum key is the armor key, the checksum
+     -- type is the required checksum type for the enctype of
+     -- the armor key, and the key usage number is
+     -- KEY_USAGE_FAST_REQ_CHKSUM.
+     enc-fast-req [2] EncryptedData, -- KrbFastReq --
+     -- The encryption key is the armor key, and the key usage
+     -- number is KEY_USAGE_FAST_ENC.
+ }
+ */
+public class KrbFastArmoredReq extends KrbSequenceType {
+    private static final int ARMOR = 0;
+    private static final int REQ_CHECKSUM = 1;
+    private static final int ENC_FAST_REQ = 2;
+
+    private KrbFastReq fastReq;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ARMOR, KrbFastArmor.class),
+            new ExplicitField(REQ_CHECKSUM, CheckSum.class),
+            new ExplicitField(ENC_FAST_REQ, EncryptedData.class),
+    };
+
+    public KrbFastArmoredReq() {
+        super(fieldInfos);
+    }
+
+    public KrbFastArmor getArmor() {
+        return getFieldAs(ARMOR, KrbFastArmor.class);
+    }
+
+    public void setArmor(KrbFastArmor armor) {
+        setFieldAs(ARMOR, armor);
+    }
+
+    public CheckSum getReqChecksum() {
+        return getFieldAs(REQ_CHECKSUM, CheckSum.class);
+    }
+
+    public void setReqChecksum(CheckSum checkSum) {
+        setFieldAs(REQ_CHECKSUM, checkSum);
+    }
+
+    public KrbFastReq getFastReq() {
+        return fastReq;
+    }
+
+    public void setFastReq(KrbFastReq fastReq) {
+        this.fastReq = fastReq;
+    }
+
+    public EncryptedData getEncryptedFastReq() {
+        return getFieldAs(ENC_FAST_REQ, EncryptedData.class);
+    }
+
+    public void setEncryptedFastReq(EncryptedData encFastReq) {
+        setFieldAs(ENC_FAST_REQ, encFastReq);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastFinished.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastFinished.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastFinished.java
new file mode 100644
index 0000000..2944471
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastFinished.java
@@ -0,0 +1,83 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+
+/**
+ KrbFastFinished ::= SEQUENCE {
+     timestamp       [0] KerberosTime,
+     usec            [1] Microseconds,
+     -- timestamp and usec represent the time on the KDC when
+     -- the reply was generated.
+     crealm          [2] Realm,
+     cname           [3] PrincipalName,
+     -- Contains the client realm and the client name.
+     ticket-checksum [4] Checksum,
+     -- checksum of the ticket in the KDC-REP using the armor
+     -- and the key usage is KEY_USAGE_FAST_FINISH.
+     -- The checksum type is the required checksum type
+     -- of the armor key.
+ }
+ */
+public class KrbFastFinished extends KrbSequenceType {
+    private static final int FAST_OPTIONS = 0;
+    private static final int PADATA = 1;
+    private static final int REQ_BODY = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(FAST_OPTIONS, KrbFastArmor.class),
+            new ExplicitField(PADATA, PaData.class),
+            new ExplicitField(REQ_BODY, EncryptedData.class),
+    };
+
+    public KrbFastFinished() {
+        super(fieldInfos);
+    }
+
+    public KrbFastArmor getArmor() {
+        return getFieldAs(FAST_OPTIONS, KrbFastArmor.class);
+    }
+
+    public void setArmor(KrbFastArmor armor) {
+        setFieldAs(FAST_OPTIONS, armor);
+    }
+
+    public CheckSum getReqChecksum() {
+        return getFieldAs(PADATA, CheckSum.class);
+    }
+
+    public void setReqChecksum(CheckSum checkSum) {
+        setFieldAs(PADATA, checkSum);
+    }
+
+    public EncryptedData getEncFastReq() {
+        return getFieldAs(REQ_BODY, EncryptedData.class);
+    }
+
+    public void setEncFastReq(EncryptedData encFastReq) {
+        setFieldAs(REQ_BODY, encFastReq);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastReq.java
new file mode 100644
index 0000000..0f7da88
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastReq.java
@@ -0,0 +1,79 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+
+/**
+ KrbFastReq ::= SEQUENCE {
+     fast-options [0] FastOptions,
+     -- Additional options.
+     padata       [1] SEQUENCE OF PA-DATA,
+     -- padata typed holes.
+     req-body     [2] KDC-REQ-BODY,
+     -- Contains the KDC request body as defined in Section
+     -- 5.4.1 of [RFC4120].
+     -- This req-body field is preferred over the outer field
+     -- in the KDC request.
+ }
+ */
+public class KrbFastReq extends KrbSequenceType {
+    private static final int FAST_OPTIONS = 0;
+    private static final int PADATA = 1;
+    private static final int REQ_BODY = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(FAST_OPTIONS, FastOptions.class),
+            new ExplicitField(PADATA, PaData.class),
+            new ExplicitField(REQ_BODY, KdcReqBody.class),
+    };
+
+    public KrbFastReq() {
+        super(fieldInfos);
+    }
+
+    public FastOptions getFastOptions() {
+        return getFieldAs(FAST_OPTIONS, FastOptions.class);
+    }
+
+    public void setFastOptions(FastOptions fastOptions) {
+        setFieldAs(FAST_OPTIONS, fastOptions);
+    }
+
+    public PaData getPaData() {
+        return getFieldAs(PADATA, PaData.class);
+    }
+
+    public void setPaData(PaData paData) {
+        setFieldAs(PADATA, paData);
+    }
+
+    public KdcReqBody getKdcReqBody() {
+        return getFieldAs(REQ_BODY, KdcReqBody.class);
+    }
+
+    public void setKdcReqBody(KdcReqBody kdcReqBody) {
+        setFieldAs(REQ_BODY, kdcReqBody);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastResponse.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastResponse.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastResponse.java
new file mode 100644
index 0000000..cd06c42
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/KrbFastResponse.java
@@ -0,0 +1,91 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+
+/**
+ KrbFastResponse ::= SEQUENCE {
+     padata         [0] SEQUENCE OF PA-DATA,
+     -- padata typed holes.
+     strengthen-key [1] EncryptionKey OPTIONAL,
+     -- This, if present, strengthens the reply key for AS and
+     -- TGS. MUST be present for TGS.
+     -- MUST be absent in KRB-ERROR.
+     finished       [2] KrbFastFinished OPTIONAL,
+     -- Present in AS or TGS reply; absent otherwise.
+     nonce          [3] UInt32,
+     -- Nonce from the client request.
+ }
+ */
+public class KrbFastResponse extends KrbSequenceType {
+    private static final int PADATA = 0;
+    private static final int STRENGTHEN_KEY = 1;
+    private static final int FINISHED = 2;
+    private static final int NONCE = 3;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PADATA, PaData.class),
+            new ExplicitField(STRENGTHEN_KEY, EncryptionKey.class),
+            new ExplicitField(FINISHED, KrbFastFinished.class),
+            new ExplicitField(NONCE, Asn1Integer.class)
+    };
+
+    public KrbFastResponse() {
+        super(fieldInfos);
+    }
+
+    public PaData getPaData() {
+        return getFieldAs(PADATA, PaData.class);
+    }
+
+    public void setPaData(PaData paData) {
+        setFieldAs(PADATA, paData);
+    }
+
+    public EncryptionKey getStrengthenKey() {
+        return getFieldAs(STRENGTHEN_KEY, EncryptionKey.class);
+    }
+
+    public void setStrengthenKey(EncryptionKey strengthenKey) {
+        setFieldAs(STRENGTHEN_KEY, strengthenKey);
+    }
+
+    public KrbFastFinished getFastFinished() {
+        return getFieldAs(FINISHED, KrbFastFinished.class);
+    }
+
+    public void setFastFinished(KrbFastFinished fastFinished) {
+        setFieldAs(FINISHED, fastFinished);
+    }
+
+    public int getNonce() {
+        return getFieldAsInt(NONCE);
+    }
+
+    public void setNonce(int nonce) {
+        setFieldAsInt(NONCE, nonce);
+    }
+}


[12/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TicketFlags.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TicketFlags.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TicketFlags.java
deleted file mode 100644
index 88f5c01..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TicketFlags.java
+++ /dev/null
@@ -1,39 +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.spec.ticket;
-
-import org.apache.kerby.asn1.type.Asn1Flags;
-
-import static org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlag.INVALID;
-
-public class TicketFlags extends Asn1Flags {
-
-    public TicketFlags() {
-        this(0);
-    }
-
-    public TicketFlags(int value) {
-        setFlags(value);
-    }
-
-    public boolean isInvalid() {
-        return isFlagSet(INVALID.getValue());
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Tickets.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Tickets.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Tickets.java
deleted file mode 100644
index a7acef0..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Tickets.java
+++ /dev/null
@@ -1,29 +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.spec.ticket;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- SEQUENCE OF Ticket
- */
-public class Tickets extends KrbSequenceOfType<Ticket> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosString.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosString.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosString.java
new file mode 100644
index 0000000..d635669
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosString.java
@@ -0,0 +1,35 @@
+/**
+ *  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.type;
+
+import org.apache.kerby.asn1.type.Asn1GeneralString;
+
+/**
+ KerberosString  ::= GeneralString -- (IA5String)
+ */
+public class KerberosString extends Asn1GeneralString {
+    public KerberosString() {
+        super();
+    }
+
+    public KerberosString(String value) {
+        super(value);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosStrings.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosStrings.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosStrings.java
new file mode 100644
index 0000000..3103b7a
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosStrings.java
@@ -0,0 +1,43 @@
+/**
+ *  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.type;
+
+import java.util.List;
+
+public class KerberosStrings extends KrbSequenceOfType<KerberosString> {
+
+    public KerberosStrings() {
+        super();
+    }
+
+    public KerberosStrings(List<String> strings) {
+        super();
+        setValues(strings);
+    }
+
+    public void setValues(List<String> values) {
+        clear();
+        if (values != null) {
+            for (String value : values) {
+                addElement(new KerberosString(value));
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosTime.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosTime.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosTime.java
new file mode 100644
index 0000000..3a78bf0
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KerberosTime.java
@@ -0,0 +1,160 @@
+/*
+ *  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.type;
+
+import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
+
+import java.util.Date;
+
+/**
+ * A specialization of the ASN.1 GeneralTime. The Kerberos time contains date and
+ * time up to the seconds, but with no fractional seconds. It's also always
+ * expressed as UTC timeZone, thus the 'Z' at the end of its string representation.
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class KerberosTime extends Asn1GeneralizedTime {
+
+    /** Constant for the {@link KerberosTime} "infinity." */
+    public static final KerberosTime NEVER = new KerberosTime(Long.MAX_VALUE);
+
+    /** The number of milliseconds in a minute. */
+    public static final int MINUTE = 60000;
+
+    /** The number of milliseconds in a day. */
+    public static final int DAY = MINUTE * 1440;
+
+    /** The number of milliseconds in a week. */
+    public static final int WEEK = MINUTE * 10080;
+
+    /**
+     * Creates a new instance of a KerberosTime object with the current time
+     */
+    public KerberosTime() {
+        // divide current time by 1000 to drop the ms then multiply by 1000 to convert to ms
+        super((System.currentTimeMillis() / 1000L) * 1000L); 
+    }
+
+    /**
+     * @param time in milliseconds
+     */
+    public KerberosTime(long time) {
+        super(time);
+    }
+
+    /**
+     * @return time in milliseconds
+     */
+    public long getTime() {
+        return getValue().getTime();
+    }
+
+    /**
+     * @param time set time in milliseconds
+     */
+    public void setTime(long time) {
+        setValue(new Date(time));
+    }
+
+    /**
+     * get the time in seconds
+     * @return The time
+     */
+    public long getTimeInSeconds() {
+        return getTime() / 1000;
+    }
+
+    public boolean lessThan(KerberosTime ktime) {
+        return getValue().compareTo(ktime.getValue()) < 0;
+    }
+
+    /**
+     * @param time in milliseconds
+     * @return true if less
+     */
+    public boolean lessThan(long time) {
+        return getValue().getTime() < time;
+    }
+
+    /**
+     * @param ktime compare with milliseconds
+     * @return true if greater
+     */
+    public boolean greaterThan(KerberosTime ktime) {
+        return getValue().compareTo(ktime.getValue()) > 0;
+    }
+
+    /**
+     * time in milliseconds
+     * @param clockSkew The clock skew
+     * @return true if in clock skew
+     */
+    public boolean isInClockSkew(long clockSkew) {
+        long delta = Math.abs(getTime() - System.currentTimeMillis());
+
+        return delta < clockSkew;
+    }
+
+    public KerberosTime copy() {
+        long time = getTime();
+        return new KerberosTime(time);
+    }
+
+    /**
+     * time in milliseconds.
+     * @param duration The duration
+     * @return The kerberos time
+     */
+    public KerberosTime extend(long duration) {
+        long result = getTime() + duration;
+        return new KerberosTime(result);
+    }
+
+    /**
+     * Return diff time in milliseconds
+     * @param other The kerberos time
+     * @return The diff time
+     */
+    public long diff(KerberosTime other) {
+        return getTime() - other.getTime();
+    }
+
+    public static KerberosTime now() {
+        return new KerberosTime(new Date().getTime());
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        KerberosTime time = (KerberosTime) o;
+        return this.getValue().equals(time.getValue());
+    }
+
+    @Override
+    public int hashCode() {
+        return getValue().hashCode();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbAppSequenceType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbAppSequenceType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbAppSequenceType.java
new file mode 100644
index 0000000..8de28e0
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbAppSequenceType.java
@@ -0,0 +1,57 @@
+/**
+ *  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.type;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.TaggingSequence;
+
+/**
+ * This is for application specific sequence tagged with a number.
+ */
+public abstract class KrbAppSequenceType extends TaggingSequence {
+    public KrbAppSequenceType(int tagNo, Asn1FieldInfo[] fieldInfos) {
+        super(tagNo, fieldInfos, true, false); // Kerberos favors explicit
+    }
+
+    protected int getFieldAsInt(int index) {
+        Integer value = getFieldAsInteger(index);
+        if (value != null) {
+            return value.intValue();
+        }
+        return -1;
+    }
+
+    protected void setFieldAsString(int index, String value) {
+        setFieldAs(index, new KerberosString(value));
+    }
+
+    protected KerberosTime getFieldAsTime(int index) {
+        return getFieldAs(index, KerberosTime.class);
+    }
+
+    protected void setFieldAsTime(int index, long value) {
+        setFieldAs(index, new KerberosTime(value));
+    }
+
+    protected void setField(int index, Asn1EnumType krbEnum) {
+        setFieldAsInt(index, krbEnum.getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbIntegers.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbIntegers.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbIntegers.java
new file mode 100644
index 0000000..9ca2826
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbIntegers.java
@@ -0,0 +1,54 @@
+/**
+ *  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.type;
+
+import org.apache.kerby.asn1.type.Asn1Integer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class KrbIntegers extends KrbSequenceOfType<Asn1Integer> {
+
+    public KrbIntegers() {
+        super();
+    }
+
+    public KrbIntegers(List<Integer> values) {
+        super();
+        setValues(values);
+    }
+
+    public void setValues(List<Integer> values) {
+        clear();
+        if (values != null) {
+            for (Integer value : values) {
+                addElement(new Asn1Integer(value));
+            }
+        }
+    }
+
+    public List<Integer> getValues() {
+        List<Integer> results = new ArrayList<Integer>();
+        for (Asn1Integer value : getElements()) {
+            results.add(value.getValue().intValue());
+        }
+        return results;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbSequenceOfType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbSequenceOfType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbSequenceOfType.java
new file mode 100644
index 0000000..06bfdd8
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbSequenceOfType.java
@@ -0,0 +1,43 @@
+/**
+ *  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.type;
+
+import org.apache.kerby.asn1.type.Asn1SequenceOf;
+import org.apache.kerby.asn1.type.Asn1String;
+import org.apache.kerby.asn1.type.Asn1Type;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class KrbSequenceOfType<T extends Asn1Type> extends Asn1SequenceOf<T> {
+
+    public List<String> getAsStrings() {
+        List<T> elements = getElements();
+        List<String> results = new ArrayList<String>();
+        for (T ele : elements) {
+            if (ele instanceof Asn1String) {
+                results.add(((Asn1String) ele).getValue());
+            } else {
+                throw new RuntimeException("The targeted field type isn't of string");
+            }
+        }
+        return results;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbSequenceType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbSequenceType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbSequenceType.java
new file mode 100644
index 0000000..3ff278d
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/KrbSequenceType.java
@@ -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. 
+ *  
+ */
+package org.apache.kerby.kerberos.kerb.type;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1SequenceType;
+
+public abstract class KrbSequenceType extends Asn1SequenceType {
+
+    public KrbSequenceType(Asn1FieldInfo[] fieldInfos) {
+        super(fieldInfos);
+    }
+
+    protected int getFieldAsInt(int index) {
+        Integer value = getFieldAsInteger(index);
+        if (value != null) {
+            return value.intValue();
+        }
+        return -1;
+    }
+
+    protected void setFieldAsString(int index, String value) {
+        setFieldAs(index, new KerberosString(value));
+    }
+
+    protected KerberosTime getFieldAsTime(int index) {
+        return getFieldAs(index, KerberosTime.class);
+    }
+
+    protected void setFieldAsTime(int index, long value) {
+        setFieldAs(index, new KerberosTime(value));
+    }
+
+    protected void setField(int index, Asn1EnumType value) {
+        setFieldAsInt(index, value.getValue());
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AdToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AdToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AdToken.java
new file mode 100644
index 0000000..690af6b
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AdToken.java
@@ -0,0 +1,51 @@
+/**
+ *  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.type.ad;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
+
+/**
+ AD-TOKEN ::= SEQUENCE {
+    token     [0]  OCTET STRING,
+ }
+*/
+public class AdToken extends KrbSequenceType {
+    private static final int TOKEN = 0;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(TOKEN, KrbToken.class)
+    };
+
+    public AdToken() {
+        super(fieldInfos);
+    }
+
+    public KrbToken getToken() {
+        return getFieldAs(TOKEN, KrbToken.class);
+    }
+
+    public void setToken(KrbToken token) {
+        setFieldAs(TOKEN, token);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationData.java
new file mode 100644
index 0000000..26c28bf
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationData.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.type.ad;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ AuthorizationData       ::= SEQUENCE OF SEQUENCE {
+ ad-type         [0] Int32,
+ ad-data         [1] OCTET STRING
+ }
+ */
+public class AuthorizationData extends KrbSequenceOfType<AuthorizationDataEntry> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationDataEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationDataEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationDataEntry.java
new file mode 100644
index 0000000..c2750a4
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationDataEntry.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.type.ad;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ AuthorizationData       ::= SEQUENCE OF SEQUENCE {
+ ad-type         [0] Int32,
+ ad-data         [1] OCTET STRING
+ }
+ */
+public class AuthorizationDataEntry extends KrbSequenceType {
+    private static final int AD_TYPE = 0;
+    private static final int AD_DATA = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(AD_TYPE, 0, Asn1Integer.class),
+            new ExplicitField(AD_DATA, 1, Asn1OctetString.class)
+    };
+
+    public AuthorizationDataEntry() {
+        super(fieldInfos);
+    }
+
+    public AuthorizationType getAuthzType() {
+        Integer value = getFieldAsInteger(AD_TYPE);
+        return AuthorizationType.fromValue(value);
+    }
+
+    public void setAuthzType(AuthorizationType authzType) {
+        setFieldAsInt(AD_TYPE, authzType.getValue());
+    }
+
+    public byte[] getAuthzData() {
+        return getFieldAsOctets(AD_DATA);
+    }
+
+    public void setAuthzData(byte[] authzData) {
+        setFieldAsOctets(AD_DATA, authzData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationType.java
new file mode 100644
index 0000000..979fc13
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ad/AuthorizationType.java
@@ -0,0 +1,143 @@
+/**
+ *  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.type.ad;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum AuthorizationType implements Asn1EnumType {
+    /**
+     * Constant for the "null" authorization type.
+     */
+    NULL(0),
+
+    /**
+     * Constant for the "if relevant" authorization type.
+     *
+     * RFC 4120
+     */
+    AD_IF_RELEVANT(1),
+
+    /**
+     * Constant for the "intended for server" authorization type.
+     *
+     * RFC 4120
+     */
+    AD_INTENDED_FOR_SERVER(2),
+
+    /**
+     * Constant for the  "intended for application class" authorization type.
+     *
+     * RFC 4120
+     */
+    AD_INTENDED_FOR_APPLICATION_CLASS(3),
+
+    /**
+     * Constant for the "kdc issued" authorization type.
+     *
+     * RFC 4120
+     */
+    AD_KDC_ISSUED(4),
+
+    /**
+     * Constant for the "or" authorization type.
+     *
+     * RFC 4120
+     */
+    AD_OR(5),
+
+    /**
+     * Constant for the "mandatory ticket extensions" authorization type.
+     *
+     * RFC 4120
+     */
+    AD_MANDATORY_TICKET_EXTENSIONS(6),
+
+    /**
+     * Constant for the "in ticket extensions" authorization type.
+     *
+     * RFC 4120
+     */
+    AD_IN_TICKET_EXTENSIONS(7),
+
+    /**
+     * Constant for the "mandatory-for-kdc" authorization type.
+     *
+     * RFC 4120
+     */
+    AD_MANDATORY_FOR_KDC(8),
+
+    /**
+     * Constant for the "OSF DCE" authorization type.
+     *
+     * RFC 1510
+     */
+    OSF_DCE(64),
+
+    /**
+     * Constant for the "sesame" authorization type.
+     *
+     * RFC 1510
+     */
+    SESAME(65),
+
+    /**
+     * Constant for the "OSF-DCE pki certid" authorization type.
+     *
+     * RFC 1510
+     */
+    AD_OSF_DCE_PKI_CERTID(66),
+
+    /**
+     * Constant for the "sesame" authorization type.
+     *
+     * RFC 1510
+     */
+    AD_WIN2K_PAC(128),
+
+    /**
+     * Constant for the "sesame" authorization type.
+     *
+     * RFC 1510
+     */
+    AD_ETYPE_NEGOTIATION(129);
+
+    private final int value;
+
+    private AuthorizationType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static AuthorizationType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value.intValue()) {
+                    return (AuthorizationType) e;
+                }
+            }
+        }
+
+        return NULL;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApOption.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApOption.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApOption.java
new file mode 100644
index 0000000..9676c2f
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApOption.java
@@ -0,0 +1,58 @@
+/**
+ *  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.type.ap;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+/**
+ APOptions       ::= KrbFlags
+ -- reserved(0),
+ -- use-session-key(1),
+ -- mutual-required(2)
+ */
+public enum ApOption implements Asn1EnumType {
+    NONE(-1),
+    RESERVED(0x80000000),
+    USE_SESSION_KEY(0x40000000),
+    MUTUAL_REQUIRED(0x20000000),
+    ETYPE_NEGOTIATION(0x00000002),
+    USE_SUBKEY(0x00000001);
+
+    private final int value;
+
+    private ApOption(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static ApOption fromValue(int value) {
+        for (Asn1EnumType e : values()) {
+            if (e.getValue() == value) {
+                return (ApOption) e;
+            }
+        }
+
+        return NONE;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApOptions.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApOptions.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApOptions.java
new file mode 100644
index 0000000..a024734
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApOptions.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.type.ap;
+
+import org.apache.kerby.asn1.type.Asn1Flags;
+
+public class ApOptions extends Asn1Flags {
+
+    public ApOptions() {
+        this(0);
+    }
+
+    public ApOptions(int value) {
+        setFlags(value);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApRep.java
new file mode 100644
index 0000000..fab60b6
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApRep.java
@@ -0,0 +1,66 @@
+/**
+ *  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.type.ap;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+
+/**
+ AP-REP          ::= [APPLICATION 15] SEQUENCE {
+ pvno            [0] INTEGER (5),
+ msg-type        [1] INTEGER (15),
+ enc-part        [2] EncryptedData -- EncAPRepPart
+ }
+ */
+public class ApRep extends KrbMessage {
+    private static final int ENC_PART = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PVNO, 0, Asn1Integer.class),
+            new ExplicitField(MSG_TYPE, 1, Asn1Integer.class),
+            new ExplicitField(ENC_PART, 2, EncryptedData.class)
+    };
+
+    public ApRep() {
+        super(KrbMessageType.AP_REP, fieldInfos);
+    }
+
+    private EncAPRepPart encRepPart;
+
+    public EncAPRepPart getEncRepPart() {
+        return encRepPart;
+    }
+
+    public void setEncRepPart(EncAPRepPart encRepPart) {
+        this.encRepPart = encRepPart;
+    }
+
+    public EncryptedData getEncryptedEncPart() {
+        return getFieldAs(ENC_PART, EncryptedData.class);
+    }
+
+    public void setEncryptedEncPart(EncryptedData encryptedEncPart) {
+        setFieldAs(ENC_PART, encryptedEncPart);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApReq.java
new file mode 100644
index 0000000..c6ea848
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/ApReq.java
@@ -0,0 +1,90 @@
+/**
+ *  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.type.ap;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+
+/**
+ AP-REQ          ::= [APPLICATION 14] SEQUENCE {
+ pvno            [0] INTEGER (5),
+ msg-type        [1] INTEGER (14),
+ ap-options      [2] APOptions,
+ ticket          [3] Ticket,
+ authenticator   [4] EncryptedData -- Authenticator
+ }
+ */
+public class ApReq extends KrbMessage {
+    private static final int AP_OPTIONS = 2;
+    private static final int TICKET = 3;
+    private static final int AUTHENTICATOR = 4;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PVNO, Asn1Integer.class),
+            new ExplicitField(MSG_TYPE, Asn1Integer.class),
+            new ExplicitField(AP_OPTIONS, ApOptions.class),
+            new ExplicitField(TICKET, Ticket.class),
+            new ExplicitField(AUTHENTICATOR, EncryptedData.class)
+    };
+
+    private Authenticator authenticator;
+
+    public ApReq() {
+        super(KrbMessageType.AP_REQ, fieldInfos);
+    }
+
+    public ApOptions getApOptions() {
+        return getFieldAs(AP_OPTIONS, ApOptions.class);
+    }
+
+    public void setApOptions(ApOptions apOptions) {
+        setFieldAs(AP_OPTIONS, apOptions);
+    }
+
+    public Ticket getTicket() {
+        return getFieldAs(TICKET, Ticket.class);
+    }
+
+    public void setTicket(Ticket ticket) {
+        setFieldAs(TICKET, ticket);
+    }
+
+    public Authenticator getAuthenticator() {
+        return authenticator;
+    }
+
+    public void setAuthenticator(Authenticator authenticator) {
+        this.authenticator = authenticator;
+    }
+
+    public EncryptedData getEncryptedAuthenticator() {
+        return getFieldAs(AUTHENTICATOR, EncryptedData.class);
+    }
+
+    public void setEncryptedAuthenticator(EncryptedData encryptedAuthenticator) {
+        setFieldAs(AUTHENTICATOR, encryptedAuthenticator);
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/Authenticator.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/Authenticator.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/Authenticator.java
new file mode 100644
index 0000000..8fae5d3
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/Authenticator.java
@@ -0,0 +1,145 @@
+/**
+ *  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.type.ap;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbAppSequenceType;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+
+/**
+ Authenticator   ::= [APPLICATION 2] SEQUENCE  {
+ authenticator-vno       [0] INTEGER (5),
+ crealm                  [1] Realm,
+ cname                   [2] PrincipalName,
+ cksum                   [3] Checksum OPTIONAL,
+ cusec                   [4] Microseconds,
+ ctime                   [5] KerberosTime,
+ subkey                  [6] EncryptionKey OPTIONAL,
+ seq-number              [7] UInt32 OPTIONAL,
+ authorization-data      [8] AuthorizationData OPTIONAL
+ }
+ */
+public class Authenticator extends KrbAppSequenceType {
+    public static final int TAG = 2;
+    private static final int AUTHENTICATOR_VNO = 0;
+    private static final int CREALM = 1;
+    private static final int CNAME = 2;
+    private static final int CKSUM = 3;
+    private static final int CUSEC = 4;
+    private static final int CTIME = 5;
+    private static final int SUBKEY = 6;
+    private static final int SEQ_NUMBER = 7;
+    private static final int AUTHORIZATION_DATA = 8;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(AUTHENTICATOR_VNO, 0, Asn1Integer.class),
+            new ExplicitField(CREALM, 1, KerberosString.class),
+            new ExplicitField(CNAME, 2, PrincipalName.class),
+            new ExplicitField(CKSUM, 3, CheckSum.class),
+            new ExplicitField(CUSEC, 4, Asn1Integer.class),
+            new ExplicitField(CTIME, 5, KerberosTime.class),
+            new ExplicitField(SUBKEY, 6, EncryptionKey.class),
+            new ExplicitField(SEQ_NUMBER, 7, Asn1Integer.class),
+            new ExplicitField(AUTHORIZATION_DATA, 8, AuthorizationData.class)
+    };
+
+    public Authenticator() {
+        super(TAG, fieldInfos);
+    }
+
+    public int getAuthenticatorVno() {
+        return getFieldAsInt(AUTHENTICATOR_VNO);
+    }
+
+    public void setAuthenticatorVno(int authenticatorVno) {
+        setFieldAsInt(AUTHENTICATOR_VNO, authenticatorVno);
+    }
+
+    public String getCrealm() {
+        return getFieldAsString(CREALM);
+    }
+
+    public void setCrealm(String crealm) {
+        setFieldAsString(CREALM, crealm);
+    }
+
+    public PrincipalName getCname() {
+        return getFieldAs(CNAME, PrincipalName.class);
+    }
+
+    public void setCname(PrincipalName cname) {
+        setFieldAs(CNAME, cname);
+    }
+
+    public CheckSum getCksum() {
+        return getFieldAs(CKSUM, CheckSum.class);
+    }
+
+    public void setCksum(CheckSum cksum) {
+        setFieldAs(CKSUM, cksum);
+    }
+
+    public int getCusec() {
+        return getFieldAsInt(CUSEC);
+    }
+
+    public void setCusec(int cusec) {
+        setFieldAsInt(CUSEC, cusec);
+    }
+
+    public KerberosTime getCtime() {
+        return getFieldAsTime(CTIME);
+    }
+
+    public void setCtime(KerberosTime ctime) {
+        setFieldAs(CTIME, ctime);
+    }
+
+    public EncryptionKey getSubKey() {
+        return getFieldAs(SUBKEY, EncryptionKey.class);
+    }
+
+    public void setSubKey(EncryptionKey subKey) {
+        setFieldAs(SUBKEY, subKey);
+    }
+
+    public int getSeqNumber() {
+        return getFieldAsInt(SEQ_NUMBER);
+    }
+
+    public void setSeqNumber(Integer seqNumber) {
+        setFieldAsInt(SEQ_NUMBER, seqNumber);
+    }
+
+    public AuthorizationData getAuthorizationData() {
+        return getFieldAs(AUTHORIZATION_DATA, AuthorizationData.class);
+    }
+
+    public void setAuthorizationData(AuthorizationData authorizationData) {
+        setFieldAs(AUTHORIZATION_DATA, authorizationData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/EncAPRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/EncAPRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/EncAPRepPart.java
new file mode 100644
index 0000000..4a0f589
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/ap/EncAPRepPart.java
@@ -0,0 +1,86 @@
+/**
+ *  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.type.ap;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbAppSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+
+/**
+ EncAPRepPart    ::= [APPLICATION 27] SEQUENCE {
+ ctime           [0] KerberosTime,
+ cusec           [1] Microseconds,
+ subkey          [2] EncryptionKey OPTIONAL,
+ seq-number      [3] UInt32 OPTIONAL
+ }
+ */
+public class EncAPRepPart extends KrbAppSequenceType {
+    public static final int TAG = 27;
+    private static final int CTIME = 0;
+    private static final int CUSEC = 1;
+    private static final int SUBKEY = 2;
+    private static final int SEQ_NUMBER = 3;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(CTIME, 0, KerberosTime.class),
+            new ExplicitField(CUSEC, 1, Asn1Integer.class),
+            new ExplicitField(SUBKEY, 2, EncryptionKey.class),
+            new ExplicitField(SEQ_NUMBER, 3, Asn1Integer.class)
+    };
+
+    public EncAPRepPart() {
+        super(TAG, fieldInfos);
+    }
+
+    public KerberosTime getCtime() {
+        return getFieldAsTime(CTIME);
+    }
+
+    public void setCtime(KerberosTime ctime) {
+        setFieldAs(CTIME, ctime);
+    }
+
+    public int getCusec() {
+        return getFieldAsInt(CUSEC);
+    }
+
+    public void setCusec(int cusec) {
+        setFieldAsInt(CUSEC, cusec);
+    }
+
+    public EncryptionKey getSubkey() {
+        return getFieldAs(SUBKEY, EncryptionKey.class);
+    }
+
+    public void setSubkey(EncryptionKey subkey) {
+        setFieldAs(SUBKEY, subkey);
+    }
+
+    public int getSeqNumber() {
+        return getFieldAsInt(SEQ_NUMBER);
+    }
+
+    public void setSeqNumber(Integer seqNumber) {
+        setFieldAsInt(SEQ_NUMBER, seqNumber);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/AuthToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/AuthToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/AuthToken.java
new file mode 100644
index 0000000..5166f9e
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/AuthToken.java
@@ -0,0 +1,144 @@
+/**
+ *  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.type.base;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * This is the token definition API according to TokenPreauth draft.
+ */
+public interface AuthToken {
+
+    /**
+     * Get the token subject
+     * @return token subject
+     */
+    String getSubject();
+
+    /**
+     * Set token subject
+     * @param sub The token subject
+     */
+    void setSubject(String sub);
+
+    /**
+     * Get the token issuer
+     * @return token issuer
+     */
+    String getIssuer();
+
+    /**
+     * Set token issuer
+     * @param issuer The token issuer
+     */
+    void setIssuer(String issuer);
+
+    /**
+     * Get token audiences
+     * @return token audiences
+     */
+    List<String> getAudiences();
+
+    /**
+     * Set token audiences
+     * @param audiences The token audiences
+     */
+    void setAudiences(List<String> audiences);
+
+    /**
+     * Is an Identity Token ?
+     * @return true if it's an identity token, false otherwise
+     */
+    boolean isIdToken();
+
+    void isIdToken(boolean isIdToken);
+
+    /**
+     * Is an Access Token ?
+     * @return true if it's an access token, false otherwise
+     */
+    boolean isAcToken();
+
+    void isAcToken(boolean isAcToken);
+
+    /**
+     * Is a Bearer Token ?
+     * @return true if it's an bearer token, false otherwise
+     */
+    boolean isBearerToken();
+
+    /**
+     * Is an Holder-of-Key Token (HOK) ?
+     * @return true if it's a HOK token, false otherwise
+     */
+    boolean isHolderOfKeyToken();
+
+    /**
+     * Get token expired data time.
+     * @return expired time
+     */
+    Date getExpiredTime();
+
+    /**
+     * Set token expired time
+     * @param exp The token expired time
+     */
+    void setExpirationTime(Date exp);
+
+    /**
+     * Get token not before time.
+     * @return not before time
+     */
+    Date getNotBeforeTime();
+
+    /**
+     * Set token not before time.
+     * @param nbt The time
+     */
+    void setNotBeforeTime(Date nbt);
+
+    /**
+     * Get token issued at time when the token is issued.
+     * @return issued at time
+     */
+    Date getIssueTime();
+
+    /**
+     * Set token issued at time.
+     * @param iat Time time when token issued
+     */
+    void setIssueTime(Date iat);
+
+    /**
+     * Get token attributes.
+     * @return token attributes
+     */
+    Map<String, Object> getAttributes();
+
+    /**
+     * Add a token attribute.
+     * @param name The attribute name
+     * @param value The attribute value
+     */
+    void addAttribute(String name, Object value);
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/CheckSum.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/CheckSum.java
new file mode 100644
index 0000000..f70c426
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/CheckSum.java
@@ -0,0 +1,114 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+import java.util.Arrays;
+
+/**
+ Checksum        ::= SEQUENCE {
+ cksumtype       [0] Int32,
+ checksum        [1] OCTET STRING
+ }
+ */
+public class CheckSum extends KrbSequenceType {
+    private static final int CKSUM_TYPE = 0;
+    private static final int CHECK_SUM = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+        new ExplicitField(CKSUM_TYPE, 0, Asn1Integer.class),
+        new ExplicitField(CHECK_SUM, 1, Asn1OctetString.class)
+    };
+
+    public CheckSum() {
+        super(fieldInfos);
+    }
+
+    public CheckSum(CheckSumType cksumType, byte[] checksum) {
+        this();
+
+        setCksumtype(cksumType);
+        setChecksum(checksum);
+    }
+
+    public CheckSum(int cksumType, byte[] checksum) {
+        this(CheckSumType.fromValue(cksumType), checksum);
+    }
+
+    public CheckSumType getCksumtype() {
+        Integer value = getFieldAsInteger(CKSUM_TYPE);
+        return CheckSumType.fromValue(value);
+    }
+
+    public void setCksumtype(CheckSumType cksumtype) {
+        setFieldAsInt(CKSUM_TYPE, cksumtype.getValue());
+    }
+
+    public byte[] getChecksum() {
+        return getFieldAsOctets(CHECK_SUM);
+    }
+
+    public void setChecksum(byte[] checksum) {
+        setFieldAsOctets(CHECK_SUM, checksum);
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (this == other) {
+            return true;
+        }
+        if (other == null || getClass() != other.getClass()) {
+            return false;
+        }
+
+        CheckSum that = (CheckSum) other;
+
+        if (getCksumtype() != that.getCksumtype()) {
+            return false;
+        }
+
+        return Arrays.equals(getChecksum(), that.getChecksum());
+    }
+    
+    @Override
+    public int hashCode() {
+        int result = 0;
+        if (getCksumtype() != null) {
+            result = 31 * result + getCksumtype().hashCode();
+        }
+        if (getChecksum() != null) {
+            result = 31 * result + Arrays.hashCode(getChecksum());
+        }
+        return result;
+    }
+
+    public boolean isEqual(CheckSum other) {
+        return this.equals(other);
+    }
+
+    public boolean isEqual(byte[] cksumBytes) {
+        return Arrays.equals(getChecksum(), cksumBytes);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/CheckSumType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/CheckSumType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/CheckSumType.java
new file mode 100644
index 0000000..d52093e
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/CheckSumType.java
@@ -0,0 +1,123 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum CheckSumType implements Asn1EnumType {
+    NONE(0, "none", "None checksum type"),
+
+    CRC32(0x0001, "crc32", "CRC-32"),
+
+    RSA_MD4(0x0002, "md4", "RSA-MD4"),
+
+    RSA_MD4_DES(0x0003, "md4-des", "RSA-MD4 with DES cbc mode"),
+
+    DES_CBC(0x0004, "des-cbc", "DES cbc mode"),
+    DES_MAC(0x0004, "des-mac", "DES cbc mode"),
+
+    //des-mac-k
+
+    //rsa-md4-des-k
+
+    RSA_MD5(0x0007, "md5", "RSA-MD5"),
+
+    RSA_MD5_DES(0x0008, "md5-des", "RSA-MD5 with DES cbc mode"),
+
+    NIST_SHA(0x0009, "sha", "NIST-SHA"),
+
+    HMAC_SHA1_DES3(0x000c, "hmac-sha1-des3", "HMAC-SHA1 DES3 key"),
+    HMAC_SHA1_DES3_KD(0x000c, "hmac-sha1-des3-kd", "HMAC-SHA1 DES3 key"),
+
+    ////RFC 3962. Used with ENCTYPE_AES128_CTS_HMAC_SHA1_96
+    HMAC_SHA1_96_AES128(0x000f, "hmac-sha1-96-aes128", "HMAC-SHA1 AES128 key"),
+
+    //RFC 3962. Used with ENCTYPE_AES256_CTS_HMAC_SHA1_96
+    HMAC_SHA1_96_AES256(0x0010, "hmac-sha1-96-aes256", "HMAC-SHA1 AES256 key"),
+
+    //RFC 6803
+    CMAC_CAMELLIA128(0x0011, "cmac-camellia128", "CMAC Camellia128 key"),
+
+    //RFC 6803
+    CMAC_CAMELLIA256(0x0012, "cmac-camellia256", "CMAC Camellia256 key"),
+
+    //Microsoft netlogon cksumtype
+    MD5_HMAC_ARCFOUR(-137, "md5-hmac-rc4", "Microsoft MD5 HMAC"),
+
+    //Microsoft md5 hmac cksumtype
+    HMAC_MD5_ARCFOUR(-138, "hmac-md5-arcfour", "Microsoft HMAC MD5"),
+    HMAC_MD5_ENC(-138, "hmac-md5-enc", "Microsoft HMAC MD5"),
+    HMAC_MD5_RC4(-138, "hmac-md5-rc4", "Microsoft HMAC MD5");
+
+    private final int value;
+
+    private final String name;
+
+    private final String displayName;
+
+    private CheckSumType(int value, String name, String displayName) {
+        this.value = value;
+        this.name = name;
+        this.displayName = displayName;
+    }
+
+    public static CheckSumType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value) {
+                    return (CheckSumType) e;
+                }
+            }
+        }
+        return NONE;
+    }
+
+    public static CheckSumType fromName(String name) {
+        if (name != null) {
+            for (CheckSumType cs : values()) {
+                if (cs.getName().equals(name)) {
+                    return cs;
+                }
+            }
+        }
+        return NONE;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+
+    /**
+     * Is the type uses AES256 or not
+     * @return true if uses AES256, false otherwise.
+     */
+    public boolean usesAES256() {
+        return name.contains("aes256");
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptedData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptedData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptedData.java
new file mode 100644
index 0000000..57a5d2d
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptedData.java
@@ -0,0 +1,115 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+import java.util.Arrays;
+
+/**
+ EncryptedData   ::= SEQUENCE {
+ etype   [0] Int32 -- EncryptionType --,
+ kvno    [1] UInt32 OPTIONAL,
+ cipher  [2] OCTET STRING -- ciphertext
+ }
+ */
+public class EncryptedData extends KrbSequenceType {
+    private static final int ETYPE = 0;
+    private static final int KVNO = 1;
+    private static final int CIPHER = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ETYPE, 0, Asn1Integer.class),
+            new ExplicitField(KVNO, 1, Asn1Integer.class),
+            new ExplicitField(CIPHER, 2, Asn1OctetString.class)
+    };
+
+    public EncryptedData() {
+        super(fieldInfos);
+    }
+
+    public EncryptionType getEType() {
+        Integer value = getFieldAsInteger(ETYPE);
+        return EncryptionType.fromValue(value);
+    }
+
+    public void setEType(EncryptionType eType) {
+        setFieldAsInt(ETYPE, eType.getValue());
+    }
+
+    public int getKvno() {
+        Integer value = getFieldAsInteger(KVNO);
+        if (value != null) {
+            return value.intValue();
+        }
+        return -1;
+    }
+
+    public void setKvno(int kvno) {
+        setFieldAsInt(KVNO, kvno);
+    }
+
+    public byte[] getCipher() {
+        return getFieldAsOctets(CIPHER);
+    }
+
+    public void setCipher(byte[] cipher) {
+        setFieldAsOctets(CIPHER, cipher);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        EncryptedData that = (EncryptedData) o;
+
+        /*
+        if (getKvno() != -1 && that.getKvno() != -1 &&
+                getKvno() != that.getKvno()) return false;
+        */
+
+        if (getEType() != that.getEType()) {
+            return false;
+        }
+
+        return Arrays.equals(getCipher(), that.getCipher());
+    }
+    
+    @Override
+    public int hashCode() {
+        int result = 0;
+        if (getEType() != null) {
+            result = 31 * result + getEType().hashCode();
+        }
+        if (getCipher() != null) {
+            result = 31 * result + Arrays.hashCode(getCipher());
+        }
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptionKey.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptionKey.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptionKey.java
new file mode 100644
index 0000000..044c5c5
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptionKey.java
@@ -0,0 +1,128 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+import java.util.Arrays;
+
+/**
+ EncryptionKey   ::= SEQUENCE {
+ keytype         [0] Int32 -- actually encryption type --,
+ keyvalue        [1] OCTET STRING
+ }
+ */
+public class EncryptionKey extends KrbSequenceType {
+    private static final int KEY_TYPE = 0;
+    private static final int KEY_VALUE = 1;
+
+    private int kvno = -1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(KEY_TYPE, 0, Asn1Integer.class),
+            new ExplicitField(KEY_VALUE, 1, Asn1OctetString.class)
+    };
+
+    public EncryptionKey() {
+        super(fieldInfos);
+    }
+
+    public EncryptionKey(int keyType, byte[] keyData) {
+        this(keyType, keyData, -1);
+    }
+
+    public EncryptionKey(int keyType, byte[] keyData, int kvno) {
+        this(EncryptionType.fromValue(keyType), keyData, kvno);
+    }
+
+    public EncryptionKey(EncryptionType keyType, byte[] keyData) {
+        this(keyType, keyData, -1);
+    }
+
+    public EncryptionKey(EncryptionType keyType, byte[] keyData, int kvno) {
+        this();
+        setKeyType(keyType);
+        setKeyData(keyData);
+        setKvno(kvno);
+    }
+
+    public EncryptionType getKeyType() {
+        Integer value = getFieldAsInteger(KEY_TYPE);
+        return EncryptionType.fromValue(value);
+    }
+
+    public void setKeyType(EncryptionType keyType) {
+        setFieldAsInt(KEY_TYPE, keyType.getValue());
+    }
+
+    public byte[] getKeyData() {
+        return getFieldAsOctets(KEY_VALUE);
+    }
+
+    public void setKeyData(byte[] keyData) {
+        setFieldAsOctets(KEY_VALUE, keyData);
+    }
+
+    public void setKvno(int kvno) {
+        this.kvno = kvno;
+    }
+
+    public int getKvno() {
+        return kvno;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        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 (getKeyType() != that.getKeyType()) {
+            return false;
+        }
+
+        return Arrays.equals(getKeyData(), that.getKeyData());
+    }
+    
+    @Override
+    public int hashCode() {
+        int result = kvno;
+        if (getKeyType() != null) {
+            result = 31 * result + getKeyType().hashCode();
+        }
+        if (getKeyData() != null) {
+            result = 31 * result + Arrays.hashCode(getKeyData());
+        }
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptionType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptionType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptionType.java
new file mode 100644
index 0000000..0154d55
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EncryptionType.java
@@ -0,0 +1,140 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+/**
+ * According to krb5.hin
+ */
+public enum EncryptionType implements Asn1EnumType {
+
+    NONE(0, "none", "None encryption type"),
+
+    DES_CBC_CRC(0x0001, "des-cbc-crc", "DES cbc mode with CRC-32"),
+
+    DES_CBC_MD4(0x0002, "des-cbc-md4", "DES cbc mode with RSA-MD4"),
+
+    DES_CBC_MD5(0x0003, "des-cbc-md5", "DES cbc mode with RSA-MD5"),
+    DES(0x0003, "des", "DES cbc mode with RSA-MD5"),
+
+    DES_CBC_RAW(0x0004, "des-cbc-raw", "DES cbc mode raw"),
+
+    DES3_CBC_SHA(0x0005, "des3-cbc-sha", "DES-3 cbc with SHA1"),
+
+    DES3_CBC_RAW(0x0006, "des3-cbc-raw", "Triple DES cbc mode raw"),
+
+    DES_HMAC_SHA1(0x0008, "des-hmac-sha1", "DES with HMAC/sha1"),
+
+    DSA_SHA1_CMS(0x0009, "dsa-sha1-cms", "DSA with SHA1, CMS signature"),
+
+    MD5_RSA_CMS(0x000a, "md5-rsa-cms", "MD5 with RSA, CMS signature"),
+
+    SHA1_RSA_CMS(0x000b, "sha1-rsa-cms", "SHA1 with RSA, CMS signature"),
+
+    RC2_CBC_ENV(0x000c, "rc2-cbc-env", "RC2 cbc mode, CMS enveloped data"),
+
+    RSA_ENV(0x000d, "rsa-env", "RSA encryption, CMS enveloped data"),
+
+    RSA_ES_OAEP_ENV(0x000e, "rsa-es-oaep-env", "RSA w/OEAP encryption, CMS enveloped data"),
+
+    DES3_CBC_ENV(0x000f, "des3-cbc-env", "DES-3 cbc mode, CMS enveloped data"),
+
+    DES3_CBC_SHA1(0x0010, "des3-cbc-sha1", "Triple DES cbc mode with HMAC/sha1"),
+    DES3_HMAC_SHA1(0x0010, "des3-hmac-sha1", "Triple DES cbc mode with HMAC/sha1"),
+    DES3_CBC_SHA1_KD(0x0010, "des3-cbc-sha1-kd", "Triple DES cbc mode with HMAC/sha1"),
+
+    AES128_CTS_HMAC_SHA1_96 (0x0011, "aes128-cts-hmac-sha1-96", "AES-128 CTS mode with 96-bit SHA-1 HMAC"),
+    AES128_CTS (0x0011, "aes128-cts", "AES-128 CTS mode with 96-bit SHA-1 HMAC"),
+
+    AES256_CTS_HMAC_SHA1_96(0x0012, "aes256-cts-hmac-sha1-96", "AES-256 CTS mode with 96-bit SHA-1 HMAC"),
+    AES256_CTS(0x0012, "aes256-cts", "AES-256 CTS mode with 96-bit SHA-1 HMAC"),
+
+    ARCFOUR_HMAC(0x0017, "arcfour-hmac", "ArcFour with HMAC/md5"),
+    RC4_HMAC(0x0017, "rc4-hmac", "ArcFour with HMAC/md5"),
+    ARCFOUR_HMAC_MD5(0x0017, "arcfour-hmac-md5", "ArcFour with HMAC/md5"),
+
+    ARCFOUR_HMAC_EXP(0x0018, "arcfour-hmac-exp", "Exportable ArcFour with HMAC/md5"),
+    RC4_HMAC_EXP(0x0018, "rc4-hmac-exp", "Exportable ArcFour with HMAC/md5"),
+    ARCFOUR_HMAC_MD5_EXP(0x0018, "arcfour-hmac-md5-exp", "Exportable ArcFour with HMAC/md5"),
+
+    CAMELLIA128_CTS_CMAC(0x0019, "camellia128-cts-cmac", "Camellia-128 CTS mode with CMAC"),
+    CAMELLIA128_CTS(0x0019, "camellia128-cts", "Camellia-128 CTS mode with CMAC"),
+
+    CAMELLIA256_CTS_CMAC(0x001a, "camellia256-cts-cmac", "Camellia-256 CTS mode with CMAC"),
+    CAMELLIA256_CTS(0x001a, "camellia256-cts", "Camellia-256 CTS mode with CMAC");
+
+    //UNKNOWN(0x01ff, "UNKNOWN", "Unknown encryption type");
+
+    private final int value;
+
+    private final String name;
+
+    private final String displayName;
+
+    private EncryptionType(int value, String name, String displayName) {
+        this.value = value;
+        this.name = name;
+        this.displayName = displayName;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+
+    /**
+     * Is the type uses AES256 or not
+     * @return true if uses AES256, false otherwise.
+     */
+    public boolean usesAES256() {
+        return name.contains("aes256");
+    }
+
+    public static EncryptionType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value) {
+                    return (EncryptionType) e;
+                }
+            }
+        }
+        return NONE;
+    }
+
+    public static EncryptionType fromName(String name) {
+        if (name != null) {
+            for (EncryptionType e : values()) {
+                if (e.getName().equals(name)) {
+                    return (EncryptionType) e;
+                }
+            }
+        }
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo.java
new file mode 100644
index 0000000..f37fa11
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo.java
@@ -0,0 +1,29 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ ETYPE-INFO              ::= SEQUENCE OF ETYPE-INFO-ENTRY
+ */
+public class EtypeInfo extends KrbSequenceOfType<EtypeInfoEntry> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo2.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo2.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo2.java
new file mode 100644
index 0000000..95b53ce
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo2.java
@@ -0,0 +1,29 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ ETYPE-INFO2             ::= SEQUENCE SIZE (1..MAX) OF ETYPE-INFO2-ENTRY
+ */
+public class EtypeInfo2 extends KrbSequenceOfType<EtypeInfo2Entry> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo2Entry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo2Entry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo2Entry.java
new file mode 100644
index 0000000..464f1b2
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfo2Entry.java
@@ -0,0 +1,74 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ ETYPE-INFO2-ENTRY       ::= SEQUENCE {
+ etype           [0] Int32,
+ salt            [1] KerberosString OPTIONAL,
+ s2kparams       [2] OCTET STRING OPTIONAL
+ }
+ */
+public class EtypeInfo2Entry extends KrbSequenceType {
+    private static final int ETYPE = 0;
+    private static final int SALT = 1;
+    private static final int S2KPARAMS = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ETYPE, 0, Asn1Integer.class),
+            new ExplicitField(SALT, 1, KerberosString.class),
+            new ExplicitField(S2KPARAMS, 2, Asn1OctetString.class)
+    };
+
+    public EtypeInfo2Entry() {
+        super(fieldInfos);
+    }
+
+    public EncryptionType getEtype() {
+        return EncryptionType.fromValue(getFieldAsInt(ETYPE));
+    }
+
+    public void setEtype(EncryptionType etype) {
+        setField(ETYPE, etype);
+    }
+
+    public String getSalt() {
+        return getFieldAsString(SALT);
+    }
+
+    public void setSalt(String salt) {
+        setFieldAsString(SALT, salt);
+    }
+
+    public byte[] getS2kParams() {
+        return getFieldAsOctets(S2KPARAMS);
+    }
+
+    public void setS2kParams(byte[] s2kParams) {
+        setFieldAsOctets(S2KPARAMS, s2kParams);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfoEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfoEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfoEntry.java
new file mode 100644
index 0000000..9c8d4ea
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/EtypeInfoEntry.java
@@ -0,0 +1,62 @@
+/**
+ *  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.type.base;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ ETYPE-INFO-ENTRY        ::= SEQUENCE {
+ etype           [0] Int32,
+ salt            [1] OCTET STRING OPTIONAL
+ }
+ */
+public class EtypeInfoEntry extends KrbSequenceType {
+    private static final int ETYPE = 0;
+    private static final int SALT = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ETYPE, 0, Asn1Integer.class),
+            new ExplicitField(SALT, 1, Asn1OctetString.class)
+    };
+
+    public EtypeInfoEntry() {
+        super(fieldInfos);
+    }
+
+    public EncryptionType getEtype() {
+        return EncryptionType.fromValue(getFieldAsInt(ETYPE));
+    }
+
+    public void setEtype(EncryptionType etype) {
+        setField(ETYPE, etype);
+    }
+
+    public byte[] getSalt() {
+        return getFieldAsOctets(SALT);
+    }
+
+    public void setSalt(byte[] salt) {
+        setFieldAsOctets(SALT, salt);
+    }
+}


[18/19] directory-kerby git commit: Better supporting any type

Posted by pl...@apache.org.
Better supporting any type


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

Branch: refs/heads/pkinit-support
Commit: 78f67dc07b2e7b4c1133c83f78f47fbe2da91688
Parents: 8483322
Author: Kai Zheng <ka...@intel.com>
Authored: Mon Nov 30 10:29:27 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Mon Nov 30 10:29:27 2015 +0800

----------------------------------------------------------------------
 .../src/main/java/org/apache/kerby/asn1/type/Asn1Any.java |  1 -
 .../org/apache/kerby/asn1/type/Asn1CollectionType.java    | 10 ++++++----
 .../main/java/org/apache/kerby/cms/type/ContentInfo.java  |  4 ++--
 .../org/apache/kerby/cms/type/OtherCertificateFormat.java |  4 ++--
 .../apache/kerby/cms/type/OtherRevocationInfoFormat.java  |  4 ++--
 .../org/apache/kerby/x500/type/AttributeTypeAndValue.java |  4 ++--
 .../org/apache/kerby/x509/type/AlgorithmIdentifier.java   |  4 ++--
 .../main/java/org/apache/kerby/x509/type/OtherName.java   |  4 ++--
 .../org/apache/kerby/x509/type/PolicyQualifierInfo.java   |  4 ++--
 9 files changed, 20 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/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 b04b4e1..73a82c7 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
@@ -69,7 +69,6 @@ public class Asn1Any extends AbstractAsn1Type<Asn1Type> {
         // Not used
     }
 
-    // Available for encoding phase.
     protected <T extends Asn1Type> T getValueAs(Class<T> t) {
         Asn1Type value = getValue();
         if (value == null) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/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 82f360b..72278d3 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
@@ -176,11 +176,13 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
         setFieldAs(index, new Asn1Integer(value));
     }
 
-    protected Asn1Type getFieldAsAny(int index) {
-        Asn1Any any = getFieldAs(index, Asn1Any.class);
-        if (any != null) {
-            return any.getValue();
+    protected <T extends Asn1Type> T getFieldAsAny(int index, Class<T> t) {
+        Asn1Type value = fields[index];
+        if (value != null && value instanceof Asn1Any) {
+            Asn1Any any = (Asn1Any) value;
+            return any.getValueAs(t);
         }
+
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java
index 5244c8f..19c17ea 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/ContentInfo.java
@@ -59,8 +59,8 @@ public class ContentInfo extends Asn1SequenceType {
         setFieldAs(CONTENT_TYPE, contentType);
     }
 
-    public Asn1Type getContent() {
-        return getFieldAsAny(CONTENT);
+    public <T extends Asn1Type> T getContentAs(Class<T> t) {
+        return getFieldAsAny(CONTENT, t);
     }
 
     public void setContent(Asn1Type content) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java
index 239848e..74f2d7c 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherCertificateFormat.java
@@ -53,8 +53,8 @@ public class OtherCertificateFormat extends Asn1SequenceType {
         setFieldAs(OTHER_CERT_FORMAT, otherCertFormat);
     }
 
-    public Asn1Type getOtherCert() {
-        return getFieldAsAny(OTHER_CERT);
+    public <T extends Asn1Type> T getOtherCertAs(Class<T> t) {
+        return getFieldAsAny(OTHER_CERT, t);
     }
 
     public void setOtherCert(Asn1Type otherCert) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java
index bf0f53e..e320a09 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/OtherRevocationInfoFormat.java
@@ -52,8 +52,8 @@ public class OtherRevocationInfoFormat extends Asn1SequenceType {
         setFieldAs(OTHER_REV_INFO_FORMAT, otherRevInfoFormat);
     }
 
-    public Asn1Type getOtherRevInfo() {
-        return getFieldAsAny(OTHER_REV_INFO);
+    public <T extends Asn1Type> T getOtherRevInfoAs(Class<T> t) {
+        return getFieldAsAny(OTHER_REV_INFO, t);
     }
 
     public void setOtherRevInfo(Asn1Type otherRevInfo) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java b/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java
index 3f0c2d8..fd4d40c 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x500/type/AttributeTypeAndValue.java
@@ -53,8 +53,8 @@ public class AttributeTypeAndValue extends Asn1SequenceType {
         setFieldAs(TYPE, type);
     }
 
-    public Asn1Type getAttributeValue() {
-        return getFieldAsAny(VALUE);
+    public <T extends Asn1Type> T getAttributeValueAs(Class<T> t) {
+        return getFieldAsAny(VALUE, t);
     }
 
     public void setAttributeValue(Asn1Type value) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
index 14bac49..8fd4db2 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
@@ -52,8 +52,8 @@ public class AlgorithmIdentifier extends Asn1SequenceType {
         setFieldAs(ALGORITHM, algorithm);
     }
 
-    public Asn1Type getParameters() {
-        return getFieldAsAny(PARAMETERS);
+    public <T extends Asn1Type> T getParametersAs(Class<T> t) {
+        return getFieldAsAny(PARAMETERS, t);
     }
 
     public void setParameters(Asn1Type parameters) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java
index 2933161..de21159 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/OtherName.java
@@ -56,8 +56,8 @@ public class OtherName extends Asn1SequenceType {
         setFieldAs(TYPE_ID, algorithm);
     }
 
-    public Asn1Type getOtherNameValue() {
-        return getFieldAsAny(VALUE);
+    public <T extends Asn1Type> T getOtherNameValueAs(Class<T> t) {
+        return getFieldAsAny(VALUE, t);
     }
 
     public void setOtherNameValue(Asn1Type value) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/78f67dc0/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java
index ef75f0f..0f9434c 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/PolicyQualifierInfo.java
@@ -56,8 +56,8 @@ public class PolicyQualifierInfo extends Asn1SequenceType {
         setFieldAs(POLICY_QUALIFIER_ID, policyQualifierId);
     }
 
-    public Asn1Type getQualifier() {
-        return getFieldAsAny(QUALIFIER);
+    public <T extends Asn1Type> T getQualifierAs(Class<T> t) {
+        return getFieldAsAny(QUALIFIER, t);
     }
 
     public void setQualifier(Asn1Type qualifier) {


[17/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS


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

Branch: refs/heads/pkinit-support
Commit: 8483322e58310ff33685a1f3893b71e7cf5f246f
Parents: 1d41d3a
Author: Kai Zheng <ka...@intel.com>
Authored: Sun Nov 29 08:01:40 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sun Nov 29 08:01:40 2015 +0800

----------------------------------------------------------------------
 .../kerby/benchmark/KrbCodecBenchmark.java      |   2 +-
 .../identitybackend/JsonIdentityBackend.java    |   6 +-
 .../typeAdapter/EncryptionKeyAdapter.java       |   2 +-
 .../typeAdapter/KerberosTimeAdapter.java        |   2 +-
 .../typeAdapter/PrincipalNameAdapter.java       |   2 +-
 .../identitybackend/LdapIdentityBackend.java    |   6 +-
 .../identitybackend/LdapIdentityGetHelper.java  |   6 +-
 .../org/apache/kerby/KrbIdentitySerializer.java |   6 +-
 .../apache/kerby/KrbIdentitySerializerTest.java |   6 +-
 .../kdc/identitybackend/IdentityZNode.java      |   8 +-
 .../apache/kerby/kerberos/kdc/KerbyKdcTest.java |   4 +-
 .../kerberos/kdc/WithAccessTokenKdcTest.java    |   2 +-
 .../kerberos/kdc/WithIdentityTokenKdcTest.java  |   4 +-
 .../kerberos/kdc/WithTokenKdcTestBase.java      |  10 +-
 .../test/jaas/TokenAuthLoginModule.java         |   8 +-
 .../integration/test/TokenLoginTestBase.java    |   4 +-
 .../kerby/kerberos/kerb/admin/AdminHelper.java  |   8 +-
 .../kerby/kerberos/kerb/admin/Kadmin.java       |   4 +-
 .../kerby/kerberos/kerb/client/KrbClient.java   |   4 +-
 .../kerby/kerberos/kerb/client/KrbConfig.java   |   2 +-
 .../kerby/kerberos/kerb/client/KrbHandler.java  |  22 +-
 .../kerberos/kerb/client/KrbPkinitClient.java   |   2 +-
 .../kerberos/kerb/client/KrbTokenClient.java    |   6 +-
 .../client/impl/AbstractInternalKrbClient.java  |   8 +-
 .../client/impl/DefaultInternalKrbClient.java   |   4 +-
 .../kerb/client/impl/InternalKrbClient.java     |   4 +-
 .../client/preauth/AbstractPreauthPlugin.java   |   8 +-
 .../client/preauth/KrbFastRequestState.java     |   8 +-
 .../kerb/client/preauth/KrbPreauth.java         |   8 +-
 .../kerb/client/preauth/PreauthContext.java     |   4 +-
 .../kerb/client/preauth/PreauthHandle.java      |   6 +-
 .../kerb/client/preauth/PreauthHandler.java     |   6 +-
 .../client/preauth/builtin/EncTsPreauth.java    |  12 +-
 .../kerb/client/preauth/builtin/TgtPreauth.java |   6 +-
 .../client/preauth/pkinit/PkinitPreauth.java    |  24 +-
 .../preauth/pkinit/PkinitRequestContext.java    |   2 +-
 .../kerb/client/preauth/token/TokenContext.java |   2 +-
 .../kerb/client/preauth/token/TokenPreauth.java |  20 +-
 .../preauth/token/TokenRequestContext.java      |   2 +-
 .../kerb/client/request/ArmoredAsRequest.java   |   2 +-
 .../kerb/client/request/ArmoredRequest.java     |  40 +--
 .../kerb/client/request/ArmoredTgsRequest.java  |   2 +-
 .../kerberos/kerb/client/request/AsRequest.java |  22 +-
 .../kerb/client/request/AsRequestWithCert.java  |   2 +-
 .../client/request/AsRequestWithKeytab.java     |   4 +-
 .../client/request/AsRequestWithPasswd.java     |   4 +-
 .../kerb/client/request/AsRequestWithToken.java |   2 +-
 .../kerb/client/request/KdcRequest.java         |  28 +-
 .../kerb/client/request/TgsRequest.java         |  18 +-
 .../kerb/client/request/TgsRequestWithTgt.java  |  24 +-
 .../client/request/TgsRequestWithToken.java     |   6 +-
 .../kerberos/kerb/client/TestKrbConfigLoad.java |   2 +-
 .../kerby/kerberos/kerb/auth/AuthContext.java   |   8 +-
 .../kerberos/kerb/common/CheckSumUtil.java      |   8 +-
 .../kerberos/kerb/common/EncryptionUtil.java    |   8 +-
 .../kerby/kerberos/kerb/common/Krb5Conf.java    |   2 +-
 .../kerberos/kerb/common/KrbErrorUtil.java      |  18 +-
 .../kerby/kerberos/kerb/common/KrbUtil.java     |   4 +-
 .../kerb/preauth/PreauthPluginMeta.java         |   2 +-
 .../kerb/preauth/builtin/EncTsPreauthMeta.java  |   2 +-
 .../kerb/preauth/builtin/TgtPreauthMeta.java    |   2 +-
 .../kerb/preauth/pkinit/PkinitIdenity.java      |   2 +-
 .../kerb/preauth/pkinit/PkinitPreauthMeta.java  |   2 +-
 .../kerb/preauth/pkinit/PluginOpts.java         |   4 +-
 .../kerb/preauth/token/TokenPreauthMeta.java    |   2 +-
 .../kerby/kerberos/kerb/codec/CodecTest.java    |   4 +-
 .../kerberos/kerb/codec/TestAsRepCodec.java     |  10 +-
 .../kerberos/kerb/codec/TestAsReqCodec.java     |  22 +-
 .../kerberos/kerb/codec/TestTgsRepCodec.java    |  10 +-
 .../kerberos/kerb/codec/TestTgsReqCodec.java    |  18 +-
 .../apache/kerby/kerberos/kerb/KrbCodec.java    |  16 +-
 .../kerby/kerberos/kerb/KrbErrorException.java  |   2 +-
 .../kerberos/kerb/provider/TokenDecoder.java    |   2 +-
 .../kerberos/kerb/provider/TokenEncoder.java    |   2 +-
 .../kerberos/kerb/provider/TokenFactory.java    |   2 +-
 .../kerberos/kerb/spec/KerberosString.java      |  35 --
 .../kerberos/kerb/spec/KerberosStrings.java     |  43 ---
 .../kerby/kerberos/kerb/spec/KerberosTime.java  | 160 ---------
 .../kerberos/kerb/spec/KrbAppSequenceType.java  |  57 ----
 .../kerby/kerberos/kerb/spec/KrbIntegers.java   |  54 ---
 .../kerberos/kerb/spec/KrbSequenceOfType.java   |  43 ---
 .../kerberos/kerb/spec/KrbSequenceType.java     |  55 ---
 .../kerby/kerberos/kerb/spec/ad/AdToken.java    |  51 ---
 .../kerb/spec/ad/AuthorizationData.java         |  32 --
 .../kerb/spec/ad/AuthorizationDataEntry.java    |  63 ----
 .../kerb/spec/ad/AuthorizationType.java         | 143 --------
 .../kerby/kerberos/kerb/spec/ap/ApOption.java   |  58 ----
 .../kerby/kerberos/kerb/spec/ap/ApOptions.java  |  33 --
 .../kerby/kerberos/kerb/spec/ap/ApRep.java      |  66 ----
 .../kerby/kerberos/kerb/spec/ap/ApReq.java      |  90 -----
 .../kerberos/kerb/spec/ap/Authenticator.java    | 145 --------
 .../kerberos/kerb/spec/ap/EncAPRepPart.java     |  86 -----
 .../kerberos/kerb/spec/base/AuthToken.java      | 144 --------
 .../kerby/kerberos/kerb/spec/base/CheckSum.java | 114 -------
 .../kerberos/kerb/spec/base/CheckSumType.java   | 123 -------
 .../kerberos/kerb/spec/base/EncryptedData.java  | 115 -------
 .../kerberos/kerb/spec/base/EncryptionKey.java  | 128 -------
 .../kerberos/kerb/spec/base/EncryptionType.java | 140 --------
 .../kerberos/kerb/spec/base/EtypeInfo.java      |  29 --
 .../kerberos/kerb/spec/base/EtypeInfo2.java     |  29 --
 .../kerb/spec/base/EtypeInfo2Entry.java         |  74 ----
 .../kerberos/kerb/spec/base/EtypeInfoEntry.java |  62 ----
 .../kerberos/kerb/spec/base/HostAddrType.java   | 100 ------
 .../kerberos/kerb/spec/base/HostAddress.java    | 110 ------
 .../kerberos/kerb/spec/base/HostAddresses.java  |  43 ---
 .../kerby/kerberos/kerb/spec/base/KeyUsage.java | 129 -------
 .../kerby/kerberos/kerb/spec/base/KrbError.java | 167 ---------
 .../kerberos/kerb/spec/base/KrbMessage.java     |  54 ---
 .../kerberos/kerb/spec/base/KrbMessageType.java |  59 ----
 .../kerby/kerberos/kerb/spec/base/KrbToken.java | 335 -------------------
 .../kerby/kerberos/kerb/spec/base/LastReq.java  |  32 --
 .../kerberos/kerb/spec/base/LastReqEntry.java   |  63 ----
 .../kerberos/kerb/spec/base/LastReqType.java    |  62 ----
 .../kerberos/kerb/spec/base/MethodData.java     |  30 --
 .../kerby/kerberos/kerb/spec/base/NameType.java |  54 ---
 .../kerberos/kerb/spec/base/PrincipalName.java  | 202 -----------
 .../kerby/kerberos/kerb/spec/base/Realm.java    |  34 --
 .../kerby/kerberos/kerb/spec/base/SamType.java  |  65 ----
 .../kerberos/kerb/spec/base/TokenFormat.java    |  50 ---
 .../kerb/spec/base/TransitedEncoding.java       |  63 ----
 .../kerb/spec/base/TransitedEncodingType.java   |  51 ---
 .../kerberos/kerb/spec/fast/ArmorType.java      |  50 ---
 .../kerberos/kerb/spec/fast/FastOption.java     |  51 ---
 .../kerberos/kerb/spec/fast/FastOptions.java    |  33 --
 .../kerberos/kerb/spec/fast/KrbFastArmor.java   |  65 ----
 .../kerb/spec/fast/KrbFastArmoredRep.java       |  53 ---
 .../kerb/spec/fast/KrbFastArmoredReq.java       |  96 ------
 .../kerb/spec/fast/KrbFastFinished.java         |  83 -----
 .../kerberos/kerb/spec/fast/KrbFastReq.java     |  79 -----
 .../kerb/spec/fast/KrbFastResponse.java         |  91 -----
 .../kerberos/kerb/spec/fast/PaAuthnEntry.java   |  81 -----
 .../kerberos/kerb/spec/fast/PaAuthnSet.java     |  29 --
 .../kerberos/kerb/spec/fast/PaFxFastReply.java  |  49 ---
 .../kerb/spec/fast/PaFxFastRequest.java         |  49 ---
 .../kerby/kerberos/kerb/spec/kdc/AsRep.java     |  32 --
 .../kerby/kerberos/kerb/spec/kdc/AsReq.java     |  31 --
 .../kerberos/kerb/spec/kdc/EncAsRepPart.java    |  31 --
 .../kerberos/kerb/spec/kdc/EncKdcRepPart.java   | 178 ----------
 .../kerberos/kerb/spec/kdc/EncTgsRepPart.java   |  31 --
 .../kerby/kerberos/kerb/spec/kdc/KdcOption.java |  79 -----
 .../kerberos/kerb/spec/kdc/KdcOptions.java      |  33 --
 .../kerby/kerberos/kerb/spec/kdc/KdcRep.java    | 117 -------
 .../kerby/kerberos/kerb/spec/kdc/KdcReq.java    |  77 -----
 .../kerberos/kerb/spec/kdc/KdcReqBody.java      | 214 ------------
 .../kerby/kerberos/kerb/spec/kdc/TgsRep.java    |  31 --
 .../kerby/kerberos/kerb/spec/kdc/TgsReq.java    |  32 --
 .../kerb/spec/pa/PaAuthenticationSet.java       |  29 --
 .../kerb/spec/pa/PaAuthenticationSetElem.java   |  75 -----
 .../kerby/kerberos/kerb/spec/pa/PaData.java     |  41 ---
 .../kerberos/kerb/spec/pa/PaDataEntry.java      |  70 ----
 .../kerby/kerberos/kerb/spec/pa/PaDataType.java |  92 -----
 .../kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java |  67 ----
 .../kerberos/kerb/spec/pa/otp/OtpTokenInfo.java |  70 ----
 .../kerb/spec/pa/otp/PaOtpChallenge.java        |  56 ----
 .../spec/pa/pkinit/AdInitialVerifiedCas.java    |  28 --
 .../spec/pa/pkinit/AlgorithmIdentifiers.java    |  30 --
 .../kerberos/kerb/spec/pa/pkinit/AuthPack.java  |  83 -----
 .../kerberos/kerb/spec/pa/pkinit/DHNonce.java   |  28 --
 .../kerberos/kerb/spec/pa/pkinit/DHRepInfo.java |  62 ----
 .../pa/pkinit/ExternalPrincipalIdentifier.java  |  72 ----
 .../kerb/spec/pa/pkinit/KdcDHKeyInfo.java       |  66 ----
 .../kerb/spec/pa/pkinit/Krb5PrincipalName.java  |  62 ----
 .../kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java |  62 ----
 .../kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java |  73 ----
 .../kerb/spec/pa/pkinit/PkAuthenticator.java    |  92 -----
 .../kerb/spec/pa/pkinit/ReplyKeyPack.java       |  62 ----
 .../kerb/spec/pa/pkinit/TdDhParameters.java     |  26 --
 .../kerb/spec/pa/pkinit/TrustedCertifiers.java  |  29 --
 .../kerb/spec/pa/token/PaTokenChallenge.java    |  41 ---
 .../kerb/spec/pa/token/PaTokenRequest.java      |  62 ----
 .../kerberos/kerb/spec/pa/token/TokenFlag.java  |  51 ---
 .../kerberos/kerb/spec/pa/token/TokenFlags.java |  39 ---
 .../kerberos/kerb/spec/pa/token/TokenInfo.java  |  63 ----
 .../kerberos/kerb/spec/pa/token/TokenInfos.java |  29 --
 .../kerb/spec/ticket/EncTicketPart.java         | 169 ----------
 .../kerberos/kerb/spec/ticket/KrbTicket.java    |  49 ---
 .../kerberos/kerb/spec/ticket/SgtTicket.java    |  31 --
 .../kerberos/kerb/spec/ticket/TgtTicket.java    |  39 ---
 .../kerby/kerberos/kerb/spec/ticket/Ticket.java | 100 ------
 .../kerberos/kerb/spec/ticket/TicketFlag.java   |  62 ----
 .../kerberos/kerb/spec/ticket/TicketFlags.java  |  39 ---
 .../kerberos/kerb/spec/ticket/Tickets.java      |  29 --
 .../kerberos/kerb/type/KerberosString.java      |  35 ++
 .../kerberos/kerb/type/KerberosStrings.java     |  43 +++
 .../kerby/kerberos/kerb/type/KerberosTime.java  | 160 +++++++++
 .../kerberos/kerb/type/KrbAppSequenceType.java  |  57 ++++
 .../kerby/kerberos/kerb/type/KrbIntegers.java   |  54 +++
 .../kerberos/kerb/type/KrbSequenceOfType.java   |  43 +++
 .../kerberos/kerb/type/KrbSequenceType.java     |  55 +++
 .../kerby/kerberos/kerb/type/ad/AdToken.java    |  51 +++
 .../kerb/type/ad/AuthorizationData.java         |  32 ++
 .../kerb/type/ad/AuthorizationDataEntry.java    |  63 ++++
 .../kerb/type/ad/AuthorizationType.java         | 143 ++++++++
 .../kerby/kerberos/kerb/type/ap/ApOption.java   |  58 ++++
 .../kerby/kerberos/kerb/type/ap/ApOptions.java  |  33 ++
 .../kerby/kerberos/kerb/type/ap/ApRep.java      |  66 ++++
 .../kerby/kerberos/kerb/type/ap/ApReq.java      |  90 +++++
 .../kerberos/kerb/type/ap/Authenticator.java    | 145 ++++++++
 .../kerberos/kerb/type/ap/EncAPRepPart.java     |  86 +++++
 .../kerberos/kerb/type/base/AuthToken.java      | 144 ++++++++
 .../kerby/kerberos/kerb/type/base/CheckSum.java | 114 +++++++
 .../kerberos/kerb/type/base/CheckSumType.java   | 123 +++++++
 .../kerberos/kerb/type/base/EncryptedData.java  | 115 +++++++
 .../kerberos/kerb/type/base/EncryptionKey.java  | 128 +++++++
 .../kerberos/kerb/type/base/EncryptionType.java | 140 ++++++++
 .../kerberos/kerb/type/base/EtypeInfo.java      |  29 ++
 .../kerberos/kerb/type/base/EtypeInfo2.java     |  29 ++
 .../kerb/type/base/EtypeInfo2Entry.java         |  74 ++++
 .../kerberos/kerb/type/base/EtypeInfoEntry.java |  62 ++++
 .../kerberos/kerb/type/base/HostAddrType.java   | 100 ++++++
 .../kerberos/kerb/type/base/HostAddress.java    | 110 ++++++
 .../kerberos/kerb/type/base/HostAddresses.java  |  43 +++
 .../kerby/kerberos/kerb/type/base/KeyUsage.java | 129 +++++++
 .../kerby/kerberos/kerb/type/base/KrbError.java | 167 +++++++++
 .../kerberos/kerb/type/base/KrbMessage.java     |  54 +++
 .../kerberos/kerb/type/base/KrbMessageType.java |  59 ++++
 .../kerby/kerberos/kerb/type/base/KrbToken.java | 335 +++++++++++++++++++
 .../kerby/kerberos/kerb/type/base/LastReq.java  |  32 ++
 .../kerberos/kerb/type/base/LastReqEntry.java   |  63 ++++
 .../kerberos/kerb/type/base/LastReqType.java    |  62 ++++
 .../kerberos/kerb/type/base/MethodData.java     |  30 ++
 .../kerby/kerberos/kerb/type/base/NameType.java |  54 +++
 .../kerberos/kerb/type/base/PrincipalName.java  | 202 +++++++++++
 .../kerby/kerberos/kerb/type/base/Realm.java    |  34 ++
 .../kerby/kerberos/kerb/type/base/SamType.java  |  65 ++++
 .../kerberos/kerb/type/base/TokenFormat.java    |  50 +++
 .../kerb/type/base/TransitedEncoding.java       |  63 ++++
 .../kerb/type/base/TransitedEncodingType.java   |  51 +++
 .../kerberos/kerb/type/fast/ArmorType.java      |  50 +++
 .../kerberos/kerb/type/fast/FastOption.java     |  51 +++
 .../kerberos/kerb/type/fast/FastOptions.java    |  33 ++
 .../kerberos/kerb/type/fast/KrbFastArmor.java   |  65 ++++
 .../kerb/type/fast/KrbFastArmoredRep.java       |  53 +++
 .../kerb/type/fast/KrbFastArmoredReq.java       |  96 ++++++
 .../kerb/type/fast/KrbFastFinished.java         |  83 +++++
 .../kerberos/kerb/type/fast/KrbFastReq.java     |  79 +++++
 .../kerb/type/fast/KrbFastResponse.java         |  91 +++++
 .../kerberos/kerb/type/fast/PaAuthnEntry.java   |  81 +++++
 .../kerberos/kerb/type/fast/PaAuthnSet.java     |  29 ++
 .../kerberos/kerb/type/fast/PaFxFastReply.java  |  49 +++
 .../kerb/type/fast/PaFxFastRequest.java         |  49 +++
 .../kerby/kerberos/kerb/type/kdc/AsRep.java     |  32 ++
 .../kerby/kerberos/kerb/type/kdc/AsReq.java     |  31 ++
 .../kerberos/kerb/type/kdc/EncAsRepPart.java    |  31 ++
 .../kerberos/kerb/type/kdc/EncKdcRepPart.java   | 178 ++++++++++
 .../kerberos/kerb/type/kdc/EncTgsRepPart.java   |  31 ++
 .../kerby/kerberos/kerb/type/kdc/KdcOption.java |  79 +++++
 .../kerberos/kerb/type/kdc/KdcOptions.java      |  33 ++
 .../kerby/kerberos/kerb/type/kdc/KdcRep.java    | 117 +++++++
 .../kerby/kerberos/kerb/type/kdc/KdcReq.java    |  77 +++++
 .../kerberos/kerb/type/kdc/KdcReqBody.java      | 214 ++++++++++++
 .../kerby/kerberos/kerb/type/kdc/TgsRep.java    |  31 ++
 .../kerby/kerberos/kerb/type/kdc/TgsReq.java    |  32 ++
 .../kerb/type/pa/PaAuthenticationSet.java       |  29 ++
 .../kerb/type/pa/PaAuthenticationSetElem.java   |  75 +++++
 .../kerby/kerberos/kerb/type/pa/PaData.java     |  41 +++
 .../kerberos/kerb/type/pa/PaDataEntry.java      |  70 ++++
 .../kerby/kerberos/kerb/type/pa/PaDataType.java |  92 +++++
 .../kerby/kerberos/kerb/type/pa/PaEncTsEnc.java |  67 ++++
 .../kerberos/kerb/type/pa/otp/OtpTokenInfo.java |  70 ++++
 .../kerb/type/pa/otp/PaOtpChallenge.java        |  56 ++++
 .../type/pa/pkinit/AdInitialVerifiedCas.java    |  28 ++
 .../type/pa/pkinit/AlgorithmIdentifiers.java    |  30 ++
 .../kerberos/kerb/type/pa/pkinit/AuthPack.java  |  83 +++++
 .../kerberos/kerb/type/pa/pkinit/DHNonce.java   |  28 ++
 .../kerberos/kerb/type/pa/pkinit/DHRepInfo.java |  62 ++++
 .../pa/pkinit/ExternalPrincipalIdentifier.java  |  72 ++++
 .../kerb/type/pa/pkinit/KdcDHKeyInfo.java       |  66 ++++
 .../kerb/type/pa/pkinit/Krb5PrincipalName.java  |  62 ++++
 .../kerberos/kerb/type/pa/pkinit/PaPkAsRep.java |  62 ++++
 .../kerberos/kerb/type/pa/pkinit/PaPkAsReq.java |  73 ++++
 .../kerb/type/pa/pkinit/PkAuthenticator.java    |  92 +++++
 .../kerb/type/pa/pkinit/ReplyKeyPack.java       |  62 ++++
 .../kerb/type/pa/pkinit/TdDhParameters.java     |  26 ++
 .../kerb/type/pa/pkinit/TrustedCertifiers.java  |  29 ++
 .../kerb/type/pa/token/PaTokenChallenge.java    |  41 +++
 .../kerb/type/pa/token/PaTokenRequest.java      |  62 ++++
 .../kerberos/kerb/type/pa/token/TokenFlag.java  |  51 +++
 .../kerberos/kerb/type/pa/token/TokenFlags.java |  39 +++
 .../kerberos/kerb/type/pa/token/TokenInfo.java  |  63 ++++
 .../kerberos/kerb/type/pa/token/TokenInfos.java |  29 ++
 .../kerb/type/ticket/EncTicketPart.java         | 169 ++++++++++
 .../kerberos/kerb/type/ticket/KrbTicket.java    |  49 +++
 .../kerberos/kerb/type/ticket/SgtTicket.java    |  31 ++
 .../kerberos/kerb/type/ticket/TgtTicket.java    |  39 +++
 .../kerby/kerberos/kerb/type/ticket/Ticket.java | 100 ++++++
 .../kerberos/kerb/type/ticket/TicketFlag.java   |  62 ++++
 .../kerberos/kerb/type/ticket/TicketFlags.java  |  39 +++
 .../kerberos/kerb/type/ticket/Tickets.java      |  29 ++
 .../kerberos/kerb/crypto/CheckSumHandler.java   |   6 +-
 .../kerb/crypto/CheckSumTypeHandler.java        |   2 +-
 .../kerberos/kerb/crypto/EncTypeHandler.java    |   4 +-
 .../kerberos/kerb/crypto/EncryptionHandler.java |  10 +-
 .../crypto/cksum/CmacCamellia128CheckSum.java   |   2 +-
 .../crypto/cksum/CmacCamellia256CheckSum.java   |   2 +-
 .../kerb/crypto/cksum/Crc32CheckSum.java        |   2 +-
 .../kerb/crypto/cksum/DesCbcCheckSum.java       |   2 +-
 .../kerb/crypto/cksum/HmacMd5Rc4CheckSum.java   |   2 +-
 .../crypto/cksum/HmacSha1Aes128CheckSum.java    |   2 +-
 .../crypto/cksum/HmacSha1Aes256CheckSum.java    |   2 +-
 .../kerb/crypto/cksum/HmacSha1Des3CheckSum.java |   2 +-
 .../kerb/crypto/cksum/Md5HmacRc4CheckSum.java   |   2 +-
 .../kerb/crypto/cksum/RsaMd4CheckSum.java       |   2 +-
 .../kerb/crypto/cksum/RsaMd4DesCheckSum.java    |   2 +-
 .../kerb/crypto/cksum/RsaMd5CheckSum.java       |   2 +-
 .../kerb/crypto/cksum/RsaMd5DesCheckSum.java    |   2 +-
 .../kerb/crypto/cksum/Sha1CheckSum.java         |   2 +-
 .../kerb/crypto/enc/Aes128CtsHmacSha1Enc.java   |   4 +-
 .../kerb/crypto/enc/Aes256CtsHmacSha1Enc.java   |   4 +-
 .../kerb/crypto/enc/Camellia128CtsCmacEnc.java  |   4 +-
 .../kerb/crypto/enc/Camellia256CtsCmacEnc.java  |   4 +-
 .../kerb/crypto/enc/Des3CbcSha1Enc.java         |   4 +-
 .../kerberos/kerb/crypto/enc/DesCbcCrcEnc.java  |   4 +-
 .../kerberos/kerb/crypto/enc/DesCbcMd4Enc.java  |   4 +-
 .../kerberos/kerb/crypto/enc/DesCbcMd5Enc.java  |   4 +-
 .../kerberos/kerb/crypto/enc/KeKiCmacEnc.java   |   2 +-
 .../kerberos/kerb/crypto/enc/Rc4HmacEnc.java    |   4 +-
 .../kerberos/kerb/crypto/enc/Rc4HmacExpEnc.java |   2 +-
 .../kerberos/kerb/crypto/fast/FastUtil.java     |   2 +-
 .../kerberos/kerb/crypto/CheckSumTest.java      |  10 +-
 .../kerberos/kerb/crypto/CheckSumsTest.java     |   8 +-
 .../kerberos/kerb/crypto/DecryptionTest.java    |   6 +-
 .../kerberos/kerb/crypto/FastUtilTest.java      |   4 +-
 .../kerberos/kerb/crypto/KeyDeriveTest.java     |   2 +-
 .../kerby/kerberos/kerb/crypto/PrfTest.java     |   2 +-
 .../kerberos/kerb/crypto/String2keyTest.java    |   4 +-
 .../kerb/identity/backend/BackendTest.java      |   4 +-
 .../kerb/identity/backend/BackendTestUtil.java  |   6 +-
 .../kerberos/kerb/identity/KrbIdentity.java     |   8 +-
 .../kerby/kerberos/kerb/server/KdcTest.java     |   4 +-
 .../kerberos/kerb/server/LoginTestBase.java     |   2 +-
 .../kerb/server/MultiRequestsKdcTest.java       |   4 +-
 .../kerby/kerberos/kerb/server/KdcConfig.java   |   2 +-
 .../kerby/kerberos/kerb/server/KdcHandler.java  |  16 +-
 .../kerb/server/KdcRecoverableException.java    |   2 +-
 .../server/preauth/AbstractPreauthPlugin.java   |   6 +-
 .../kerb/server/preauth/KdcFastContext.java     |   6 +-
 .../kerb/server/preauth/KdcPreauth.java         |   6 +-
 .../kerb/server/preauth/PreauthHandle.java      |   4 +-
 .../kerb/server/preauth/PreauthHandler.java     |   6 +-
 .../server/preauth/builtin/EncTsPreauth.java    |  10 +-
 .../kerb/server/preauth/builtin/TgtPreauth.java |   2 +-
 .../server/preauth/pkinit/PkinitPreauth.java    |   8 +-
 .../preauth/pkinit/PkinitRequestContext.java    |   4 +-
 .../kerb/server/preauth/token/TokenPreauth.java |  20 +-
 .../preauth/token/TokenRequestContext.java      |   2 +-
 .../kerberos/kerb/server/request/AsRequest.java |  32 +-
 .../kerb/server/request/KdcRequest.java         |  54 +--
 .../server/request/ServiceTicketIssuer.java     |   8 +-
 .../kerb/server/request/TgsRequest.java         |  46 +--
 .../kerb/server/request/TgtTicketIssuer.java    |   4 +-
 .../kerb/server/request/TicketIssuer.java       |  32 +-
 .../kerby/kerberos/kerb/KrbInputStream.java     |   8 +-
 .../kerby/kerberos/kerb/KrbOutputStream.java    |   6 +-
 .../kerb/ccache/CredCacheInputStream.java       |  24 +-
 .../kerb/ccache/CredCacheOutputStream.java      |  18 +-
 .../kerby/kerberos/kerb/ccache/Credential.java  |  20 +-
 .../kerberos/kerb/ccache/CredentialCache.java   |   6 +-
 .../kerb/ccache/KrbCredentialCache.java         |   2 +-
 .../kerby/kerberos/kerb/keytab/Keytab.java      |   6 +-
 .../kerby/kerberos/kerb/keytab/KeytabEntry.java |   6 +-
 .../kerberos/kerb/keytab/KeytabInputStream.java |  10 +-
 .../kerb/keytab/KeytabOutputStream.java         |   4 +-
 .../kerby/kerberos/kerb/keytab/KrbKeytab.java   |   6 +-
 .../kerby/kerberos/kerb/util/CcacheTest.java    |   2 +-
 .../kerberos/kerb/util/EncryptionTest.java      |  14 +-
 .../kerby/kerberos/kerb/util/KeysTest.java      |   6 +-
 .../kerby/kerberos/kerb/util/KeytabTest.java    |   2 +-
 .../kerberos/kerb/util/NewEncryptionTest.java   |   8 +-
 .../kerberos/provider/token/JwtAuthToken.java   |   2 +-
 .../provider/token/JwtTokenDecoder.java         |   2 +-
 .../provider/token/JwtTokenEncoder.java         |   2 +-
 .../provider/token/JwtTokenProvider.java        |   2 +-
 .../kerberos/provider/token/TokenTest.java      |   2 +-
 .../kerby/kerberos/tool/kinit/KinitTool.java    |   4 +-
 .../kerby/kerberos/tool/klist/KlistTool.java    |   2 +-
 .../kerby/kerberos/tool/token/TokenInit.java    |   2 +-
 .../kadmin/command/GetPrincipalCommand.java     |   4 +-
 378 files changed, 8225 insertions(+), 8225 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/benchmark/src/main/java/org/apache/kerby/benchmark/KrbCodecBenchmark.java
----------------------------------------------------------------------
diff --git a/benchmark/src/main/java/org/apache/kerby/benchmark/KrbCodecBenchmark.java b/benchmark/src/main/java/org/apache/kerby/benchmark/KrbCodecBenchmark.java
index 48c2703..1be8bbf 100644
--- a/benchmark/src/main/java/org/apache/kerby/benchmark/KrbCodecBenchmark.java
+++ b/benchmark/src/main/java/org/apache/kerby/benchmark/KrbCodecBenchmark.java
@@ -21,7 +21,7 @@ package org.apache.kerby.benchmark;
 
 import org.apache.directory.api.asn1.ber.Asn1Decoder;
 import org.apache.directory.shared.kerberos.codec.apReq.ApReqContainer;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApReq;
+import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
 import org.openjdk.jmh.annotations.Fork;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
index cc1da07..b65ec0b 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java
@@ -30,9 +30,9 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.BatchTrans;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.apache.kerby.util.IOUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/EncryptionKeyAdapter.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/EncryptionKeyAdapter.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/EncryptionKeyAdapter.java
index ff0dfdd..fd3fd20 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/EncryptionKeyAdapter.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/EncryptionKeyAdapter.java
@@ -26,7 +26,7 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonParseException;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.util.HexUtil;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/KerberosTimeAdapter.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/KerberosTimeAdapter.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/KerberosTimeAdapter.java
index 7c4b6eb..7a499d5 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/KerberosTimeAdapter.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/KerberosTimeAdapter.java
@@ -26,7 +26,7 @@ import com.google.gson.JsonParseException;
 import com.google.gson.JsonPrimitive;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
 
 import java.lang.reflect.Type;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/PrincipalNameAdapter.java
----------------------------------------------------------------------
diff --git a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/PrincipalNameAdapter.java b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/PrincipalNameAdapter.java
index d9d61a4..6946193 100644
--- a/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/PrincipalNameAdapter.java
+++ b/kerby-backend/json-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/typeAdapter/PrincipalNameAdapter.java
@@ -26,7 +26,7 @@ import com.google.gson.JsonParseException;
 import com.google.gson.JsonPrimitive;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.lang.reflect.Type;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
----------------------------------------------------------------------
diff --git a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
index 3c9c39e..9d6151d 100644
--- a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
+++ b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityBackend.java
@@ -38,9 +38,9 @@ import org.apache.kerby.config.Config;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.identity.backend.AbstractIdentityBackend;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java
----------------------------------------------------------------------
diff --git a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java
index ba19ae0..bc070dc 100644
--- a/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java
+++ b/kerby-backend/ldap-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/LdapIdentityGetHelper.java
@@ -24,9 +24,9 @@ import org.apache.directory.api.ldap.model.entry.Value;
 import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException;
 import org.apache.directory.api.util.GeneralizedTime;
 import org.apache.directory.shared.kerberos.KerberosAttribute;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.IOException;
 import java.text.ParseException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java
index 22766ec..dc3df02 100644
--- a/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java
+++ b/kerby-backend/mavibot-backend/src/main/java/org/apache/kerby/KrbIdentitySerializer.java
@@ -25,9 +25,9 @@ import org.apache.directory.mavibot.btree.serializer.IntSerializer;
 import org.apache.directory.mavibot.btree.serializer.LongSerializer;
 import org.apache.directory.mavibot.btree.serializer.StringSerializer;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java
----------------------------------------------------------------------
diff --git a/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java b/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java
index 4220d46..4c82bfb 100644
--- a/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java
+++ b/kerby-backend/mavibot-backend/src/test/java/org/apache/kerby/KrbIdentitySerializerTest.java
@@ -20,9 +20,9 @@
 package org.apache.kerby;
 
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/IdentityZNode.java
----------------------------------------------------------------------
diff --git a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/IdentityZNode.java b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/IdentityZNode.java
index 5c41a71..1f08279 100644
--- a/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/IdentityZNode.java
+++ b/kerby-backend/zookeeper-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/IdentityZNode.java
@@ -20,10 +20,10 @@
 package org.apache.kerby.kerberos.kdc.identitybackend;
 
 import org.apache.kerby.kerberos.kerb.crypto.util.BytesUtil;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.apache.kerby.util.Utf8;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.ZooKeeper;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
index d601838..3e6ce3b 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
@@ -22,8 +22,8 @@ package org.apache.kerby.kerberos.kdc;
 import org.apache.kerby.kerberos.kdc.impl.NettyKdcServerImpl;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.junit.Assert;
 
 import static org.assertj.core.api.Assertions.assertThat;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
index 27eeac4..3971265 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
@@ -30,7 +30,7 @@ import org.apache.kerby.kerberos.kerb.client.KrbTokenClient;
 import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.common.PublicKeyReader;
 import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
 import org.junit.Assert;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
index eeb3938..5eaa176 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
@@ -24,8 +24,8 @@ import org.apache.kerby.kerberos.kerb.client.KrbTokenClient;
 import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.common.PublicKeyReader;
 import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.junit.Assert;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
index 322a387..27bdc50 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
@@ -27,11 +27,11 @@ import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
 import org.apache.kerby.kerberos.kerb.server.KdcConfigKey;
 import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbToken;
-import org.apache.kerby.kerberos.kerb.spec.base.TokenFormat;
-import org.apache.kerby.kerberos.kerb.spec.ticket.KrbTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
+import org.apache.kerby.kerberos.kerb.type.base.TokenFormat;
+import org.apache.kerby.kerberos.kerb.type.ticket.KrbTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.apache.kerby.kerberos.provider.token.JwtTokenEncoder;
 import org.apache.kerby.kerberos.provider.token.JwtTokenProvider;
 import org.junit.Before;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java
index 195158a..d3c55d9 100644
--- a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java
+++ b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java
@@ -28,10 +28,10 @@ import org.apache.kerby.kerberos.kerb.client.KrbTokenClient;
 import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.provider.TokenDecoder;
 import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbToken;
-import org.apache.kerby.kerberos.kerb.spec.base.TokenFormat;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
+import org.apache.kerby.kerberos.kerb.type.base.TokenFormat;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.apache.kerby.kerberos.provider.token.JwtTokenEncoder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java b/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java
index 1674e2a..6ee1f8a 100644
--- a/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java
+++ b/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java
@@ -27,8 +27,8 @@ import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
 import org.apache.kerby.kerberos.kerb.server.KdcConfigKey;
 import org.apache.kerby.kerberos.kerb.server.LoginTestBase;
 import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.apache.kerby.kerberos.provider.token.JwtTokenProvider;
 import org.junit.Before;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/AdminHelper.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/AdminHelper.java b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/AdminHelper.java
index bbc37a9..a8a7979 100644
--- a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/AdminHelper.java
+++ b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/AdminHelper.java
@@ -24,10 +24,10 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.keytab.Keytab;
 import org.apache.kerby.kerberos.kerb.keytab.KeytabEntry;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.File;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java
index ea4bacc..d84de1f 100644
--- a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java
+++ b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/Kadmin.java
@@ -30,8 +30,8 @@ import org.apache.kerby.kerberos.kerb.keytab.Keytab;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
 import org.apache.kerby.kerberos.kerb.server.KdcSetting;
 import org.apache.kerby.kerberos.kerb.server.KdcUtil;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
index b828f92..7eae22b 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
@@ -24,8 +24,8 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
 import org.apache.kerby.kerberos.kerb.client.impl.DefaultInternalKrbClient;
 import org.apache.kerby.kerberos.kerb.client.impl.InternalKrbClient;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java
index eeb5a1d..966f720 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.client;
 
 import org.apache.kerby.kerberos.kerb.common.Krb5Conf;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 import java.util.List;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbHandler.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbHandler.java
index 89eb1f5..3966d83 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbHandler.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbHandler.java
@@ -24,17 +24,17 @@ import org.apache.kerby.kerberos.kerb.KrbErrorCode;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.preauth.PreauthHandler;
 import org.apache.kerby.kerberos.kerb.client.request.KdcRequest;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfo2;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfo2Entry;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbError;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.base.MethodData;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfo2;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfo2Entry;
+import org.apache.kerby.kerberos.kerb.type.base.KrbError;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.MethodData;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 import org.apache.kerby.kerberos.kerb.transport.KrbTransport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
index 7f302fd..2fb2712 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.client;
 
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 
 import java.security.PrivateKey;
 import java.security.cert.Certificate;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
index 66d8d75..5b70e3e 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
@@ -21,9 +21,9 @@ package org.apache.kerby.kerberos.kerb.client;
 
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 
 /**
  * A krb token client API for applications to interact with KDC using token.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
index d27609b..25155c8 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
@@ -33,10 +33,10 @@ import org.apache.kerby.kerberos.kerb.client.request.AsRequestWithToken;
 import org.apache.kerby.kerberos.kerb.client.request.TgsRequest;
 import org.apache.kerby.kerberos.kerb.client.request.TgsRequestWithTgt;
 import org.apache.kerby.kerberos.kerb.client.request.TgsRequestWithToken;
-import org.apache.kerby.kerberos.kerb.spec.base.NameType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 
 /**
  * A krb client API for applications to interact with KDC

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
index 26943c6..b6d799f 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
@@ -24,8 +24,8 @@ import org.apache.kerby.kerberos.kerb.client.ClientUtil;
 import org.apache.kerby.kerberos.kerb.client.KrbSetting;
 import org.apache.kerby.kerberos.kerb.client.request.AsRequest;
 import org.apache.kerby.kerberos.kerb.client.request.TgsRequest;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.apache.kerby.kerberos.kerb.transport.KrbNetwork;
 import org.apache.kerby.kerberos.kerb.transport.KrbTransport;
 import org.apache.kerby.kerberos.kerb.transport.TransportPair;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
index 68534fb..fd56184 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
@@ -22,8 +22,8 @@ package org.apache.kerby.kerberos.kerb.client.impl;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbSetting;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 
 /**
  * An internal krb client interface.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java
index 0c2ae35..da6e4ba 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/AbstractPreauthPlugin.java
@@ -27,10 +27,10 @@ import org.apache.kerby.kerberos.kerb.preauth.PaFlags;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.PreauthPluginMeta;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-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.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 import java.util.Collections;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbFastRequestState.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbFastRequestState.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbFastRequestState.java
index 5db3d5e..655dedd 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbFastRequestState.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbFastRequestState.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.client.preauth;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.fast.FastOptions;
-import org.apache.kerby.kerberos.kerb.spec.fast.KrbFastArmor;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.fast.FastOptions;
+import org.apache.kerby.kerberos.kerb.type.fast.KrbFastArmor;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
 
 /**
  * Maintaining FAST processing state in client side per request.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbPreauth.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbPreauth.java
index 1fd36c8..521c595 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbPreauth.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/KrbPreauth.java
@@ -26,10 +26,10 @@ import org.apache.kerby.kerberos.kerb.preauth.PaFlags;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.PreauthPluginMeta;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-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.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 import java.util.List;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java
index 63c59ab..d5fa43b 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.client.preauth;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandle.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandle.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandle.java
index b822dc7..d7a8cec 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandle.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandle.java
@@ -24,9 +24,9 @@ import org.apache.kerby.kerberos.kerb.client.request.KdcRequest;
 import org.apache.kerby.kerberos.kerb.preauth.PaFlags;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.KrbException;
-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.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class PreauthHandle {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java
index 7494a5c..fcd2d07 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java
@@ -27,9 +27,9 @@ import org.apache.kerby.kerberos.kerb.client.preauth.pkinit.PkinitPreauth;
 import org.apache.kerby.kerberos.kerb.client.preauth.token.TokenPreauth;
 import org.apache.kerby.kerberos.kerb.client.request.KdcRequest;
 import org.apache.kerby.kerberos.kerb.KrbException;
-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.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/EncTsPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/EncTsPreauth.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/EncTsPreauth.java
index 8f13352..e25f360 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/EncTsPreauth.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/EncTsPreauth.java
@@ -27,12 +27,12 @@ import org.apache.kerby.kerberos.kerb.preauth.PaFlags;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.builtin.EncTsPreauthMeta;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-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.apache.kerby.kerberos.kerb.spec.pa.PaEncTsEnc;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaEncTsEnc;
 
 public class EncTsPreauth extends AbstractPreauthPlugin {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/TgtPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/TgtPreauth.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/TgtPreauth.java
index 6b1118a..a01ce88 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/TgtPreauth.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/builtin/TgtPreauth.java
@@ -25,9 +25,9 @@ import org.apache.kerby.kerberos.kerb.client.request.KdcRequest;
 import org.apache.kerby.kerberos.kerb.client.request.TgsRequestWithTgt;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.builtin.TgtPreauthMeta;
-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.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class TgtPreauth extends AbstractPreauthPlugin {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java
index 0a69a04..a1f2886 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java
@@ -30,18 +30,18 @@ import org.apache.kerby.kerberos.kerb.preauth.PaFlags;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.pkinit.PkinitIdenity;
 import org.apache.kerby.kerberos.kerb.preauth.pkinit.PkinitPreauthMeta;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-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.apache.kerby.kerberos.kerb.spec.pa.pkinit.AuthPack;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.DHNonce;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.PaPkAsReq;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.PkAuthenticator;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.TrustedCertifiers;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.AuthPack;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.DHNonce;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.PaPkAsReq;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.PkAuthenticator;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.TrustedCertifiers;
 import org.apache.kerby.x509.type.SubjectPublicKeyInfo;
 
 @SuppressWarnings("PMD")

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitRequestContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitRequestContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitRequestContext.java
index bfbf7f2..05eaf36 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitRequestContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitRequestContext.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kerb.client.preauth.pkinit;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.pkinit.IdentityOpts;
 import org.apache.kerby.kerberos.kerb.preauth.pkinit.PluginOpts;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class PkinitRequestContext implements PluginRequestContext {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java
index 59b38d4..637ec59 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.client.preauth.token;
 
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 
 public class TokenContext {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java
index 11aa0a2..274f645 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java
@@ -31,16 +31,16 @@ import org.apache.kerby.kerberos.kerb.preauth.PaFlag;
 import org.apache.kerby.kerberos.kerb.preauth.PaFlags;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.token.TokenPreauthMeta;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbToken;
-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.apache.kerby.kerberos.kerb.spec.pa.token.PaTokenRequest;
-import org.apache.kerby.kerberos.kerb.spec.pa.token.TokenInfo;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.token.PaTokenRequest;
+import org.apache.kerby.kerberos.kerb.type.pa.token.TokenInfo;
 
 import java.util.Collections;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenRequestContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenRequestContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenRequestContext.java
index ca7eb87..c9b20bd 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenRequestContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenRequestContext.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.client.preauth.token;
 
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class TokenRequestContext implements PluginRequestContext {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredAsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredAsRequest.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredAsRequest.java
index c3960ba..ec815df 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredAsRequest.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredAsRequest.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kerb.client.request;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbContext;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 
 /**
  * This initiates an armor protected AS-REQ using FAST/Pre-auth.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredRequest.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredRequest.java
index 3fb5683..9bb011b 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredRequest.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredRequest.java
@@ -29,26 +29,26 @@ import org.apache.kerby.kerberos.kerb.common.CheckSumUtil;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
 import org.apache.kerby.kerberos.kerb.crypto.fast.FastUtil;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApOptions;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApReq;
-import org.apache.kerby.kerberos.kerb.spec.ap.Authenticator;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.fast.ArmorType;
-import org.apache.kerby.kerberos.kerb.spec.fast.KrbFastArmor;
-import org.apache.kerby.kerberos.kerb.spec.fast.KrbFastArmoredReq;
-import org.apache.kerby.kerberos.kerb.spec.fast.KrbFastReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.ap.ApOptions;
+import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
+import org.apache.kerby.kerberos.kerb.type.ap.Authenticator;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.fast.ArmorType;
+import org.apache.kerby.kerberos.kerb.type.fast.KrbFastArmor;
+import org.apache.kerby.kerberos.kerb.type.fast.KrbFastArmoredReq;
+import org.apache.kerby.kerberos.kerb.type.fast.KrbFastReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
 
 import java.io.File;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredTgsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredTgsRequest.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredTgsRequest.java
index 367f093..e204e04 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredTgsRequest.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/ArmoredTgsRequest.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kerb.client.request;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbContext;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 
 public class ArmoredTgsRequest extends TgsRequest {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequest.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequest.java
index deb07d5..473d76e 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequest.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequest.java
@@ -25,17 +25,17 @@ import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
 import org.apache.kerby.kerberos.kerb.client.KrbContext;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
 import org.apache.kerby.kerberos.kerb.common.KrbUtil;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddress;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncAsRepPart;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncKdcRepPart;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddress;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncAsRepPart;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncKdcRepPart;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 
 import java.io.File;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithCert.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithCert.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithCert.java
index ef2808f..52a0f38 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithCert.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithCert.java
@@ -23,7 +23,7 @@ import org.apache.kerby.kerberos.kerb.client.KrbContext;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class AsRequestWithCert extends AsRequest {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithKeytab.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithKeytab.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithKeytab.java
index f6a191c..c71d096 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithKeytab.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithKeytab.java
@@ -24,8 +24,8 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbContext;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
 import org.apache.kerby.kerberos.kerb.keytab.Keytab;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 import java.io.File;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithPasswd.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithPasswd.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithPasswd.java
index b5e044e..0d73193 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithPasswd.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/AsRequestWithPasswd.java
@@ -23,8 +23,8 @@ import org.apache.kerby.kerberos.kerb.client.KrbContext;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class AsRequestWithPasswd extends AsRequest {
 


[06/19] directory-kerby git commit: DIRKRB-481 Refine some API functions favoring SGT (Service Granting Ticket)

Posted by pl...@apache.org.
DIRKRB-481 Refine some API functions favoring SGT (Service Granting Ticket)


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

Branch: refs/heads/pkinit-support
Commit: 5372621fa3a2ba2233a0a01d05d39c07d8595d13
Parents: d10bf63
Author: Kai Zheng <ka...@intel.com>
Authored: Sun Nov 29 07:34:14 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sun Nov 29 07:34:14 2015 +0800

----------------------------------------------------------------------
 .../apache/kerby/kerberos/kdc/KerbyKdcTest.java | 10 +++----
 .../kerberos/kdc/WithAccessTokenKdcTest.java    |  6 ++--
 .../kerberos/kdc/WithIdentityTokenKdcTest.java  |  6 ++--
 .../kerberos/kdc/WithTokenKdcTestBase.java      |  2 +-
 .../integration/test/TokenLoginTestBase.java    |  4 +--
 .../kerby/kerberos/kerb/client/KrbClient.java   | 30 +++++++++----------
 .../kerberos/kerb/client/KrbPkinitClient.java   |  4 +--
 .../kerberos/kerb/client/KrbTokenClient.java    |  8 ++---
 .../client/impl/AbstractInternalKrbClient.java  |  8 ++---
 .../client/impl/DefaultInternalKrbClient.java   |  4 +--
 .../kerb/client/impl/InternalKrbClient.java     |  6 ++--
 .../kerb/client/request/TgsRequest.java         |  6 ++--
 .../kerb/spec/ticket/ServiceTicket.java         | 28 ------------------
 .../kerberos/kerb/spec/ticket/SgtTicket.java    | 31 ++++++++++++++++++++
 .../kerberos/kerb/spec/ticket/TgtTicket.java    |  3 ++
 .../kerby/kerberos/kerb/server/KdcTest.java     | 10 +++----
 .../kerberos/kerb/server/LoginTestBase.java     |  2 +-
 .../kerb/server/MultiRequestsKdcTest.java       | 14 ++++-----
 .../kerby/kerberos/tool/kinit/KinitTool.java    | 12 ++++----
 19 files changed, 99 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
index f782719..d601838 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kdc;
 import org.apache.kerby.kerberos.kdc.impl.NettyKdcServerImpl;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.junit.Assert;
 
@@ -39,14 +39,14 @@ public abstract class KerbyKdcTest extends KdcTestBase {
 
     protected void performKdcTest() throws Exception {
         TgtTicket tgt;
-        ServiceTicket tkt;
+        SgtTicket tkt;
 
         try {
-            tgt = getKrbClient().requestTgtWithPassword(
-                    getClientPrincipal(), getClientPassword());
+            tgt = getKrbClient().requestTgt(
+                getClientPrincipal(), getClientPassword());
             assertThat(tgt).isNotNull();
 
-            tkt = getKrbClient().requestServiceTicketWithTgt(tgt, getServerPrincipal());
+            tkt = getKrbClient().requestSgt(tgt, getServerPrincipal());
             assertThat(tkt).isNotNull();
         } catch (Exception e) {
             System.out.println("Exception occurred with good password");

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
index 2643de6..27eeac4 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
@@ -30,7 +30,7 @@ import org.apache.kerby.kerberos.kerb.client.KrbTokenClient;
 import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.common.PublicKeyReader;
 import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -138,9 +138,9 @@ public class WithAccessTokenKdcTest extends WithTokenKdcTestBase {
 
         KrbTokenClient tokenClient = new KrbTokenClient(getKrbClient());
         try {
-            ServiceTicket serviceTicket = tokenClient.requestServiceTicket(
+            SgtTicket sgtTicket = tokenClient.requestSgt(
                 getKrbToken(), getServerPrincipal(), getcCacheFile().getPath());
-            verifyTicket(serviceTicket);
+            verifyTicket(sgtTicket);
         } finally {
             deleteCcacheFile();
         }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
index 0e4722c..eeb3938 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
@@ -24,7 +24,7 @@ import org.apache.kerby.kerberos.kerb.client.KrbTokenClient;
 import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.common.PublicKeyReader;
 import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.junit.Assert;
 import org.junit.Test;
@@ -149,8 +149,8 @@ public class WithIdentityTokenKdcTest extends WithTokenKdcTestBase {
         }
         verifyTicket(tgt);
 
-        ServiceTicket tkt = getKrbClient().requestServiceTicketWithTgt(tgt,
-                getServerPrincipal());
+        SgtTicket tkt = getKrbClient().requestSgt(tgt,
+            getServerPrincipal());
         verifyTicket(tkt);
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
index e90e8c5..322a387 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
@@ -142,7 +142,7 @@ public class WithTokenKdcTestBase extends KdcTestBase {
 
     protected File createCredentialCache(String principal,
                                        String password) throws Exception {
-        TgtTicket tgt = getKrbClient().requestTgtWithPassword(principal, password);
+        TgtTicket tgt = getKrbClient().requestTgt(principal, password);
         writeTgtToCache(tgt, principal);
         return cCacheFile;
     }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java b/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java
index 4fcc54d..1674e2a 100644
--- a/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java
+++ b/kerby-kerb/integration-test/src/test/java/org/apache/kerby/kerberos/kerb/integration/test/TokenLoginTestBase.java
@@ -89,8 +89,8 @@ public class TokenLoginTestBase extends LoginTestBase {
         System.out.println("Issued token: " + tokenStr);
         tokenCache = TokenCache.getDefaultTokenCache();
 
-        TgtTicket tgt = getKrbClient().requestTgtWithPassword(getClientPrincipal(),
-                getClientPassword());
+        TgtTicket tgt = getKrbClient().requestTgt(getClientPrincipal(),
+            getClientPassword());
         getKrbClient().storeTicket(tgt, armorCache);
 
         return tokenStr;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
index 7053286..b828f92 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
@@ -24,15 +24,13 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
 import org.apache.kerby.kerberos.kerb.client.impl.DefaultInternalKrbClient;
 import org.apache.kerby.kerberos.kerb.client.impl.InternalKrbClient;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
-import java.security.PrivateKey;
-import java.security.cert.Certificate;
 
 /**
  * A Krb client API for applications to interact with KDC
@@ -168,13 +166,13 @@ public class KrbClient {
      * @return The tgt ticket
      * @throws KrbException e
      */
-    public TgtTicket requestTgtWithPassword(String principal,
-                                      String password) throws KrbException {
+    public TgtTicket requestTgt(String principal,
+                                String password) throws KrbException {
         KOptions requestOptions = new KOptions();
         requestOptions.add(KrbOption.CLIENT_PRINCIPAL, principal);
         requestOptions.add(KrbOption.USE_PASSWD, true);
         requestOptions.add(KrbOption.USER_PASSWD, password);
-        return requestTgtWithOptions(requestOptions);
+        return requestTgt(requestOptions);
     }
 
     /**
@@ -184,13 +182,13 @@ public class KrbClient {
      * @return TGT
      * @throws KrbException e
      */
-    public TgtTicket requestTgtWithKeytab(String principal,
-                                      File keytabFile) throws KrbException {
+    public TgtTicket requestTgt(String principal,
+                                File keytabFile) throws KrbException {
         KOptions requestOptions = new KOptions();
         requestOptions.add(KrbOption.CLIENT_PRINCIPAL, principal);
         requestOptions.add(KrbOption.USE_KEYTAB, true);
         requestOptions.add(KrbOption.KEYTAB_FILE, keytabFile);
-        return requestTgtWithOptions(requestOptions);
+        return requestTgt(requestOptions);
     }
 
     /**
@@ -199,12 +197,12 @@ public class KrbClient {
      * @return TGT
      * @throws KrbException e
      */
-    public TgtTicket requestTgtWithOptions(KOptions requestOptions) throws KrbException {
+    public TgtTicket requestTgt(KOptions requestOptions) throws KrbException {
         if (requestOptions == null) {
             throw new IllegalArgumentException("Null requestOptions specified");
         }
 
-        return innerClient.requestTgtTicket(requestOptions);
+        return innerClient.requestTgt(requestOptions);
     }
 
     /**
@@ -214,12 +212,12 @@ public class KrbClient {
      * @return Service ticket
      * @throws KrbException e
      */
-    public ServiceTicket requestServiceTicketWithTgt(
-            TgtTicket tgt, String serverPrincipal) throws KrbException {
+    public SgtTicket requestSgt(TgtTicket tgt,
+                                String serverPrincipal) throws KrbException {
         KOptions requestOptions = new KOptions();
         requestOptions.add(KrbOption.USE_TGT, tgt);
         requestOptions.add(KrbOption.SERVER_PRINCIPAL, serverPrincipal);
-        return innerClient.requestServiceTicket(requestOptions);
+        return innerClient.requestSgt(requestOptions);
     }
 
     /**
@@ -228,8 +226,8 @@ public class KrbClient {
      * @return service ticket
      * @throws KrbException e
      */
-    public ServiceTicket requestServiceTicket(KOptions requestOptions) throws KrbException {
-        return innerClient.requestServiceTicket(requestOptions);
+    public SgtTicket requestSgt(KOptions requestOptions) throws KrbException {
+        return innerClient.requestSgt(requestOptions);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
index 09ac113..7f302fd 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
@@ -60,7 +60,7 @@ public class KrbPkinitClient {
         KOptions requestOptions = new KOptions();
         requestOptions.add(KrbOption.PKINIT_X509_CERTIFICATE, certificate);
         requestOptions.add(KrbOption.PKINIT_X509_PRIVATE_KEY, privateKey);
-        return krbClient.requestTgtWithOptions(requestOptions);
+        return krbClient.requestTgt(requestOptions);
     }
 
     /**
@@ -71,6 +71,6 @@ public class KrbPkinitClient {
     public TgtTicket requestTgt() throws KrbException {
         KOptions requestOptions = new KOptions();
         requestOptions.add(KrbOption.USE_PKINIT_ANONYMOUS);
-        return krbClient.requestTgtWithOptions(requestOptions);
+        return krbClient.requestTgt(requestOptions);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
index 55fe727..66d8d75 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kerb.client;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 
 /**
@@ -62,7 +62,7 @@ public class KrbTokenClient {
         KOptions requestOptions = new KOptions();
         requestOptions.add(KrbOption.TOKEN_USER_ID_TOKEN, token);
         requestOptions.add(KrbOption.ARMOR_CACHE, armorCache);
-        return krbClient.requestTgtWithOptions(requestOptions);
+        return krbClient.requestTgt(requestOptions);
     }
 
     /**
@@ -73,7 +73,7 @@ public class KrbTokenClient {
      * @return service ticket
      * @throws KrbException e
      */
-    public ServiceTicket requestServiceTicket(
+    public SgtTicket requestSgt(
         AuthToken token, String serverPrincipal, String armorCache) throws KrbException {
         if (!token.isAcToken()) {
             throw new IllegalArgumentException("Access token is expected");
@@ -84,6 +84,6 @@ public class KrbTokenClient {
         requestOptions.add(KrbOption.ARMOR_CACHE, armorCache);
         requestOptions.add(KrbOption.SERVER_PRINCIPAL, serverPrincipal);
 
-        return krbClient.requestServiceTicket(requestOptions);
+        return krbClient.requestSgt(requestOptions);
     }
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
index 40d1827..9555a8b 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
@@ -35,7 +35,7 @@ import org.apache.kerby.kerberos.kerb.client.request.TgsRequestWithTgt;
 import org.apache.kerby.kerberos.kerb.client.request.TgsRequestWithToken;
 import org.apache.kerby.kerberos.kerb.spec.base.NameType;
 import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 
 /**
@@ -74,7 +74,7 @@ public abstract class AbstractInternalKrbClient implements InternalKrbClient {
      * {@inheritDoc}
      */
     @Override
-    public TgtTicket requestTgtTicket(KOptions requestOptions) throws KrbException {
+    public TgtTicket requestTgt(KOptions requestOptions) throws KrbException {
         AsRequest asRequest = null;
 
         if (requestOptions.contains(KrbOption.USE_PASSWD)) {
@@ -117,7 +117,7 @@ public abstract class AbstractInternalKrbClient implements InternalKrbClient {
      * {@inheritDoc}
      */
     @Override
-    public ServiceTicket requestServiceTicket(KOptions requestOptions) throws KrbException {
+    public SgtTicket requestSgt(KOptions requestOptions) throws KrbException {
         TgsRequest tgsRequest = null;
         if (requestOptions.contains(KrbOption.TOKEN_USER_AC_TOKEN)) {
             tgsRequest = new TgsRequestWithToken(context);
@@ -142,7 +142,7 @@ public abstract class AbstractInternalKrbClient implements InternalKrbClient {
     protected abstract TgtTicket doRequestTgtTicket(
             AsRequest tgtTktReq) throws KrbException;
 
-    protected abstract ServiceTicket doRequestServiceTicket(
+    protected abstract SgtTicket doRequestServiceTicket(
             TgsRequest tgsRequest) throws KrbException;
 
     /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
index 87d9e71..b8a7775 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/DefaultInternalKrbClient.java
@@ -24,7 +24,7 @@ import org.apache.kerby.kerberos.kerb.client.ClientUtil;
 import org.apache.kerby.kerberos.kerb.client.KrbSetting;
 import org.apache.kerby.kerberos.kerb.client.request.AsRequest;
 import org.apache.kerby.kerberos.kerb.client.request.TgsRequest;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.apache.kerby.kerberos.kerb.transport.KrbNetwork;
 import org.apache.kerby.kerberos.kerb.transport.KrbTransport;
@@ -80,7 +80,7 @@ public class DefaultInternalKrbClient extends AbstractInternalKrbClient {
      * {@inheritDoc}
      */
     @Override
-    protected ServiceTicket doRequestServiceTicket(TgsRequest ticketReq) throws KrbException {
+    protected SgtTicket doRequestServiceTicket(TgsRequest ticketReq) throws KrbException {
         ticketReq.setSessionData(transport);
 
         krbHandler.handleRequest(ticketReq);

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
index 9373a1d..68534fb 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.kerb.client.impl;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbSetting;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 
 /**
@@ -48,7 +48,7 @@ public interface InternalKrbClient {
      * @return a TGT
      * @throws KrbException e
      */
-    TgtTicket requestTgtTicket(KOptions requestOptions) throws KrbException;
+    TgtTicket requestTgt(KOptions requestOptions) throws KrbException;
 
     /**
      * Request a service ticket provided request options
@@ -56,5 +56,5 @@ public interface InternalKrbClient {
      * @return service ticket
      * @throws KrbException e
      */
-    ServiceTicket requestServiceTicket(KOptions requestOptions) throws KrbException;
+    SgtTicket requestSgt(KOptions requestOptions) throws KrbException;
 }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
index 033e027..5a813e9 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/TgsRequest.java
@@ -31,7 +31,7 @@ import org.apache.kerby.kerberos.kerb.spec.kdc.KdcRep;
 import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
 import org.apache.kerby.kerberos.kerb.spec.kdc.TgsRep;
 import org.apache.kerby.kerberos.kerb.spec.kdc.TgsReq;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -91,8 +91,8 @@ public class TgsRequest extends KdcRequest {
         }
     }
 
-    public ServiceTicket getServiceTicket() {
-        ServiceTicket serviceTkt = new ServiceTicket(getKdcRep().getTicket(),
+    public SgtTicket getServiceTicket() {
+        SgtTicket serviceTkt = new SgtTicket(getKdcRep().getTicket(),
                 (EncTgsRepPart) getKdcRep().getEncPart());
         return serviceTkt;
     }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/ServiceTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/ServiceTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/ServiceTicket.java
deleted file mode 100644
index 0c119fa..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/ServiceTicket.java
+++ /dev/null
@@ -1,28 +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.spec.ticket;
-
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncTgsRepPart;
-
-public class ServiceTicket extends KrbTicket {
-    public ServiceTicket(Ticket ticket, EncTgsRepPart encKdcRepPart) {
-        super(ticket, encKdcRepPart);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/SgtTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/SgtTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/SgtTicket.java
new file mode 100644
index 0000000..04068c6
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/SgtTicket.java
@@ -0,0 +1,31 @@
+/**
+ *  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.spec.ticket;
+
+import org.apache.kerby.kerberos.kerb.spec.kdc.EncTgsRepPart;
+
+/**
+ * Service granting ticket.
+ */
+public class SgtTicket extends KrbTicket {
+    public SgtTicket(Ticket ticket, EncTgsRepPart encKdcRepPart) {
+        super(ticket, encKdcRepPart);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java
index 0a119aa..23df8d9 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/TgtTicket.java
@@ -22,6 +22,9 @@ package org.apache.kerby.kerberos.kerb.spec.ticket;
 import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
 import org.apache.kerby.kerberos.kerb.spec.kdc.EncAsRepPart;
 
+/**
+ * Ticket granting ticket.
+ */
 public class TgtTicket extends KrbTicket {
     private PrincipalName clientPrincipal;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/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 5fcc9fd..6ebe00a 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
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.server;
 
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.junit.Assert;
 
@@ -29,14 +29,14 @@ public abstract class KdcTest extends KdcTestBase {
 
     protected void performKdcTest() throws Exception {
         TgtTicket tgt;
-        ServiceTicket tkt;
+        SgtTicket tkt;
 
         try {
-            tgt = getKrbClient().requestTgtWithPassword(getClientPrincipal(),
-                    getClientPassword());
+            tgt = getKrbClient().requestTgt(getClientPrincipal(),
+                getClientPassword());
             assertThat(tgt).isNotNull();
 
-            tkt = getKrbClient().requestServiceTicketWithTgt(tgt, getServerPrincipal());
+            tkt = getKrbClient().requestSgt(tgt, getServerPrincipal());
             assertThat(tkt).isNotNull();
         } catch (Exception e) {
             System.out.println("Exception occurred with good password");

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java
index 18628ad..88ba06e 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java
@@ -53,7 +53,7 @@ public class LoginTestBase extends KdcTestBase {
     }
 
     protected Subject loginClientUsingTicketCache() throws Exception {
-        TgtTicket tgt = getKrbClient().requestTgtWithPassword(getClientPrincipal(),
+        TgtTicket tgt = getKrbClient().requestTgt(getClientPrincipal(),
             getClientPassword());
         getKrbClient().storeTicket(tgt, ticketCacheFile);
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java
index 61a560b..55f9c99 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.server;
 
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.junit.Assert;
 import org.junit.Test;
@@ -32,15 +32,15 @@ public class MultiRequestsKdcTest extends KdcTestBase {
     @Test
     public void multiRequestsTest() throws Exception {
         TgtTicket tgt;
-        ServiceTicket tkt;
+        SgtTicket tkt;
 
         // With good password
         try {
-            tgt = getKrbClient().requestTgtWithPassword(getClientPrincipal(), getClientPassword());
+            tgt = getKrbClient().requestTgt(getClientPrincipal(), getClientPassword());
             assertThat(tgt).isNotNull();
 
             serverPrincipal = getServerPrincipal();
-            tkt = getKrbClient().requestServiceTicketWithTgt(tgt, serverPrincipal);
+            tkt = getKrbClient().requestSgt(tgt, serverPrincipal);
             assertThat(tkt).isNotNull();
         } catch (Exception e) {
             System.out.println("Exception occurred with good password");
@@ -51,17 +51,17 @@ public class MultiRequestsKdcTest extends KdcTestBase {
         // With bad password
         /*
         try {
-            tgt = krbClnt.requestTgtWithPassword(clientPrincipal, "badpassword");
+            tgt = krbClnt.requestTgt(clientPrincipal, "badpassword");
         } catch (Exception e) {
             System.out.println("Exception occurred with bad password");
         }*/
 
         // With good password again
         try {
-            tgt = getKrbClient().requestTgtWithPassword(getClientPrincipal(), getClientPassword());
+            tgt = getKrbClient().requestTgt(getClientPrincipal(), getClientPassword());
             assertThat(tgt).isNotNull();
 
-            tkt = getKrbClient().requestServiceTicketWithTgt(tgt, serverPrincipal);
+            tkt = getKrbClient().requestSgt(tgt, serverPrincipal);
             assertThat(tkt).isNotNull();
         } catch (Exception e) {
             System.out.println("Exception occurred with good password again");

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/5372621f/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java
----------------------------------------------------------------------
diff --git a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java
index a7329c4..cb4c55f 100644
--- a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java
+++ b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java
@@ -24,7 +24,7 @@ import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbClient;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.apache.kerby.kerberos.tool.ToolUtil;
 import org.apache.kerby.util.OSUtil;
@@ -129,8 +129,8 @@ public class KinitTool {
 
         TgtTicket tgt = null;
         try {
-            tgt = krbClient.requestTgtWithOptions(
-                    ToolUtil.convertOptions(ktOptions));
+            tgt = krbClient.requestTgt(
+                ToolUtil.convertOptions(ktOptions));
         } catch (KrbException e) {
             System.err.println("Authentication failed: " + e.getMessage());
             System.exit(1);
@@ -157,10 +157,10 @@ public class KinitTool {
                 + ccacheFile.getAbsolutePath());
         if (ktOptions.contains(KinitOption.SERVICE)) {
             String servicePrincipal = ktOptions.getStringOption(KinitOption.SERVICE);
-            ServiceTicket serviceTicket =
-                    krbClient.requestServiceTicketWithTgt(tgt, servicePrincipal);
+            SgtTicket sgtTicket =
+                    krbClient.requestSgt(tgt, servicePrincipal);
             System.out.println("Successfully requested the service ticket for " + servicePrincipal
-            + "\nKey version: " + serviceTicket.getTicket().getTktvno());
+            + "\nKey version: " + sgtTicket.getTicket().getTktvno());
         }
     }
 


[04/19] directory-kerby git commit: DIRKRB-479 Separate token client out of KrbClient

Posted by pl...@apache.org.
DIRKRB-479 Separate token client out of KrbClient


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

Branch: refs/heads/pkinit-support
Commit: 759f26f92cbb7d9bbbc2deebc33003434f36e416
Parents: 105dc25
Author: Kai Zheng <ka...@intel.com>
Authored: Sun Nov 29 07:06:08 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sun Nov 29 07:06:08 2015 +0800

----------------------------------------------------------------------
 .../kerberos/kdc/WithAccessTokenKdcTest.java    |  4 +-
 .../kerberos/kdc/WithIdentityTokenKdcTest.java  |  8 +-
 .../test/jaas/TokenAuthLoginModule.java         |  7 +-
 .../kerby/kerberos/kerb/client/KrbClient.java   | 36 +-------
 .../kerberos/kerb/client/KrbTokenClient.java    | 89 ++++++++++++++++++++
 .../kerb/client/impl/InternalKrbClient.java     |  2 +-
 6 files changed, 106 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/759f26f9/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
index 8686190..2643de6 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
@@ -26,6 +26,7 @@ import java.security.PrivateKey;
 import java.security.PublicKey;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.client.KrbTokenClient;
 import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.common.PublicKeyReader;
 import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
@@ -135,8 +136,9 @@ public class WithAccessTokenKdcTest extends WithTokenKdcTestBase {
     private void performTest() throws Exception {
         createCredentialCache(getClientPrincipal(), getClientPassword());
 
+        KrbTokenClient tokenClient = new KrbTokenClient(getKrbClient());
         try {
-            ServiceTicket serviceTicket = getKrbClient().requestServiceTicketWithAccessToken(
+            ServiceTicket serviceTicket = tokenClient.requestServiceTicket(
                 getKrbToken(), getServerPrincipal(), getcCacheFile().getPath());
             verifyTicket(serviceTicket);
         } finally {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/759f26f9/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
index 052cb0d..0e4722c 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
@@ -20,6 +20,7 @@
 package org.apache.kerby.kerberos.kdc;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.client.KrbTokenClient;
 import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.common.PublicKeyReader;
 import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
@@ -135,10 +136,11 @@ public class WithIdentityTokenKdcTest extends WithTokenKdcTestBase {
 
         createCredentialCache(getClientPrincipal(), getClientPassword());
 
-        TgtTicket tgt = null;
+        TgtTicket tgt;
+        KrbTokenClient tokenClient = new KrbTokenClient(getKrbClient());
         try {
-            tgt = getKrbClient().requestTgtWithToken(getKrbToken(),
-                    getcCacheFile().getPath());
+            tgt = tokenClient.requestTgt(getKrbToken(),
+                getcCacheFile().getPath());
         } catch (KrbException e) {
             if (e.getMessage().contains("timeout")) {
                 return;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/759f26f9/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java
index a8888a8..195158a 100644
--- a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java
+++ b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/jaas/TokenAuthLoginModule.java
@@ -24,6 +24,7 @@ import org.apache.kerby.kerberos.kerb.KrbRuntime;
 import org.apache.kerby.kerberos.kerb.client.Krb5Conf;
 import org.apache.kerby.kerberos.kerb.client.KrbClient;
 import org.apache.kerby.kerberos.kerb.client.KrbConfig;
+import org.apache.kerby.kerberos.kerb.client.KrbTokenClient;
 import org.apache.kerby.kerberos.kerb.common.PrivateKeyReader;
 import org.apache.kerby.kerberos.kerb.provider.TokenDecoder;
 import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
@@ -239,9 +240,11 @@ public class TokenAuthLoginModule implements LoginModule {
         } catch (IOException e) {
             e.printStackTrace();
         }
-        TgtTicket tgtTicket = null;
+        TgtTicket tgtTicket;
+        KrbTokenClient tokenClient = new KrbTokenClient(krbClient);
         try {
-            tgtTicket = krbClient.requestTgtWithToken(krbToken, armorCache.getAbsolutePath());
+            tgtTicket = tokenClient.requestTgt(krbToken,
+                armorCache.getAbsolutePath());
         } catch (KrbException e) {
             throwWith("Failed to do login with token: " + tokenStr, e);
             return false;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/759f26f9/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
index b5ec953..80bfa67 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
@@ -24,7 +24,6 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
 import org.apache.kerby.kerberos.kerb.client.impl.DefaultInternalKrbClient;
 import org.apache.kerby.kerberos.kerb.client.impl.InternalKrbClient;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
 import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
 import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
 import org.slf4j.Logger;
@@ -221,24 +220,6 @@ public class KrbClient {
     }
 
     /**
-     * Request a TGT with user token credential
-     * @param token The auth token
-     * @param armorCache The armor cache
-     * @return TGT
-     * @throws KrbException e
-     */
-    public TgtTicket requestTgtWithToken(AuthToken token, String armorCache) throws KrbException {
-        if (!token.isIdToken()) {
-            throw new IllegalArgumentException("Identity token is expected");
-        }
-
-        KOptions requestOptions = new KOptions();
-        requestOptions.add(KrbOption.TOKEN_USER_ID_TOKEN, token);
-        requestOptions.add(KrbOption.ARMOR_CACHE, armorCache);
-        return requestTgtWithOptions(requestOptions);
-    }
-
-    /**
      * Request a TGT with using well prepared requestOptions.
      * @param requestOptions The request options
      * @return TGT
@@ -268,23 +249,12 @@ public class KrbClient {
     }
 
     /**
-     * Request a service ticket using an Access Token.
-     * @param token The auth token
-     * @param serverPrincipal The server principal
-     * @param armorCache The armor cache
+     * Request a service ticket provided request options
+     * @param requestOptions The request options
      * @return service ticket
      * @throws KrbException e
      */
-    public ServiceTicket requestServiceTicketWithAccessToken(
-            AuthToken token, String serverPrincipal,
-            String armorCache) throws KrbException {
-        if (!token.isAcToken()) {
-            throw new IllegalArgumentException("Access token is expected");
-        }
-        KOptions requestOptions = new KOptions();
-        requestOptions.add(KrbOption.TOKEN_USER_AC_TOKEN, token);
-        requestOptions.add(KrbOption.ARMOR_CACHE, armorCache);
-        requestOptions.add(KrbOption.SERVER_PRINCIPAL, serverPrincipal);
+    public ServiceTicket requestServiceTicket(KOptions requestOptions) throws KrbException {
         return innerClient.requestServiceTicket(requestOptions);
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/759f26f9/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
new file mode 100644
index 0000000..55fe727
--- /dev/null
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbTokenClient.java
@@ -0,0 +1,89 @@
+/**
+ *  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.client;
+
+import org.apache.kerby.KOptions;
+import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
+import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+
+/**
+ * A krb token client API for applications to interact with KDC using token.
+ */
+public class KrbTokenClient {
+    private final KrbClient krbClient;
+
+    /**
+     * Constructor with prepared KrbClient.
+     * @param krbClient The krb client
+     */
+    public KrbTokenClient(KrbClient krbClient) {
+        this.krbClient = krbClient;
+    }
+
+    /**
+     * Get krb client.
+     * @return KrbClient
+     */
+    public KrbClient getKrbClient() {
+        return krbClient;
+    }
+
+    /**
+     * Request a TGT with user token credential
+     * @param token The auth token
+     * @param armorCache The armor cache
+     * @return TGT
+     * @throws KrbException e
+     */
+    public TgtTicket requestTgt(AuthToken token, String armorCache) throws KrbException {
+        if (!token.isIdToken()) {
+            throw new IllegalArgumentException("Identity token is expected");
+        }
+
+        KOptions requestOptions = new KOptions();
+        requestOptions.add(KrbOption.TOKEN_USER_ID_TOKEN, token);
+        requestOptions.add(KrbOption.ARMOR_CACHE, armorCache);
+        return krbClient.requestTgtWithOptions(requestOptions);
+    }
+
+    /**
+     * Request a service ticket using an Access Token.
+     * @param token The auth token
+     * @param serverPrincipal The server principal
+     * @param armorCache The armor cache
+     * @return service ticket
+     * @throws KrbException e
+     */
+    public ServiceTicket requestServiceTicket(
+        AuthToken token, String serverPrincipal, String armorCache) throws KrbException {
+        if (!token.isAcToken()) {
+            throw new IllegalArgumentException("Access token is expected");
+        }
+
+        KOptions requestOptions = new KOptions();
+        requestOptions.add(KrbOption.TOKEN_USER_AC_TOKEN, token);
+        requestOptions.add(KrbOption.ARMOR_CACHE, armorCache);
+        requestOptions.add(KrbOption.SERVER_PRINCIPAL, serverPrincipal);
+
+        return krbClient.requestServiceTicket(requestOptions);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/759f26f9/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
index c30c1fa..9373a1d 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
@@ -51,7 +51,7 @@ public interface InternalKrbClient {
     TgtTicket requestTgtTicket(KOptions requestOptions) throws KrbException;
 
     /**
-     * Request a service ticket.
+     * Request a service ticket provided request options
      * @param requestOptions The request options
      * @return service ticket
      * @throws KrbException e


[05/19] directory-kerby git commit: DIRKRB-480 Separate PKINIT client out of KrbClient

Posted by pl...@apache.org.
DIRKRB-480 Separate PKINIT client out of KrbClient


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

Branch: refs/heads/pkinit-support
Commit: d10bf630b516e597b96c23d70614ea982efaa9c8
Parents: 759f26f
Author: Kai Zheng <ka...@intel.com>
Authored: Sun Nov 29 07:15:10 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sun Nov 29 07:15:10 2015 +0800

----------------------------------------------------------------------
 .../kerby/kerberos/kerb/client/KrbClient.java   | 26 -------
 .../kerberos/kerb/client/KrbPkinitClient.java   | 76 ++++++++++++++++++++
 2 files changed, 76 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/d10bf630/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
index 80bfa67..7053286 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
@@ -194,32 +194,6 @@ public class KrbClient {
     }
 
     /**
-     * Request a TGT with user x509 certificate credential
-     * @param certificate The certificate
-     * @param privateKey The private key
-     * @return TGT
-     * @throws KrbException e
-     */
-    public TgtTicket requestTgtWithCert(Certificate certificate,
-                                        PrivateKey privateKey) throws KrbException {
-        KOptions requestOptions = new KOptions();
-        requestOptions.add(KrbOption.PKINIT_X509_CERTIFICATE, certificate);
-        requestOptions.add(KrbOption.PKINIT_X509_PRIVATE_KEY, privateKey);
-        return requestTgtWithOptions(requestOptions);
-    }
-
-    /**
-     * Request a TGT with using Anonymous PKINIT
-     * @return TGT
-     * @throws KrbException e
-     */
-    public TgtTicket requestTgtWithPkintAnonymous() throws KrbException {
-        KOptions requestOptions = new KOptions();
-        requestOptions.add(KrbOption.USE_PKINIT_ANONYMOUS);
-        return requestTgtWithOptions(requestOptions);
-    }
-
-    /**
      * Request a TGT with using well prepared requestOptions.
      * @param requestOptions The request options
      * @return TGT

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/d10bf630/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
new file mode 100644
index 0000000..09ac113
--- /dev/null
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbPkinitClient.java
@@ -0,0 +1,76 @@
+/**
+ *  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.client;
+
+import org.apache.kerby.KOptions;
+import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+
+import java.security.PrivateKey;
+import java.security.cert.Certificate;
+
+/**
+ * A krb PKINIT client API for applications to interact with KDC using PKINIT.
+ */
+public class KrbPkinitClient {
+    private final KrbClient krbClient;
+
+    /**
+     * Constructor with prepared KrbClient.
+     * @param krbClient The krb client
+     */
+    public KrbPkinitClient(KrbClient krbClient) {
+        this.krbClient = krbClient;
+    }
+
+    /**
+     * Get krb client.
+     * @return KrbClient
+     */
+    public KrbClient getKrbClient() {
+        return krbClient;
+    }
+
+    /**
+     * Request a TGT with user x509 certificate credential
+     * @param certificate The certificate
+     * @param privateKey The private key
+     * @return TGT
+     * @throws KrbException e
+     */
+    public TgtTicket requestTgt(Certificate certificate,
+                                PrivateKey privateKey) throws KrbException {
+        KOptions requestOptions = new KOptions();
+        requestOptions.add(KrbOption.PKINIT_X509_CERTIFICATE, certificate);
+        requestOptions.add(KrbOption.PKINIT_X509_PRIVATE_KEY, privateKey);
+        return krbClient.requestTgtWithOptions(requestOptions);
+    }
+
+    /**
+     * Request a TGT with using Anonymous PKINIT
+     * @return TGT
+     * @throws KrbException e
+     */
+    public TgtTicket requestTgt() throws KrbException {
+        KOptions requestOptions = new KOptions();
+        requestOptions.add(KrbOption.USE_PKINIT_ANONYMOUS);
+        return krbClient.requestTgtWithOptions(requestOptions);
+    }
+}


[14/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/SamType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/SamType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/SamType.java
deleted file mode 100644
index bf8fad7..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/SamType.java
+++ /dev/null
@@ -1,65 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum SamType implements Asn1EnumType {
-    SAM_NONE(0),
-    /** safe SAM type enum for Enigma Logic */
-    SAM_TYPE_ENIGMA(1), // Enigma Logic"
-
-    /** safe SAM type enum for Digital Pathways */
-    SAM_TYPE_DIGI_PATH(2), // Digital Pathways
-
-    /** safe SAM type enum for S/key where KDC has key 0 */
-    SAM_TYPE_SKEY_K0(3), // S/key where KDC has key 0
-
-    /** safe SAM type enum for Traditional S/Key */
-    SAM_TYPE_SKEY(4), // Traditional S/Key
-
-    /** safe SAM type enum for Security Dynamics */
-    SAM_TYPE_SECURID(5), // Security Dynamics
-
-    /** safe SAM type enum for CRYPTOCard */
-    SAM_TYPE_CRYPTOCARD(6); // CRYPTOCard
-
-    private int value;
-
-    private SamType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static SamType fromValue(Integer value) {
-        if (value != null) {
-            for (SamType st : SamType.values()) {
-                if (value == st.getValue()) {
-                    return st;
-                }
-            }
-        }
-        return SAM_NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TokenFormat.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TokenFormat.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TokenFormat.java
deleted file mode 100644
index f4e2a7d..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TokenFormat.java
+++ /dev/null
@@ -1,50 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum TokenFormat implements Asn1EnumType {
-    NONE                (0),
-    JWT                 (1);
-
-    private final int value;
-
-    private TokenFormat(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static TokenFormat fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value.intValue()) {
-                    return (TokenFormat) e;
-                }
-            }
-        }
-
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.java
deleted file mode 100644
index 6859adf..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- TransitedEncoding       ::= SEQUENCE {
- tr-type         [0] Int32 -- must be registered --,
- contents        [1] OCTET STRING
- }
- */
-public class TransitedEncoding extends KrbSequenceType {
-    private static final int TR_TYPE = 0;
-    private static final int CONTENTS = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(TR_TYPE, 0, Asn1Integer.class),
-            new ExplicitField(CONTENTS, 1, Asn1OctetString.class)
-    };
-
-    public TransitedEncoding() {
-        super(fieldInfos);
-    }
-
-    public TransitedEncodingType getTrType() {
-        Integer value = getFieldAsInteger(TR_TYPE);
-        return TransitedEncodingType.fromValue(value);
-    }
-
-    public void setTrType(TransitedEncodingType trType) {
-        setField(TR_TYPE, trType);
-    }
-
-    public byte[] getContents() {
-        return getFieldAsOctets(CONTENTS);
-    }
-
-    public void setContents(byte[] contents) {
-        setFieldAsOctets(CONTENTS, contents);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncodingType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncodingType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncodingType.java
deleted file mode 100644
index a7616ac..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncodingType.java
+++ /dev/null
@@ -1,51 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum TransitedEncodingType implements Asn1EnumType {
-    UNKNOWN(-1),
-    NULL(0),
-    DOMAIN_X500_COMPRESS(1);
-
-    private final int value;
-
-    private TransitedEncodingType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static TransitedEncodingType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value.intValue()) {
-                    return (TransitedEncodingType) e;
-                }
-            }
-        }
-
-        return NULL;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/ArmorType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/ArmorType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/ArmorType.java
deleted file mode 100644
index 65184a7..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/ArmorType.java
+++ /dev/null
@@ -1,50 +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.spec.fast;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum ArmorType implements Asn1EnumType {
-    NONE                (0),
-    ARMOR_AP_REQUEST              (1);
-
-    private final int value;
-
-    private ArmorType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static ArmorType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value.intValue()) {
-                    return (ArmorType) e;
-                }
-            }
-        }
-
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/FastOption.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/FastOption.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/FastOption.java
deleted file mode 100644
index adc6445..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/FastOption.java
+++ /dev/null
@@ -1,51 +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.spec.fast;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum FastOption implements Asn1EnumType {
-    NONE(-1),
-    RESERVED(0),
-    HIDE_CLIENT_NAMES(1),
-
-    KDC_FOLLOW_REFERRALS(16);
-
-    private final int value;
-
-    private FastOption(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static FastOption fromValue(int value) {
-        for (Asn1EnumType e : values()) {
-            if (e.getValue() == value) {
-                return (FastOption) e;
-            }
-        }
-
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/FastOptions.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/FastOptions.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/FastOptions.java
deleted file mode 100644
index 994f195..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/FastOptions.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.spec.fast;
-
-import org.apache.kerby.asn1.type.Asn1Flags;
-
-public class FastOptions extends Asn1Flags {
-
-    public FastOptions() {
-        this(0);
-    }
-
-    public FastOptions(int value) {
-        setFlags(value);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java
deleted file mode 100644
index ec78b30..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java
+++ /dev/null
@@ -1,65 +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.spec.fast;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- KrbFastArmor ::= SEQUENCE {
-     armor-type   [0] Int32,
-     -- Type of the armor.
-     armor-value  [1] OCTET STRING,
-     -- Value of the armor.
- }
- */
-public class KrbFastArmor extends KrbSequenceType {
-    private static final int ARMOR_TYPE = 0;
-    private static final int ARMOR_VALUE = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ARMOR_TYPE, Asn1Integer.class),
-            new ExplicitField(ARMOR_VALUE, Asn1OctetString.class)
-    };
-
-    public KrbFastArmor() {
-        super(fieldInfos);
-    }
-
-    public ArmorType getArmorType() {
-        Integer value = getFieldAsInteger(ARMOR_TYPE);
-        return ArmorType.fromValue(value);
-    }
-
-    public void setArmorType(ArmorType armorType) {
-        setFieldAsInt(ARMOR_TYPE, armorType.getValue());
-    }
-
-    public byte[] getArmorValue() {
-        return getFieldAsOctets(ARMOR_VALUE);
-    }
-
-    public void setArmorValue(byte[] armorValue) {
-        setFieldAsOctets(ARMOR_VALUE, armorValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java
deleted file mode 100644
index 2c31c9f..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java
+++ /dev/null
@@ -1,53 +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.spec.fast;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-
-/**
- KrbFastArmoredRep ::= SEQUENCE {
-    enc-fast-rep      [0] EncryptedData, -- KrbFastResponse --
-    -- The encryption key is the armor key in the request, and
-    -- the key usage number is KEY_USAGE_FAST_REP.
- }
- */
-public class KrbFastArmoredRep extends KrbSequenceType {
-    private static final int ENC_FAST_REP = 0;
-
-    //private
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ENC_FAST_REP, EncryptedData.class)
-    };
-
-    public KrbFastArmoredRep() {
-        super(fieldInfos);
-    }
-
-    public EncryptedData getEncFastRep() {
-        return getFieldAs(ENC_FAST_REP, EncryptedData.class);
-    }
-
-    public void setEncFastRep(EncryptedData encFastRep) {
-        setFieldAs(ENC_FAST_REP, encFastRep);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java
deleted file mode 100644
index 85876b8..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java
+++ /dev/null
@@ -1,96 +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.spec.fast;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-
-/**
- KrbFastArmoredReq ::= SEQUENCE {
-     armor        [0] KrbFastArmor OPTIONAL,
-     -- Contains the armor that identifies the armor key.
-     -- MUST be present in AS-REQ.
-     req-checksum [1] Checksum,
-     -- For AS, contains the checksum performed over the type
-     -- KDC-REQ-BODY for the req-body field of the KDC-REQ
-     -- structure;
-     -- For TGS, contains the checksum performed over the type
-     -- AP-REQ in the PA-TGS-REQ padata.
-     -- The checksum key is the armor key, the checksum
-     -- type is the required checksum type for the enctype of
-     -- the armor key, and the key usage number is
-     -- KEY_USAGE_FAST_REQ_CHKSUM.
-     enc-fast-req [2] EncryptedData, -- KrbFastReq --
-     -- The encryption key is the armor key, and the key usage
-     -- number is KEY_USAGE_FAST_ENC.
- }
- */
-public class KrbFastArmoredReq extends KrbSequenceType {
-    private static final int ARMOR = 0;
-    private static final int REQ_CHECKSUM = 1;
-    private static final int ENC_FAST_REQ = 2;
-
-    private KrbFastReq fastReq;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ARMOR, KrbFastArmor.class),
-            new ExplicitField(REQ_CHECKSUM, CheckSum.class),
-            new ExplicitField(ENC_FAST_REQ, EncryptedData.class),
-    };
-
-    public KrbFastArmoredReq() {
-        super(fieldInfos);
-    }
-
-    public KrbFastArmor getArmor() {
-        return getFieldAs(ARMOR, KrbFastArmor.class);
-    }
-
-    public void setArmor(KrbFastArmor armor) {
-        setFieldAs(ARMOR, armor);
-    }
-
-    public CheckSum getReqChecksum() {
-        return getFieldAs(REQ_CHECKSUM, CheckSum.class);
-    }
-
-    public void setReqChecksum(CheckSum checkSum) {
-        setFieldAs(REQ_CHECKSUM, checkSum);
-    }
-
-    public KrbFastReq getFastReq() {
-        return fastReq;
-    }
-
-    public void setFastReq(KrbFastReq fastReq) {
-        this.fastReq = fastReq;
-    }
-
-    public EncryptedData getEncryptedFastReq() {
-        return getFieldAs(ENC_FAST_REQ, EncryptedData.class);
-    }
-
-    public void setEncryptedFastReq(EncryptedData encFastReq) {
-        setFieldAs(ENC_FAST_REQ, encFastReq);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java
deleted file mode 100644
index 0c08cc2..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java
+++ /dev/null
@@ -1,83 +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.spec.fast;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
-
-/**
- KrbFastFinished ::= SEQUENCE {
-     timestamp       [0] KerberosTime,
-     usec            [1] Microseconds,
-     -- timestamp and usec represent the time on the KDC when
-     -- the reply was generated.
-     crealm          [2] Realm,
-     cname           [3] PrincipalName,
-     -- Contains the client realm and the client name.
-     ticket-checksum [4] Checksum,
-     -- checksum of the ticket in the KDC-REP using the armor
-     -- and the key usage is KEY_USAGE_FAST_FINISH.
-     -- The checksum type is the required checksum type
-     -- of the armor key.
- }
- */
-public class KrbFastFinished extends KrbSequenceType {
-    private static final int FAST_OPTIONS = 0;
-    private static final int PADATA = 1;
-    private static final int REQ_BODY = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(FAST_OPTIONS, KrbFastArmor.class),
-            new ExplicitField(PADATA, PaData.class),
-            new ExplicitField(REQ_BODY, EncryptedData.class),
-    };
-
-    public KrbFastFinished() {
-        super(fieldInfos);
-    }
-
-    public KrbFastArmor getArmor() {
-        return getFieldAs(FAST_OPTIONS, KrbFastArmor.class);
-    }
-
-    public void setArmor(KrbFastArmor armor) {
-        setFieldAs(FAST_OPTIONS, armor);
-    }
-
-    public CheckSum getReqChecksum() {
-        return getFieldAs(PADATA, CheckSum.class);
-    }
-
-    public void setReqChecksum(CheckSum checkSum) {
-        setFieldAs(PADATA, checkSum);
-    }
-
-    public EncryptedData getEncFastReq() {
-        return getFieldAs(REQ_BODY, EncryptedData.class);
-    }
-
-    public void setEncFastReq(EncryptedData encFastReq) {
-        setFieldAs(REQ_BODY, encFastReq);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java
deleted file mode 100644
index 298a7ad..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java
+++ /dev/null
@@ -1,79 +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.spec.fast;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
-
-/**
- KrbFastReq ::= SEQUENCE {
-     fast-options [0] FastOptions,
-     -- Additional options.
-     padata       [1] SEQUENCE OF PA-DATA,
-     -- padata typed holes.
-     req-body     [2] KDC-REQ-BODY,
-     -- Contains the KDC request body as defined in Section
-     -- 5.4.1 of [RFC4120].
-     -- This req-body field is preferred over the outer field
-     -- in the KDC request.
- }
- */
-public class KrbFastReq extends KrbSequenceType {
-    private static final int FAST_OPTIONS = 0;
-    private static final int PADATA = 1;
-    private static final int REQ_BODY = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(FAST_OPTIONS, FastOptions.class),
-            new ExplicitField(PADATA, PaData.class),
-            new ExplicitField(REQ_BODY, KdcReqBody.class),
-    };
-
-    public KrbFastReq() {
-        super(fieldInfos);
-    }
-
-    public FastOptions getFastOptions() {
-        return getFieldAs(FAST_OPTIONS, FastOptions.class);
-    }
-
-    public void setFastOptions(FastOptions fastOptions) {
-        setFieldAs(FAST_OPTIONS, fastOptions);
-    }
-
-    public PaData getPaData() {
-        return getFieldAs(PADATA, PaData.class);
-    }
-
-    public void setPaData(PaData paData) {
-        setFieldAs(PADATA, paData);
-    }
-
-    public KdcReqBody getKdcReqBody() {
-        return getFieldAs(REQ_BODY, KdcReqBody.class);
-    }
-
-    public void setKdcReqBody(KdcReqBody kdcReqBody) {
-        setFieldAs(REQ_BODY, kdcReqBody);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java
deleted file mode 100644
index 64b9aa1..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java
+++ /dev/null
@@ -1,91 +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.spec.fast;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
-
-/**
- KrbFastResponse ::= SEQUENCE {
-     padata         [0] SEQUENCE OF PA-DATA,
-     -- padata typed holes.
-     strengthen-key [1] EncryptionKey OPTIONAL,
-     -- This, if present, strengthens the reply key for AS and
-     -- TGS. MUST be present for TGS.
-     -- MUST be absent in KRB-ERROR.
-     finished       [2] KrbFastFinished OPTIONAL,
-     -- Present in AS or TGS reply; absent otherwise.
-     nonce          [3] UInt32,
-     -- Nonce from the client request.
- }
- */
-public class KrbFastResponse extends KrbSequenceType {
-    private static final int PADATA = 0;
-    private static final int STRENGTHEN_KEY = 1;
-    private static final int FINISHED = 2;
-    private static final int NONCE = 3;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PADATA, PaData.class),
-            new ExplicitField(STRENGTHEN_KEY, EncryptionKey.class),
-            new ExplicitField(FINISHED, KrbFastFinished.class),
-            new ExplicitField(NONCE, Asn1Integer.class)
-    };
-
-    public KrbFastResponse() {
-        super(fieldInfos);
-    }
-
-    public PaData getPaData() {
-        return getFieldAs(PADATA, PaData.class);
-    }
-
-    public void setPaData(PaData paData) {
-        setFieldAs(PADATA, paData);
-    }
-
-    public EncryptionKey getStrengthenKey() {
-        return getFieldAs(STRENGTHEN_KEY, EncryptionKey.class);
-    }
-
-    public void setStrengthenKey(EncryptionKey strengthenKey) {
-        setFieldAs(STRENGTHEN_KEY, strengthenKey);
-    }
-
-    public KrbFastFinished getFastFinished() {
-        return getFieldAs(FINISHED, KrbFastFinished.class);
-    }
-
-    public void setFastFinished(KrbFastFinished fastFinished) {
-        setFieldAs(FINISHED, fastFinished);
-    }
-
-    public int getNonce() {
-        return getFieldAsInt(NONCE);
-    }
-
-    public void setNonce(int nonce) {
-        setFieldAsInt(NONCE, nonce);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java
deleted file mode 100644
index 8433245..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java
+++ /dev/null
@@ -1,81 +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.spec.fast;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-
-/**
- PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
-     pa-type      [0] Int32,
-     pa-hint      [1] OCTET STRING OPTIONAL,
-     pa-value     [2] OCTET STRING OPTIONAL,
- }
- */
-public class PaAuthnEntry extends KrbSequenceType {
-    private static final int PA_TYPE = 0;
-    private static final int PA_HINT = 1;
-    private static final int PA_VALUE = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PA_TYPE, Asn1Integer.class),
-            new ExplicitField(PA_HINT, Asn1OctetString.class),
-            new ExplicitField(PA_VALUE, Asn1OctetString.class)
-    };
-
-    public PaAuthnEntry() {
-        super(fieldInfos);
-    }
-
-    public PaAuthnEntry(PaDataType type, byte[] paData) {
-        this();
-        setPaType(type);
-        setPaValue(paData);
-    }
-
-    public PaDataType getPaType() {
-        Integer value = getFieldAsInteger(PA_TYPE);
-        return PaDataType.fromValue(value);
-    }
-
-    public void setPaType(PaDataType paDataType) {
-        setFieldAsInt(PA_TYPE, paDataType.getValue());
-    }
-
-    public byte[] getPaHint() {
-        return getFieldAsOctets(PA_HINT);
-    }
-
-    public void setPaHint(byte[] paHint) {
-        setFieldAsOctets(PA_HINT, paHint);
-    }
-
-    public byte[] getPaValue() {
-        return getFieldAsOctets(PA_VALUE);
-    }
-
-    public void setPaValue(byte[] paValue) {
-        setFieldAsOctets(PA_VALUE, paValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnSet.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnSet.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnSet.java
deleted file mode 100644
index ad3330d..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnSet.java
+++ /dev/null
@@ -1,29 +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.spec.fast;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- PA-AUTHENTICATION-SET ::= SEQUENCE OF PA-AUTHENTICATION-SET-ELEM
- */
-public class PaAuthnSet extends KrbSequenceOfType<PaAuthnEntry> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java
deleted file mode 100644
index b8cbd53..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java
+++ /dev/null
@@ -1,49 +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.spec.fast;
-
-import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-
-/**
- PA-FX-FAST-REPLY ::= CHOICE {
-    armored-data [0] KrbFastArmoredRep,
- }
- */
-public class PaFxFastReply extends Asn1Choice {
-    private static final int ARMORED_DATA = 0;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ARMORED_DATA, KrbFastArmoredRep.class)
-    };
-
-    public PaFxFastReply() {
-        super(fieldInfos);
-    }
-
-    public KrbFastArmoredRep getFastArmoredRep() {
-        return getFieldAs(ARMORED_DATA, KrbFastArmoredRep.class);
-    }
-
-    public void setFastArmoredRep(KrbFastArmoredRep fastArmoredRep) {
-        setFieldAs(ARMORED_DATA, fastArmoredRep);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java
deleted file mode 100644
index 3ff345c..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java
+++ /dev/null
@@ -1,49 +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.spec.fast;
-
-import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.ExplicitField;
-
-/**
- PA-FX-FAST-REQUEST ::= CHOICE {
-    armored-data [0] KrbFastArmoredReq,
- }
- */
-public class PaFxFastRequest extends Asn1Choice {
-    private static final int ARMORED_DATA = 0;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ARMORED_DATA, KrbFastArmoredReq.class)
-    };
-
-    public PaFxFastRequest() {
-        super(fieldInfos);
-    }
-
-    public KrbFastArmoredReq getFastArmoredReq() {
-        return getFieldAs(ARMORED_DATA, KrbFastArmoredReq.class);
-    }
-
-    public void setFastArmoredReq(KrbFastArmoredReq fastArmoredReq) {
-        setFieldAs(ARMORED_DATA, fastArmoredReq);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/AsRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/AsRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/AsRep.java
deleted file mode 100644
index 48f9e9d..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/AsRep.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.spec.kdc;
-
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-
-/**
- AS-REP          ::= [APPLICATION 11] KDC-REP
- */
-public class AsRep extends KdcRep {
-
-    public AsRep() {
-        super(KrbMessageType.AS_REP);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/AsReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/AsReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/AsReq.java
deleted file mode 100644
index e67afaf..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/AsReq.java
+++ /dev/null
@@ -1,31 +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.spec.kdc;
-
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-
-/**
- AS-REQ          ::= [APPLICATION 10] KDC-REQ
- */
-public class AsReq extends KdcReq {
-    public AsReq() {
-        super(KrbMessageType.AS_REQ);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncAsRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncAsRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncAsRepPart.java
deleted file mode 100644
index 7f0a459..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncAsRepPart.java
+++ /dev/null
@@ -1,31 +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.spec.kdc;
-
-/**
-EncASRepPart    ::= [APPLICATION 25] EncKDCRepPart
-*/
-public class EncAsRepPart extends EncKdcRepPart {
-    public static final int TAG = 25;
-
-    public EncAsRepPart() {
-        super(TAG);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.java
deleted file mode 100644
index f93d7df..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.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.spec.kdc;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.LastReq;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlags;
-
-/**
- EncKDCRepPart   ::= SEQUENCE {
- key             [0] EncryptionKey,
- last-req        [1] LastReq,
- nonce           [2] UInt32,
- key-expiration  [3] KerberosTime OPTIONAL,
- flags           [4] TicketFlags,
- authtime        [5] KerberosTime,
- starttime       [6] KerberosTime OPTIONAL,
- endtime         [7] KerberosTime,
- renew-till      [8] KerberosTime OPTIONAL,
- srealm          [9] Realm,
- sname           [10] PrincipalName,
- caddr           [11] HostAddresses OPTIONAL
- }
- */
-public abstract class EncKdcRepPart extends KrbAppSequenceType {
-    private static final int KEY = 0;
-    private static final int LAST_REQ = 1;
-    private static final int NONCE = 2;
-    private static final int KEY_EXPIRATION = 3;
-    private static final int FLAGS = 4;
-    private static final int AUTHTIME = 5;
-    private static final int STARTTIME = 6;
-    private static final int ENDTIME = 7;
-    private static final int RENEW_TILL = 8;
-    private static final int SREALM = 9;
-    private static final int SNAME = 10;
-    private static final int CADDR = 11;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(KEY, EncryptionKey.class),
-            new ExplicitField(LAST_REQ, LastReq.class),
-            new ExplicitField(NONCE, Asn1Integer.class),
-            new ExplicitField(KEY_EXPIRATION, KerberosTime.class),
-            new ExplicitField(FLAGS, TicketFlags.class),
-            new ExplicitField(AUTHTIME, KerberosTime.class),
-            new ExplicitField(STARTTIME, KerberosTime.class),
-            new ExplicitField(ENDTIME, KerberosTime.class),
-            new ExplicitField(RENEW_TILL, KerberosTime.class),
-            new ExplicitField(SREALM, KerberosString.class),
-            new ExplicitField(SNAME, PrincipalName.class),
-            new ExplicitField(CADDR, HostAddresses.class)
-    };
-
-    public EncKdcRepPart(int tagNo) {
-        super(tagNo, fieldInfos);
-    }
-
-    public EncryptionKey getKey() {
-        return getFieldAs(KEY, EncryptionKey.class);
-    }
-
-    public void setKey(EncryptionKey key) {
-        setFieldAs(KEY, key);
-    }
-
-    public LastReq getLastReq() {
-        return getFieldAs(LAST_REQ, LastReq.class);
-    }
-
-    public void setLastReq(LastReq lastReq) {
-        setFieldAs(LAST_REQ, lastReq);
-    }
-
-    public int getNonce() {
-        return getFieldAsInt(NONCE);
-    }
-
-    public void setNonce(int nonce) {
-        setFieldAsInt(NONCE, nonce);
-    }
-
-    public KerberosTime getKeyExpiration() {
-        return getFieldAsTime(KEY_EXPIRATION);
-    }
-
-    public void setKeyExpiration(KerberosTime keyExpiration) {
-        setFieldAs(KEY_EXPIRATION, keyExpiration);
-    }
-
-    public TicketFlags getFlags() {
-        return getFieldAs(FLAGS, TicketFlags.class);
-    }
-
-    public void setFlags(TicketFlags flags) {
-        setFieldAs(FLAGS, flags);
-    }
-
-    public KerberosTime getAuthTime() {
-        return getFieldAsTime(AUTHTIME);
-    }
-
-    public void setAuthTime(KerberosTime authTime) {
-        setFieldAs(AUTHTIME, authTime);
-    }
-
-    public KerberosTime getStartTime() {
-        return getFieldAsTime(STARTTIME);
-    }
-
-    public void setStartTime(KerberosTime startTime) {
-        setFieldAs(STARTTIME, startTime);
-    }
-
-    public KerberosTime getEndTime() {
-        return getFieldAsTime(ENDTIME);
-    }
-
-    public void setEndTime(KerberosTime endTime) {
-        setFieldAs(ENDTIME, endTime);
-    }
-
-    public KerberosTime getRenewTill() {
-        return getFieldAsTime(RENEW_TILL);
-    }
-
-    public void setRenewTill(KerberosTime renewTill) {
-        setFieldAs(RENEW_TILL, renewTill);
-    }
-
-    public String getSrealm() {
-        return getFieldAsString(SREALM);
-    }
-
-    public void setSrealm(String srealm) {
-        setFieldAsString(SREALM, srealm);
-    }
-
-    public PrincipalName getSname() {
-        return getFieldAs(SNAME, PrincipalName.class);
-    }
-
-    public void setSname(PrincipalName sname) {
-        setFieldAs(SNAME, sname);
-    }
-
-    public HostAddresses getCaddr() {
-        return getFieldAs(CADDR, HostAddresses.class);
-    }
-
-    public void setCaddr(HostAddresses caddr) {
-        setFieldAs(CADDR, caddr);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncTgsRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncTgsRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncTgsRepPart.java
deleted file mode 100644
index 4b3800b..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncTgsRepPart.java
+++ /dev/null
@@ -1,31 +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.spec.kdc;
-
-/**
- EncTGSRepPart   ::= [APPLICATION 26] EncKDCRepPart
- */
-public class EncTgsRepPart extends EncKdcRepPart {
-    public static final int TAG = 26;
-
-    public EncTgsRepPart() {
-        super(TAG);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcOption.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcOption.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcOption.java
deleted file mode 100644
index 98c1438..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcOption.java
+++ /dev/null
@@ -1,79 +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.spec.kdc;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum KdcOption implements Asn1EnumType {
-    NONE(-1),
-    //RESERVED(0x80000000),
-    FORWARDABLE(0x40000000),
-    FORWARDED(0x20000000),
-    PROXIABLE(0x10000000),
-    PROXY(0x08000000),
-    ALLOW_POSTDATE(0x04000000),
-    POSTDATED(0x02000000),
-    //UNUSED(0x01000000),
-    RENEWABLE(0x00800000),
-    //UNUSED(0x00400000),
-    //RESERVED(0x00200000),
-    //RESERVED(0x00100000),
-    //RESERVED(0x00080000),
-    //RESERVED(0x00040000),
-    CNAME_IN_ADDL_TKT(0x00020000),
-    CANONICALIZE(0x00010000),
-    REQUEST_ANONYMOUS(0x00008000),
-    //RESERVED(0x00004000),
-    //RESERVED(0x00002000),
-    //RESERVED(0x00001000),
-    //RESERVED(0x00000800),
-    //RESERVED(0x00000400),
-    //RESERVED(0x00000200),
-    //RESERVED(0x00000100),
-    //RESERVED(0x00000080),
-    //RESERVED(0x00000040),
-    DISABLE_TRANSITED_CHECK(0x00000020),
-    RENEWABLE_OK(0x00000010),
-    ENC_TKT_IN_SKEY(0x00000008),
-    //UNUSED(0x00000004),
-    RENEW(0x00000002),
-    VALIDATE(0x00000001);
-
-    private final int value;
-
-    private KdcOption(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static KdcOption fromValue(int value) {
-        for (Asn1EnumType e : values()) {
-            if (e.getValue() == value) {
-                return (KdcOption) e;
-            }
-        }
-
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcOptions.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcOptions.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcOptions.java
deleted file mode 100644
index 299b6d0..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcOptions.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.spec.kdc;
-
-import org.apache.kerby.asn1.type.Asn1Flags;
-
-public class KdcOptions extends Asn1Flags {
-
-    public KdcOptions() {
-        this(0);
-    }
-
-    public KdcOptions(int value) {
-        setFlags(value);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java
deleted file mode 100644
index 204dc2e..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java
+++ /dev/null
@@ -1,117 +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.spec.kdc;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-
-/**
- KDC-REP         ::= SEQUENCE {
- pvno            [0] INTEGER (5),
- msg-type        [1] INTEGER (11 -- AS -- | 13 -- TGS --),
- padata          [2] SEQUENCE OF PA-DATA OPTIONAL
- -- NOTE: not empty --,
- crealm          [3] Realm,
- cname           [4] PrincipalName,
- ticket          [5] Ticket,
- enc-part        [6] EncryptedData
- -- EncASRepPart or EncTGSRepPart,
- -- as appropriate
- }
- */
-public class KdcRep extends KrbMessage {
-    private static final int PADATA = 2;
-    private static final int CREALM = 3;
-    private static final int CNAME = 4;
-    private static final int TICKET = 5;
-    private static final int ENC_PART = 6;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PVNO, Asn1Integer.class),
-            new ExplicitField(MSG_TYPE, Asn1Integer.class),
-            new ExplicitField(PADATA, PaData.class),
-            new ExplicitField(CREALM, KerberosString.class),
-            new ExplicitField(CNAME, PrincipalName.class),
-            new ExplicitField(TICKET, Ticket.class),
-            new ExplicitField(ENC_PART, EncryptedData.class)
-    };
-
-    private EncKdcRepPart encPart;
-
-    public KdcRep(KrbMessageType msgType) {
-        super(msgType, fieldInfos);
-    }
-
-    public PaData getPaData() {
-        return getFieldAs(PADATA, PaData.class);
-    }
-
-    public void setPaData(PaData paData) {
-        setFieldAs(PADATA, paData);
-    }
-
-    public PrincipalName getCname() {
-        return getFieldAs(CNAME, PrincipalName.class);
-    }
-
-    public void setCname(PrincipalName sname) {
-        setFieldAs(CNAME, sname);
-    }
-
-    public String getCrealm() {
-        return getFieldAsString(CREALM);
-    }
-
-    public void setCrealm(String realm) {
-        setFieldAs(CREALM, new KerberosString(realm));
-    }
-
-    public Ticket getTicket() {
-        return getFieldAs(TICKET, Ticket.class);
-    }
-
-    public void setTicket(Ticket ticket) {
-        setFieldAs(TICKET, ticket);
-    }
-
-    public EncryptedData getEncryptedEncPart() {
-        return getFieldAs(ENC_PART, EncryptedData.class);
-    }
-
-    public void setEncryptedEncPart(EncryptedData encryptedEncPart) {
-        setFieldAs(ENC_PART, encryptedEncPart);
-    }
-
-    public EncKdcRepPart getEncPart() {
-        return encPart;
-    }
-
-    public void setEncPart(EncKdcRepPart encPart) {
-        this.encPart = encPart;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java
deleted file mode 100644
index b0119d0..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java
+++ /dev/null
@@ -1,77 +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.spec.kdc;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-
-/**
- KDC-REQ         ::= SEQUENCE {
- -- NOTE: first tag is [1], not [0]
- pvno            [1] INTEGER (5) ,
- msg-type        [2] INTEGER (10 -- AS -- | 12 -- TGS --),
- padata          [3] SEQUENCE OF PA-DATA OPTIONAL
- -- NOTE: not empty --,
- req-encodeBody        [4] KDC-REQ-BODY
- }
- */
-public class KdcReq extends KrbMessage {
-    private static final int PADATA = 2;
-    private static final int REQ_BODY = 3;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PVNO, 1, Asn1Integer.class),
-            new ExplicitField(MSG_TYPE, 2, Asn1Integer.class),
-            new ExplicitField(PADATA, 3, PaData.class),
-            new ExplicitField(REQ_BODY, 4, KdcReqBody.class)
-    };
-
-    public KdcReq(KrbMessageType msgType) {
-        super(msgType, fieldInfos);
-    }
-
-    public PaData getPaData() {
-        return getFieldAs(PADATA, PaData.class);
-    }
-
-    public void setPaData(PaData paData) {
-        setFieldAs(PADATA, paData);
-    }
-
-    public void addPaData(PaDataEntry paDataEntry) {
-        if (getPaData() == null) {
-            setPaData(new PaData());
-        }
-        getPaData().addElement(paDataEntry);
-    }
-
-    public KdcReqBody getReqBody() {
-        return getFieldAs(REQ_BODY, KdcReqBody.class);
-    }
-
-    public void setReqBody(KdcReqBody reqBody) {
-        setFieldAs(REQ_BODY, reqBody);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java
deleted file mode 100644
index 0e61b73..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java
+++ /dev/null
@@ -1,214 +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.spec.kdc;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbIntegers;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Tickets;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- KDC-REQ-BODY    ::= SEQUENCE {
- kdc-options             [0] KDCOptions,
- cname                   [1] PrincipalName OPTIONAL
- -- Used only in AS-REQ --,
- realm                   [2] Realm
- -- Server's realm
- -- Also client's in AS-REQ --,
- sname                   [3] PrincipalName OPTIONAL,
- from                    [4] KerberosTime OPTIONAL,
- till                    [5] KerberosTime,
- rtime                   [6] KerberosTime OPTIONAL,
- nonce                   [7] UInt32,
- etype                   [8] SEQUENCE OF Int32 -- EncryptionType
- -- in preference order --,
- addresses               [9] HostAddresses OPTIONAL,
- enc-authorization-data  [10] EncryptedData OPTIONAL
- -- AuthorizationData --,
- additional-tickets      [11] SEQUENCE OF Ticket OPTIONAL
- -- NOTE: not empty
- }
- */
-public class KdcReqBody extends KrbSequenceType {
-    private static final int KDC_OPTIONS = 0;
-    private static final int CNAME = 1;
-    private static final int REALM = 2;
-    private static final int SNAME = 3;
-    private static final int FROM = 4;
-    private static final int TILL = 5;
-    private static final int RTIME = 6;
-    private static final int NONCE = 7;
-    private static final int ETYPE = 8;
-    private static final int ADDRESSES = 9;
-    private static final int ENC_AUTHORIZATION_DATA = 10;
-    private static final int ADDITIONAL_TICKETS = 11;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(KDC_OPTIONS, KdcOptions.class),
-            new ExplicitField(CNAME, PrincipalName.class),
-            new ExplicitField(REALM, KerberosString.class),
-            new ExplicitField(SNAME, PrincipalName.class),
-            new ExplicitField(FROM, KerberosTime.class),
-            new ExplicitField(TILL, KerberosTime.class),
-            new ExplicitField(RTIME, KerberosTime.class),
-            new ExplicitField(NONCE, Asn1Integer.class),
-            new ExplicitField(ETYPE, KrbIntegers.class),
-            new ExplicitField(ADDRESSES, HostAddresses.class),
-            new ExplicitField(ENC_AUTHORIZATION_DATA, AuthorizationData.class),
-            new ExplicitField(ADDITIONAL_TICKETS, Tickets.class)
-    };
-
-    public KdcReqBody() {
-        super(fieldInfos);
-    }
-
-    private AuthorizationData authorizationData;
-
-    public KerberosTime getFrom() {
-        return getFieldAs(FROM, KerberosTime.class);
-    }
-
-    public void setFrom(KerberosTime from) {
-        setFieldAs(FROM, from);
-    }
-
-    public KerberosTime getTill() {
-        return getFieldAs(TILL, KerberosTime.class);
-    }
-
-    public void setTill(KerberosTime till) {
-        setFieldAs(TILL, till);
-    }
-
-    public KerberosTime getRtime() {
-        return getFieldAs(RTIME, KerberosTime.class);
-    }
-
-    public void setRtime(KerberosTime rtime) {
-        setFieldAs(RTIME, rtime);
-    }
-
-    public int getNonce() {
-        return getFieldAsInt(NONCE);
-    }
-
-    public void setNonce(int nonce) {
-        setFieldAsInt(NONCE, nonce);
-    }
-
-    public List<EncryptionType> getEtypes() {
-        KrbIntegers values = getFieldAs(ETYPE, KrbIntegers.class);
-        if (values == null) {
-            return Collections.emptyList();
-        }
-
-        List<EncryptionType> results = new ArrayList<EncryptionType>();
-        for (Integer value : values.getValues()) {
-            results.add(EncryptionType.fromValue(value));
-        }
-        return results;
-    }
-
-    public void setEtypes(List<EncryptionType> etypes) {
-        List<Integer> values = new ArrayList<Integer>();
-        for (EncryptionType etype: etypes) {
-            values.add(etype.getValue());
-        }
-        KrbIntegers value = new KrbIntegers(values);
-        setFieldAs(ETYPE, value);
-    }
-
-    public HostAddresses getAddresses() {
-        return getFieldAs(ADDRESSES, HostAddresses.class);
-    }
-
-    public void setAddresses(HostAddresses addresses) {
-        setFieldAs(ADDRESSES, addresses);
-    }
-
-    public EncryptedData getEncryptedAuthorizationData() {
-        return getFieldAs(ENC_AUTHORIZATION_DATA, EncryptedData.class);
-    }
-
-    public void setEncryptedAuthorizationData(EncryptedData encAuthorizationData) {
-        setFieldAs(ENC_AUTHORIZATION_DATA, encAuthorizationData);
-    }
-
-    public AuthorizationData getAuthorizationData() {
-        return authorizationData;
-    }
-
-    public void setAuthorizationData(AuthorizationData authorizationData) {
-        this.authorizationData = authorizationData;
-    }
-
-    public Tickets getAdditionalTickets() {
-        return getFieldAs(ADDITIONAL_TICKETS, Tickets.class);
-    }
-
-    public void setAdditionalTickets(Tickets additionalTickets) {
-        setFieldAs(ADDITIONAL_TICKETS, additionalTickets);
-    }
-
-    public KdcOptions getKdcOptions() {
-        return getFieldAs(KDC_OPTIONS, KdcOptions.class);
-    }
-
-    public void setKdcOptions(KdcOptions kdcOptions) {
-        setFieldAs(KDC_OPTIONS, kdcOptions);
-    }
-
-    public PrincipalName getSname() {
-        return getFieldAs(SNAME, PrincipalName.class);
-    }
-
-    public void setSname(PrincipalName sname) {
-        setFieldAs(SNAME, sname);
-    }
-
-    public PrincipalName getCname() {
-        return getFieldAs(CNAME, PrincipalName.class);
-    }
-
-    public void setCname(PrincipalName cname) {
-        setFieldAs(CNAME, cname);
-    }
-
-    public String getRealm() {
-        return getFieldAsString(REALM);
-    }
-
-    public void setRealm(String realm) {
-        setFieldAs(REALM, new KerberosString(realm));
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/TgsRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/TgsRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/TgsRep.java
deleted file mode 100644
index 7fafcbf..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/TgsRep.java
+++ /dev/null
@@ -1,31 +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.spec.kdc;
-
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-
-/**
- TGS-REP         ::= [APPLICATION 13] KDC-REP
- */
-public class TgsRep extends KdcRep {
-    public TgsRep() {
-        super(KrbMessageType.TGS_REP);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/TgsReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/TgsReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/TgsReq.java
deleted file mode 100644
index 2c44c11..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/TgsReq.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.spec.kdc;
-
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-
-/**
- TGS-REQ         ::= [APPLICATION 12] KDC-REQ
- */
-public class TgsReq extends KdcReq {
-
-    public TgsReq() {
-        super(KrbMessageType.TGS_REQ);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSet.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSet.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSet.java
deleted file mode 100644
index 922b3c7..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSet.java
+++ /dev/null
@@ -1,29 +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.spec.pa;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- PA-AUTHENTICATION-SET ::= SEQUENCE OF PA-AUTHENTICATION-SET-ELEM
- */
-public class PaAuthenticationSet extends KrbSequenceOfType<PaAuthenticationSetElem> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java
deleted file mode 100644
index c8878f0..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java
+++ /dev/null
@@ -1,75 +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.spec.pa;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
-     pa-type      [0] Int32,
-     -- same as padata-type.
-     pa-hint      [1] OCTET STRING OPTIONAL,
-     pa-value     [2] OCTET STRING OPTIONAL
- }
- */
-public class PaAuthenticationSetElem extends KrbSequenceType {
-    private static final int PA_TYPE = 0;
-    private static final int PA_HINT = 1;
-    private static final int PA_VALUE = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PA_TYPE, Asn1Integer.class),
-            new ExplicitField(PA_HINT, Asn1OctetString.class),
-            new ExplicitField(PA_VALUE, Asn1OctetString.class)
-    };
-
-    public PaAuthenticationSetElem() {
-        super(fieldInfos);
-    }
-
-    public PaDataType getPaType() {
-        Integer value = getFieldAsInteger(PA_TYPE);
-        return PaDataType.fromValue(value);
-    }
-
-    public void setPaType(PaDataType paDataType) {
-        setFieldAsInt(PA_TYPE, paDataType.getValue());
-    }
-
-    public byte[] getPaHint() {
-        return getFieldAsOctets(PA_HINT);
-    }
-
-    public void setPaHint(byte[] paHint) {
-        setFieldAsOctets(PA_HINT, paHint);
-    }
-
-    public byte[] getPaValue() {
-        return getFieldAsOctets(PA_VALUE);
-    }
-
-    public void setPaValue(byte[] paDataValue) {
-        setFieldAsOctets(PA_VALUE, paDataValue);
-    }
-}


[15/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/AuthToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/AuthToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/AuthToken.java
deleted file mode 100644
index e13fe6c..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/AuthToken.java
+++ /dev/null
@@ -1,144 +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.spec.base;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This is the token definition API according to TokenPreauth draft.
- */
-public interface AuthToken {
-
-    /**
-     * Get the token subject
-     * @return token subject
-     */
-    String getSubject();
-
-    /**
-     * Set token subject
-     * @param sub The token subject
-     */
-    void setSubject(String sub);
-
-    /**
-     * Get the token issuer
-     * @return token issuer
-     */
-    String getIssuer();
-
-    /**
-     * Set token issuer
-     * @param issuer The token issuer
-     */
-    void setIssuer(String issuer);
-
-    /**
-     * Get token audiences
-     * @return token audiences
-     */
-    List<String> getAudiences();
-
-    /**
-     * Set token audiences
-     * @param audiences The token audiences
-     */
-    void setAudiences(List<String> audiences);
-
-    /**
-     * Is an Identity Token ?
-     * @return true if it's an identity token, false otherwise
-     */
-    boolean isIdToken();
-
-    void isIdToken(boolean isIdToken);
-
-    /**
-     * Is an Access Token ?
-     * @return true if it's an access token, false otherwise
-     */
-    boolean isAcToken();
-
-    void isAcToken(boolean isAcToken);
-
-    /**
-     * Is a Bearer Token ?
-     * @return true if it's an bearer token, false otherwise
-     */
-    boolean isBearerToken();
-
-    /**
-     * Is an Holder-of-Key Token (HOK) ?
-     * @return true if it's a HOK token, false otherwise
-     */
-    boolean isHolderOfKeyToken();
-
-    /**
-     * Get token expired data time.
-     * @return expired time
-     */
-    Date getExpiredTime();
-
-    /**
-     * Set token expired time
-     * @param exp The token expired time
-     */
-    void setExpirationTime(Date exp);
-
-    /**
-     * Get token not before time.
-     * @return not before time
-     */
-    Date getNotBeforeTime();
-
-    /**
-     * Set token not before time.
-     * @param nbt The time
-     */
-    void setNotBeforeTime(Date nbt);
-
-    /**
-     * Get token issued at time when the token is issued.
-     * @return issued at time
-     */
-    Date getIssueTime();
-
-    /**
-     * Set token issued at time.
-     * @param iat Time time when token issued
-     */
-    void setIssueTime(Date iat);
-
-    /**
-     * Get token attributes.
-     * @return token attributes
-     */
-    Map<String, Object> getAttributes();
-
-    /**
-     * Add a token attribute.
-     * @param name The attribute name
-     * @param value The attribute value
-     */
-    void addAttribute(String name, Object value);
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java
deleted file mode 100644
index b79f80d..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java
+++ /dev/null
@@ -1,114 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-import java.util.Arrays;
-
-/**
- Checksum        ::= SEQUENCE {
- cksumtype       [0] Int32,
- checksum        [1] OCTET STRING
- }
- */
-public class CheckSum extends KrbSequenceType {
-    private static final int CKSUM_TYPE = 0;
-    private static final int CHECK_SUM = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-        new ExplicitField(CKSUM_TYPE, 0, Asn1Integer.class),
-        new ExplicitField(CHECK_SUM, 1, Asn1OctetString.class)
-    };
-
-    public CheckSum() {
-        super(fieldInfos);
-    }
-
-    public CheckSum(CheckSumType cksumType, byte[] checksum) {
-        this();
-
-        setCksumtype(cksumType);
-        setChecksum(checksum);
-    }
-
-    public CheckSum(int cksumType, byte[] checksum) {
-        this(CheckSumType.fromValue(cksumType), checksum);
-    }
-
-    public CheckSumType getCksumtype() {
-        Integer value = getFieldAsInteger(CKSUM_TYPE);
-        return CheckSumType.fromValue(value);
-    }
-
-    public void setCksumtype(CheckSumType cksumtype) {
-        setFieldAsInt(CKSUM_TYPE, cksumtype.getValue());
-    }
-
-    public byte[] getChecksum() {
-        return getFieldAsOctets(CHECK_SUM);
-    }
-
-    public void setChecksum(byte[] checksum) {
-        setFieldAsOctets(CHECK_SUM, checksum);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-        if (other == null || getClass() != other.getClass()) {
-            return false;
-        }
-
-        CheckSum that = (CheckSum) other;
-
-        if (getCksumtype() != that.getCksumtype()) {
-            return false;
-        }
-
-        return Arrays.equals(getChecksum(), that.getChecksum());
-    }
-    
-    @Override
-    public int hashCode() {
-        int result = 0;
-        if (getCksumtype() != null) {
-            result = 31 * result + getCksumtype().hashCode();
-        }
-        if (getChecksum() != null) {
-            result = 31 * result + Arrays.hashCode(getChecksum());
-        }
-        return result;
-    }
-
-    public boolean isEqual(CheckSum other) {
-        return this.equals(other);
-    }
-
-    public boolean isEqual(byte[] cksumBytes) {
-        return Arrays.equals(getChecksum(), cksumBytes);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSumType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSumType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSumType.java
deleted file mode 100644
index 8e6347a..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSumType.java
+++ /dev/null
@@ -1,123 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum CheckSumType implements Asn1EnumType {
-    NONE(0, "none", "None checksum type"),
-
-    CRC32(0x0001, "crc32", "CRC-32"),
-
-    RSA_MD4(0x0002, "md4", "RSA-MD4"),
-
-    RSA_MD4_DES(0x0003, "md4-des", "RSA-MD4 with DES cbc mode"),
-
-    DES_CBC(0x0004, "des-cbc", "DES cbc mode"),
-    DES_MAC(0x0004, "des-mac", "DES cbc mode"),
-
-    //des-mac-k
-
-    //rsa-md4-des-k
-
-    RSA_MD5(0x0007, "md5", "RSA-MD5"),
-
-    RSA_MD5_DES(0x0008, "md5-des", "RSA-MD5 with DES cbc mode"),
-
-    NIST_SHA(0x0009, "sha", "NIST-SHA"),
-
-    HMAC_SHA1_DES3(0x000c, "hmac-sha1-des3", "HMAC-SHA1 DES3 key"),
-    HMAC_SHA1_DES3_KD(0x000c, "hmac-sha1-des3-kd", "HMAC-SHA1 DES3 key"),
-
-    ////RFC 3962. Used with ENCTYPE_AES128_CTS_HMAC_SHA1_96
-    HMAC_SHA1_96_AES128(0x000f, "hmac-sha1-96-aes128", "HMAC-SHA1 AES128 key"),
-
-    //RFC 3962. Used with ENCTYPE_AES256_CTS_HMAC_SHA1_96
-    HMAC_SHA1_96_AES256(0x0010, "hmac-sha1-96-aes256", "HMAC-SHA1 AES256 key"),
-
-    //RFC 6803
-    CMAC_CAMELLIA128(0x0011, "cmac-camellia128", "CMAC Camellia128 key"),
-
-    //RFC 6803
-    CMAC_CAMELLIA256(0x0012, "cmac-camellia256", "CMAC Camellia256 key"),
-
-    //Microsoft netlogon cksumtype
-    MD5_HMAC_ARCFOUR(-137, "md5-hmac-rc4", "Microsoft MD5 HMAC"),
-
-    //Microsoft md5 hmac cksumtype
-    HMAC_MD5_ARCFOUR(-138, "hmac-md5-arcfour", "Microsoft HMAC MD5"),
-    HMAC_MD5_ENC(-138, "hmac-md5-enc", "Microsoft HMAC MD5"),
-    HMAC_MD5_RC4(-138, "hmac-md5-rc4", "Microsoft HMAC MD5");
-
-    private final int value;
-
-    private final String name;
-
-    private final String displayName;
-
-    private CheckSumType(int value, String name, String displayName) {
-        this.value = value;
-        this.name = name;
-        this.displayName = displayName;
-    }
-
-    public static CheckSumType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value) {
-                    return (CheckSumType) e;
-                }
-            }
-        }
-        return NONE;
-    }
-
-    public static CheckSumType fromName(String name) {
-        if (name != null) {
-            for (CheckSumType cs : values()) {
-                if (cs.getName().equals(name)) {
-                    return cs;
-                }
-            }
-        }
-        return NONE;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getDisplayName() {
-        return displayName;
-    }
-
-    /**
-     * Is the type uses AES256 or not
-     * @return true if uses AES256, false otherwise.
-     */
-    public boolean usesAES256() {
-        return name.contains("aes256");
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java
deleted file mode 100644
index e72238b..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java
+++ /dev/null
@@ -1,115 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-import java.util.Arrays;
-
-/**
- EncryptedData   ::= SEQUENCE {
- etype   [0] Int32 -- EncryptionType --,
- kvno    [1] UInt32 OPTIONAL,
- cipher  [2] OCTET STRING -- ciphertext
- }
- */
-public class EncryptedData extends KrbSequenceType {
-    private static final int ETYPE = 0;
-    private static final int KVNO = 1;
-    private static final int CIPHER = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ETYPE, 0, Asn1Integer.class),
-            new ExplicitField(KVNO, 1, Asn1Integer.class),
-            new ExplicitField(CIPHER, 2, Asn1OctetString.class)
-    };
-
-    public EncryptedData() {
-        super(fieldInfos);
-    }
-
-    public EncryptionType getEType() {
-        Integer value = getFieldAsInteger(ETYPE);
-        return EncryptionType.fromValue(value);
-    }
-
-    public void setEType(EncryptionType eType) {
-        setFieldAsInt(ETYPE, eType.getValue());
-    }
-
-    public int getKvno() {
-        Integer value = getFieldAsInteger(KVNO);
-        if (value != null) {
-            return value.intValue();
-        }
-        return -1;
-    }
-
-    public void setKvno(int kvno) {
-        setFieldAsInt(KVNO, kvno);
-    }
-
-    public byte[] getCipher() {
-        return getFieldAsOctets(CIPHER);
-    }
-
-    public void setCipher(byte[] cipher) {
-        setFieldAsOctets(CIPHER, cipher);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-
-        EncryptedData that = (EncryptedData) o;
-
-        /*
-        if (getKvno() != -1 && that.getKvno() != -1 &&
-                getKvno() != that.getKvno()) return false;
-        */
-
-        if (getEType() != that.getEType()) {
-            return false;
-        }
-
-        return Arrays.equals(getCipher(), that.getCipher());
-    }
-    
-    @Override
-    public int hashCode() {
-        int result = 0;
-        if (getEType() != null) {
-            result = 31 * result + getEType().hashCode();
-        }
-        if (getCipher() != null) {
-            result = 31 * result + Arrays.hashCode(getCipher());
-        }
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java
deleted file mode 100644
index 7df2fd2..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java
+++ /dev/null
@@ -1,128 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-import java.util.Arrays;
-
-/**
- EncryptionKey   ::= SEQUENCE {
- keytype         [0] Int32 -- actually encryption type --,
- keyvalue        [1] OCTET STRING
- }
- */
-public class EncryptionKey extends KrbSequenceType {
-    private static final int KEY_TYPE = 0;
-    private static final int KEY_VALUE = 1;
-
-    private int kvno = -1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(KEY_TYPE, 0, Asn1Integer.class),
-            new ExplicitField(KEY_VALUE, 1, Asn1OctetString.class)
-    };
-
-    public EncryptionKey() {
-        super(fieldInfos);
-    }
-
-    public EncryptionKey(int keyType, byte[] keyData) {
-        this(keyType, keyData, -1);
-    }
-
-    public EncryptionKey(int keyType, byte[] keyData, int kvno) {
-        this(EncryptionType.fromValue(keyType), keyData, kvno);
-    }
-
-    public EncryptionKey(EncryptionType keyType, byte[] keyData) {
-        this(keyType, keyData, -1);
-    }
-
-    public EncryptionKey(EncryptionType keyType, byte[] keyData, int kvno) {
-        this();
-        setKeyType(keyType);
-        setKeyData(keyData);
-        setKvno(kvno);
-    }
-
-    public EncryptionType getKeyType() {
-        Integer value = getFieldAsInteger(KEY_TYPE);
-        return EncryptionType.fromValue(value);
-    }
-
-    public void setKeyType(EncryptionType keyType) {
-        setFieldAsInt(KEY_TYPE, keyType.getValue());
-    }
-
-    public byte[] getKeyData() {
-        return getFieldAsOctets(KEY_VALUE);
-    }
-
-    public void setKeyData(byte[] keyData) {
-        setFieldAsOctets(KEY_VALUE, keyData);
-    }
-
-    public void setKvno(int kvno) {
-        this.kvno = kvno;
-    }
-
-    public int getKvno() {
-        return kvno;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        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 (getKeyType() != that.getKeyType()) {
-            return false;
-        }
-
-        return Arrays.equals(getKeyData(), that.getKeyData());
-    }
-    
-    @Override
-    public int hashCode() {
-        int result = kvno;
-        if (getKeyType() != null) {
-            result = 31 * result + getKeyType().hashCode();
-        }
-        if (getKeyData() != null) {
-            result = 31 * result + Arrays.hashCode(getKeyData());
-        }
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionType.java
deleted file mode 100644
index 752ca27..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionType.java
+++ /dev/null
@@ -1,140 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-/**
- * According to krb5.hin
- */
-public enum EncryptionType implements Asn1EnumType {
-
-    NONE(0, "none", "None encryption type"),
-
-    DES_CBC_CRC(0x0001, "des-cbc-crc", "DES cbc mode with CRC-32"),
-
-    DES_CBC_MD4(0x0002, "des-cbc-md4", "DES cbc mode with RSA-MD4"),
-
-    DES_CBC_MD5(0x0003, "des-cbc-md5", "DES cbc mode with RSA-MD5"),
-    DES(0x0003, "des", "DES cbc mode with RSA-MD5"),
-
-    DES_CBC_RAW(0x0004, "des-cbc-raw", "DES cbc mode raw"),
-
-    DES3_CBC_SHA(0x0005, "des3-cbc-sha", "DES-3 cbc with SHA1"),
-
-    DES3_CBC_RAW(0x0006, "des3-cbc-raw", "Triple DES cbc mode raw"),
-
-    DES_HMAC_SHA1(0x0008, "des-hmac-sha1", "DES with HMAC/sha1"),
-
-    DSA_SHA1_CMS(0x0009, "dsa-sha1-cms", "DSA with SHA1, CMS signature"),
-
-    MD5_RSA_CMS(0x000a, "md5-rsa-cms", "MD5 with RSA, CMS signature"),
-
-    SHA1_RSA_CMS(0x000b, "sha1-rsa-cms", "SHA1 with RSA, CMS signature"),
-
-    RC2_CBC_ENV(0x000c, "rc2-cbc-env", "RC2 cbc mode, CMS enveloped data"),
-
-    RSA_ENV(0x000d, "rsa-env", "RSA encryption, CMS enveloped data"),
-
-    RSA_ES_OAEP_ENV(0x000e, "rsa-es-oaep-env", "RSA w/OEAP encryption, CMS enveloped data"),
-
-    DES3_CBC_ENV(0x000f, "des3-cbc-env", "DES-3 cbc mode, CMS enveloped data"),
-
-    DES3_CBC_SHA1(0x0010, "des3-cbc-sha1", "Triple DES cbc mode with HMAC/sha1"),
-    DES3_HMAC_SHA1(0x0010, "des3-hmac-sha1", "Triple DES cbc mode with HMAC/sha1"),
-    DES3_CBC_SHA1_KD(0x0010, "des3-cbc-sha1-kd", "Triple DES cbc mode with HMAC/sha1"),
-
-    AES128_CTS_HMAC_SHA1_96 (0x0011, "aes128-cts-hmac-sha1-96", "AES-128 CTS mode with 96-bit SHA-1 HMAC"),
-    AES128_CTS (0x0011, "aes128-cts", "AES-128 CTS mode with 96-bit SHA-1 HMAC"),
-
-    AES256_CTS_HMAC_SHA1_96(0x0012, "aes256-cts-hmac-sha1-96", "AES-256 CTS mode with 96-bit SHA-1 HMAC"),
-    AES256_CTS(0x0012, "aes256-cts", "AES-256 CTS mode with 96-bit SHA-1 HMAC"),
-
-    ARCFOUR_HMAC(0x0017, "arcfour-hmac", "ArcFour with HMAC/md5"),
-    RC4_HMAC(0x0017, "rc4-hmac", "ArcFour with HMAC/md5"),
-    ARCFOUR_HMAC_MD5(0x0017, "arcfour-hmac-md5", "ArcFour with HMAC/md5"),
-
-    ARCFOUR_HMAC_EXP(0x0018, "arcfour-hmac-exp", "Exportable ArcFour with HMAC/md5"),
-    RC4_HMAC_EXP(0x0018, "rc4-hmac-exp", "Exportable ArcFour with HMAC/md5"),
-    ARCFOUR_HMAC_MD5_EXP(0x0018, "arcfour-hmac-md5-exp", "Exportable ArcFour with HMAC/md5"),
-
-    CAMELLIA128_CTS_CMAC(0x0019, "camellia128-cts-cmac", "Camellia-128 CTS mode with CMAC"),
-    CAMELLIA128_CTS(0x0019, "camellia128-cts", "Camellia-128 CTS mode with CMAC"),
-
-    CAMELLIA256_CTS_CMAC(0x001a, "camellia256-cts-cmac", "Camellia-256 CTS mode with CMAC"),
-    CAMELLIA256_CTS(0x001a, "camellia256-cts", "Camellia-256 CTS mode with CMAC");
-
-    //UNKNOWN(0x01ff, "UNKNOWN", "Unknown encryption type");
-
-    private final int value;
-
-    private final String name;
-
-    private final String displayName;
-
-    private EncryptionType(int value, String name, String displayName) {
-        this.value = value;
-        this.name = name;
-        this.displayName = displayName;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getDisplayName() {
-        return displayName;
-    }
-
-    /**
-     * Is the type uses AES256 or not
-     * @return true if uses AES256, false otherwise.
-     */
-    public boolean usesAES256() {
-        return name.contains("aes256");
-    }
-
-    public static EncryptionType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value) {
-                    return (EncryptionType) e;
-                }
-            }
-        }
-        return NONE;
-    }
-
-    public static EncryptionType fromName(String name) {
-        if (name != null) {
-            for (EncryptionType e : values()) {
-                if (e.getName().equals(name)) {
-                    return (EncryptionType) e;
-                }
-            }
-        }
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo.java
deleted file mode 100644
index 76abe24..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo.java
+++ /dev/null
@@ -1,29 +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.spec.base;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- ETYPE-INFO              ::= SEQUENCE OF ETYPE-INFO-ENTRY
- */
-public class EtypeInfo extends KrbSequenceOfType<EtypeInfoEntry> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2.java
deleted file mode 100644
index 47013aa..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2.java
+++ /dev/null
@@ -1,29 +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.spec.base;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- ETYPE-INFO2             ::= SEQUENCE SIZE (1..MAX) OF ETYPE-INFO2-ENTRY
- */
-public class EtypeInfo2 extends KrbSequenceOfType<EtypeInfo2Entry> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java
deleted file mode 100644
index 5da0a4a..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java
+++ /dev/null
@@ -1,74 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- ETYPE-INFO2-ENTRY       ::= SEQUENCE {
- etype           [0] Int32,
- salt            [1] KerberosString OPTIONAL,
- s2kparams       [2] OCTET STRING OPTIONAL
- }
- */
-public class EtypeInfo2Entry extends KrbSequenceType {
-    private static final int ETYPE = 0;
-    private static final int SALT = 1;
-    private static final int S2KPARAMS = 2;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ETYPE, 0, Asn1Integer.class),
-            new ExplicitField(SALT, 1, KerberosString.class),
-            new ExplicitField(S2KPARAMS, 2, Asn1OctetString.class)
-    };
-
-    public EtypeInfo2Entry() {
-        super(fieldInfos);
-    }
-
-    public EncryptionType getEtype() {
-        return EncryptionType.fromValue(getFieldAsInt(ETYPE));
-    }
-
-    public void setEtype(EncryptionType etype) {
-        setField(ETYPE, etype);
-    }
-
-    public String getSalt() {
-        return getFieldAsString(SALT);
-    }
-
-    public void setSalt(String salt) {
-        setFieldAsString(SALT, salt);
-    }
-
-    public byte[] getS2kParams() {
-        return getFieldAsOctets(S2KPARAMS);
-    }
-
-    public void setS2kParams(byte[] s2kParams) {
-        setFieldAsOctets(S2KPARAMS, s2kParams);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java
deleted file mode 100644
index d9cc98a..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java
+++ /dev/null
@@ -1,62 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- ETYPE-INFO-ENTRY        ::= SEQUENCE {
- etype           [0] Int32,
- salt            [1] OCTET STRING OPTIONAL
- }
- */
-public class EtypeInfoEntry extends KrbSequenceType {
-    private static final int ETYPE = 0;
-    private static final int SALT = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ETYPE, 0, Asn1Integer.class),
-            new ExplicitField(SALT, 1, Asn1OctetString.class)
-    };
-
-    public EtypeInfoEntry() {
-        super(fieldInfos);
-    }
-
-    public EncryptionType getEtype() {
-        return EncryptionType.fromValue(getFieldAsInt(ETYPE));
-    }
-
-    public void setEtype(EncryptionType etype) {
-        setField(ETYPE, etype);
-    }
-
-    public byte[] getSalt() {
-        return getFieldAsOctets(SALT);
-    }
-
-    public void setSalt(byte[] salt) {
-        setFieldAsOctets(SALT, salt);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddrType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddrType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddrType.java
deleted file mode 100644
index 33342da..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddrType.java
+++ /dev/null
@@ -1,100 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum HostAddrType implements Asn1EnumType {
-    /**
-     * Constant for the "null" host address type.
-     */
-    NULL(0),
-
-    /**
-     * Constant for the "Internet" host address type.
-     */
-    ADDRTYPE_INET(2),
-
-    /**
-     * Constant for the "Arpanet" host address type.
-     */
-    ADDRTYPE_IMPLINK(3),
-
-    /**
-     * Constant for the "CHAOS" host address type.
-     */
-    ADDRTYPE_CHAOS(5),
-
-    /**
-     * Constant for the "XEROX Network Services" host address type.
-     */
-    ADDRTYPE_XNS(6),
-
-    /**
-     * Constant for the "OSI" host address type.
-     */
-    ADDRTYPE_OSI(7),
-
-    /**
-     * Constant for the "DECnet" host address type.
-     */
-    ADDRTYPE_DECNET(12),
-
-    /**
-     * Constant for the "AppleTalk" host address type.
-     */
-    ADDRTYPE_APPLETALK(16),
-
-    /**
-     * Constant for the "NetBios" host address type.
-     *
-     * Not in RFC
-     */
-    ADDRTYPE_NETBIOS(20),
-
-    /**
-     * Constant for the "Internet Protocol V6" host address type.
-     */
-    ADDRTYPE_INET6(24);
-
-
-    private final int value;
-
-    private HostAddrType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static HostAddrType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value.intValue()) {
-                    return (HostAddrType) e;
-                }
-            }
-        }
-
-        return NULL;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java
deleted file mode 100644
index 2f26b6e..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java
+++ /dev/null
@@ -1,110 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-import java.net.InetAddress;
-import java.util.Arrays;
-
-/*
-HostAddress     ::= SEQUENCE  {
-        addr-type       [0] Int32,
-        address         [1] OCTET STRING
-}
- */
-public class HostAddress extends KrbSequenceType {
-    private static final int ADDR_TYPE = 0;
-    private static final int ADDRESS = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(ADDR_TYPE, 0, Asn1Integer.class),
-            new ExplicitField(ADDRESS, 1, Asn1OctetString.class)
-    };
-
-    public HostAddress() {
-        super(fieldInfos);
-    }
-
-    public HostAddress(InetAddress inetAddress) {
-        this();
-
-        setAddrType(HostAddrType.ADDRTYPE_INET);
-        setAddress(inetAddress.getAddress());
-    }
-
-    public HostAddrType getAddrType() {
-        Integer value = getFieldAsInteger(ADDR_TYPE);
-        return HostAddrType.fromValue(value);
-    }
-
-    public void setAddrType(HostAddrType addrType) {
-        setField(ADDR_TYPE, addrType);
-    }
-
-    public byte[] getAddress() {
-        return getFieldAsOctets(ADDRESS);
-    }
-
-    public void setAddress(byte[] address) {
-        setFieldAsOctets(ADDRESS, address);
-    }
-
-    public boolean equalsWith(InetAddress address) {
-        if (address == null) {
-            return false;
-        }
-        HostAddress that = new HostAddress(address);
-        return that.equals(this);
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (other == null) {
-            return false;
-        }
-        if (other == this) {
-            return true;
-        } else if (!(other instanceof HostAddress)) {
-            return false;
-        }
-
-        HostAddress that = (HostAddress) other;
-        if (getAddrType() == that.getAddrType()
-                && Arrays.equals(getAddress(), that.getAddress())) {
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getAddrType().getValue();
-        if (getAddress() != null) {
-            result = 31 * result + Arrays.hashCode(getAddress());
-        }
-
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddresses.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddresses.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddresses.java
deleted file mode 100644
index a704d8b..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddresses.java
+++ /dev/null
@@ -1,43 +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.spec.base;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-import java.net.InetAddress;
-
-/**
- -- NOTE: HostAddresses is always used as an OPTIONAL field and
- -- should not be empty.
- HostAddresses   -- NOTE: subtly different from rfc1510,
- -- but has a value mapping and encodes the same
- ::= SEQUENCE OF HostAddress
- */
-public class HostAddresses extends KrbSequenceOfType<HostAddress> {
-
-    public boolean contains(InetAddress address) {
-        for (HostAddress hostAddress : getElements()) {
-            if (hostAddress.equalsWith(address)) {
-                return true;
-            }
-        }
-        return false;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KeyUsage.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KeyUsage.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KeyUsage.java
deleted file mode 100644
index 1715865..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KeyUsage.java
+++ /dev/null
@@ -1,129 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-/**
- * From krb5.hin
- */
-public enum KeyUsage implements Asn1EnumType {
-    UNKNOWN(-1),
-    NONE(0),
-    //AS-REQ PA-ENC-TIMESTAMP padata timestamp, encrypted with the client key
-    AS_REQ_PA_ENC_TS(1),
-    //AS-REP Ticket and TGS-REP Ticket (includes TGS session key or application session key),
-    //encrypted with the service key (Section 5.3)
-    KDC_REP_TICKET(2),
-    //AS-REP encrypted part (includes TGS session key or application session key),
-    //encrypted with the client key (Section 5.4.2)
-    AS_REP_ENCPART(3),
-    //TGS-REQ KDC-REQ-BODY AuthorizationData,
-    //encrypted with the TGS session key (Section 5.4.1)
-    TGS_REQ_AD_SESSKEY(4),
-    //TGS-REQ KDC-REQ-BODY AuthorizationData,
-    //encrypted with the TGS authenticator subkey (Section 5.4.1)
-    TGS_REQ_AD_SUBKEY(5),
-    //TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator cksum,
-    //keyed with the TGS session key (Section 5.5.1)
-    TGS_REQ_AUTH_CKSUM(6),
-    //TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator (includes TGS authenticator subkey),
-    //encrypted with the TGS session key (Section 5.5.1)
-    TGS_REQ_AUTH(7),
-    //TGS-REP encrypted part (includes application session key),
-    //encrypted with the TGS session key (Section 5.4.2)
-    TGS_REP_ENCPART_SESSKEY(8),
-    //TGS-REP encrypted part (includes application session key),
-    //encrypted with the TGS authenticator subkey (Section 5.4.2)
-    TGS_REP_ENCPART_SUBKEY(9),
-    //AP-REQ Authenticator cksum, keyed with the application session key (Section 5.5.1)
-    AP_REQ_AUTH_CKSUM(10),
-    //AP-REQ Authenticator (includes application authenticator subkey),
-    //encrypted with the application session key (Section 5.5.1)
-    AP_REQ_AUTH(11),
-    //AP-REP encrypted part (includes application session subkey),
-    //encrypted with the application session key (Section 5.5.2)
-    AP_REP_ENCPART(12),
-    //KRB-PRIV encrypted part, encrypted with a key chosen by the application (Section 5.7.1)
-    KRB_PRIV_ENCPART(13),
-    KRB_CRED_ENCPART(14),
-    KRB_SAFE_CKSUM(15),
-    APP_DATA_ENCRYPT(16),
-    APP_DATA_CKSUM(17),
-    KRB_ERROR_CKSUM(18),
-    AD_KDCISSUED_CKSUM(19),
-    AD_MTE(20),
-    AD_ITE(21),
-    GSS_TOK_MIC(22),
-    GSS_TOK_WRAP_INTEG(23),
-    GSS_TOK_WRAP_PRIV(24),
-    //Defined in Integrating SAM Mechanisms with Kerberos draft
-    PA_SAM_CHALLENGE_CKSUM(25),
-    //Note conflict with @ref PA_S4U_X509_USER_REQUEST
-    PA_SAM_CHALLENGE_TRACKID(26),
-    //Note conflict with @ref PA_S4U_X509_USER_REPLY
-    PA_SAM_RESPONSE(27),
-    //Defined in [MS-SFU]
-    //Note conflict with @ref PA_SAM_CHALLENGE_TRACKID
-    PA_S4U_X509_USER_REQUEST(26),
-    //Note conflict with @ref PA_SAM_RESPONSE
-    PA_S4U_X509_USER_REPLY(27),
-    //unused
-    PA_REFERRAL(26),
-    AD_SIGNEDPATH(-21),
-    IAKERB_FINISHED(42),
-    PA_PKINIT_KX(44),
-    PA_OTP_REQUEST(45),  //See RFC 6560 section 4.2
-    //define in preauth-framework
-    FAST_REQ_CHKSUM(50),
-    FAST_ENC(51),
-    FAST_REP(52),
-    FAST_FINISHED(53),
-    ENC_CHALLENGE_CLIENT(54),
-    ENC_CHALLENGE_KDC(55),
-    AS_REQ(56),
-    //PA-TOKEN padata,encrypted with the client key
-    PA_TOKEN(57);
-
-    private int value;
-
-    private KeyUsage(int value) {
-        this.value = value;
-    }
-
-    public int getValue() {
-        return value;
-    }
-
-    public static KeyUsage fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value) {
-                    return (KeyUsage) e;
-                }
-            }
-        }
-        return UNKNOWN;
-    }
-
-    public static final boolean isValid(int usage) {
-        return usage > -1;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java
deleted file mode 100644
index d97f5b7..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java
+++ /dev/null
@@ -1,167 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.KrbErrorCode;
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-
-/**
- KRB-ERROR       ::= [APPLICATION 30] SEQUENCE {
-     pvno            [0] INTEGER (5),
-     msg-type        [1] INTEGER (30),
-     ctime           [2] KerberosTime OPTIONAL,
-     cusec           [3] Microseconds OPTIONAL,
-     stime           [4] KerberosTime,
-     susec           [5] Microseconds,
-     error-code      [6] Int32,
-     crealm          [7] Realm OPTIONAL,
-     cname           [8] PrincipalName OPTIONAL,
-     realm           [9] Realm -- service realm --,
-     sname           [10] PrincipalName -- service name --,
-     e-text          [11] KerberosString OPTIONAL,
-     e-data          [12] OCTET STRING OPTIONAL
- }
- */
-public class KrbError extends KrbMessage {
-    private static final int CTIME = 2;
-    private static final int CUSEC = 3;
-    private static final int STIME = 4;
-    private static final int SUSEC = 5;
-    private static final int ERROR_CODE = 6;
-    private static final int CREALM = 7;
-    private static final int CNAME = 8;
-    private static final int REALM = 9;
-    private static final int SNAME = 10;
-    private static final int ETEXT = 11;
-    private static final int EDATA = 12;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(PVNO, Asn1Integer.class),
-            new ExplicitField(MSG_TYPE, Asn1Integer.class),
-            new ExplicitField(CTIME, KerberosTime.class),
-            new ExplicitField(CUSEC, Asn1Integer.class),
-            new ExplicitField(STIME, KerberosTime.class),
-            new ExplicitField(SUSEC, Asn1Integer.class),
-            new ExplicitField(ERROR_CODE, Asn1Integer.class),
-            new ExplicitField(CREALM, KerberosString.class),
-            new ExplicitField(CNAME, PrincipalName.class),
-            new ExplicitField(REALM, KerberosString.class),
-            new ExplicitField(SNAME, PrincipalName.class),
-            new ExplicitField(ETEXT, KerberosString.class),
-            new ExplicitField(EDATA, Asn1OctetString.class)
-    };
-
-    public KrbError() {
-        super(KrbMessageType.KRB_ERROR, fieldInfos);
-    }
-
-    public KerberosTime getCtime() {
-        return getFieldAs(CTIME, KerberosTime.class);
-    }
-
-    public void setCtime(KerberosTime ctime) {
-        setFieldAs(CTIME, ctime);
-    }
-
-    public int getCusec() {
-        return getFieldAsInt(CUSEC);
-    }
-
-    public void setCusec(int cusec) {
-        setFieldAsInt(CUSEC, cusec);
-    }
-
-    public KerberosTime getStime() {
-        return getFieldAs(STIME, KerberosTime.class);
-    }
-
-    public void setStime(KerberosTime stime) {
-        setFieldAs(STIME, stime);
-    }
-
-    public int getSusec() {
-        return getFieldAsInt(SUSEC);
-    }
-
-    public void setSusec(int susec) {
-        setFieldAsInt(SUSEC, susec);
-    }
-
-    public KrbErrorCode getErrorCode() {
-        return KrbErrorCode.fromValue(getFieldAsInt(ERROR_CODE));
-    }
-
-    public void setErrorCode(KrbErrorCode errorCode) {
-        setField(ERROR_CODE, errorCode);
-    }
-
-    public String getCrealm() {
-        return getFieldAsString(CREALM);
-    }
-
-    public void setCrealm(String realm) {
-        setFieldAs(CREALM, new KerberosString(realm));
-    }
-
-    public PrincipalName getCname() {
-        return getFieldAs(CNAME, PrincipalName.class);
-    }
-
-    public void setCname(PrincipalName sname) {
-        setFieldAs(CNAME, sname);
-    }
-
-    public PrincipalName getSname() {
-        return getFieldAs(SNAME, PrincipalName.class);
-    }
-
-    public void setSname(PrincipalName sname) {
-        setFieldAs(SNAME, sname);
-    }
-
-    public String getRealm() {
-        return getFieldAsString(REALM);
-    }
-
-    public void setRealm(String realm) {
-        setFieldAs(REALM, new KerberosString(realm));
-    }
-
-    public String getEtext() {
-        return getFieldAsString(ETEXT);
-    }
-
-    public void setEtext(String realm) {
-        setFieldAs(ETEXT, new KerberosString(realm));
-    }
-
-    public byte[] getEdata() {
-        return getFieldAsOctetBytes(EDATA);
-    }
-
-    public void setEdata(byte[] edata) {
-        setFieldAsOctetBytes(EDATA, edata);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java
deleted file mode 100644
index 55c7717..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java
+++ /dev/null
@@ -1,54 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.kerberos.kerb.KrbConstant;
-import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;
-
-public abstract class KrbMessage extends KrbAppSequenceType {
-    protected static final int PVNO = 0;
-    protected static final int MSG_TYPE = 1;
-
-    private final int pvno = KrbConstant.KRB_V5;
-
-    public KrbMessage(KrbMessageType msgType, Asn1FieldInfo[] fieldInfos) {
-        super(msgType.getValue(), fieldInfos);
-        setPvno(pvno);
-        setMsgType(msgType);
-    }
-
-    public int getPvno() {
-        return pvno;
-    }
-
-    protected void setPvno(int pvno) {
-        setFieldAsInt(0, pvno);
-    }
-
-    public KrbMessageType getMsgType() {
-        Integer value = getFieldAsInteger(MSG_TYPE);
-        return KrbMessageType.fromValue(value);
-    }
-
-    public void setMsgType(KrbMessageType msgType) {
-        setFieldAsInt(MSG_TYPE, msgType.getValue());
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessageType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessageType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessageType.java
deleted file mode 100644
index 464c87d..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessageType.java
+++ /dev/null
@@ -1,59 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum KrbMessageType implements Asn1EnumType {
-    NONE(-1),
-    AS_REQ(10),
-    AS_REP(11),
-    TGS_REQ(12),
-    TGS_REP(13),
-    AP_REQ(14),
-    AP_REP(15),
-    KRB_SAFE(20),
-    KRB_PRIV(21),
-    KRB_CRED(22),
-    KRB_ERROR(30);
-
-    private int value;
-
-    private KrbMessageType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static KrbMessageType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value.intValue()) {
-                    return (KrbMessageType) e;
-                }
-            }
-        }
-
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java
deleted file mode 100644
index 062f777..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java
+++ /dev/null
@@ -1,335 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.KrbConstant;
-import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.KrbRuntime;
-import org.apache.kerby.kerberos.kerb.provider.TokenDecoder;
-import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * KRB-TOKEN_VALUE ::= SEQUENCE {
- * token-format [0] INTEGER,
- * token-value  [1] OCTET STRING,
- * }
- */
-public class KrbToken extends KrbSequenceType implements AuthToken {
-    private static TokenEncoder tokenEncoder;
-    private static TokenDecoder tokenDecoder;
-
-    private static final int TOKEN_FORMAT = 0;
-    private static final int TOKEN_VALUE = 1;
-
-    private AuthToken innerToken = null;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
-            new ExplicitField(TOKEN_FORMAT, 0, Asn1Integer.class),
-            new ExplicitField(TOKEN_VALUE, 1, Asn1OctetString.class)
-    };
-
-
-    /**
-     * Default constructor.
-     */
-    public KrbToken() {
-        super(fieldInfos);
-    }
-
-    /**
-     * Construct with prepared authToken and token format.
-     *
-     * @param authToken The authToken
-     * @param format    The token format
-     */
-    public KrbToken(AuthToken authToken, TokenFormat format) {
-        this();
-
-        this.innerToken = authToken;
-        setTokenType();
-        setTokenFormat(format);
-        try {
-            setTokenValue(getTokenEncoder().encodeAsBytes(innerToken));
-        } catch (KrbException e) {
-            throw new RuntimeException("Failed to encode AuthToken", e);
-        }
-    }
-
-    /**
-     * Get AuthToken.
-     *
-     * @return The inner token.
-     */
-    public AuthToken getAuthToken() {
-        return innerToken;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void decode(ByteBuffer content) throws IOException {
-        super.decode(content);
-        this.innerToken = getTokenDecoder().decodeFromBytes(getTokenValue());
-        setTokenType();
-    }
-
-    /**
-     * Set token type.
-     */
-    public void setTokenType() {
-        List<String> audiences = this.innerToken.getAudiences();
-        if (audiences.size() == 1 && audiences.get(0).startsWith(KrbConstant.TGS_PRINCIPAL)) {
-            isIdToken(true);
-        } else {
-            isAcToken(true);
-        }
-    }
-
-    /**
-     * Get token encoder.
-     * @return The token encoder
-     */
-    private static TokenEncoder getTokenEncoder() {
-        if (tokenEncoder == null) {
-            tokenEncoder = KrbRuntime.getTokenProvider().createTokenEncoder();
-        }
-        return tokenEncoder;
-    }
-
-    /**
-     * Get token decoder.
-     * @return The token decoder
-     */
-    private static TokenDecoder getTokenDecoder() {
-        if (tokenDecoder == null) {
-            tokenDecoder = KrbRuntime.getTokenProvider().createTokenDecoder();
-        }
-        return tokenDecoder;
-    }
-
-    /**
-     * Get token format.
-     * @return The token format
-     */
-    public TokenFormat getTokenFormat() {
-        Integer value = getFieldAsInteger(TOKEN_FORMAT);
-        return TokenFormat.fromValue(value);
-    }
-
-    /**
-     * Set token format.
-     * @param tokenFormat The token format
-     */
-    public void setTokenFormat(TokenFormat tokenFormat) {
-        setFieldAsInt(TOKEN_FORMAT, tokenFormat.getValue());
-    }
-
-    /**
-     * Get token value.
-     * @return The token value
-     */
-    public byte[] getTokenValue() {
-        return getFieldAsOctets(TOKEN_VALUE);
-    }
-
-    /**
-     * Set token value.
-     * @param tokenValue The token value
-     */
-    public void setTokenValue(byte[] tokenValue) {
-        setFieldAsOctets(TOKEN_VALUE, tokenValue);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String getSubject() {
-        return innerToken.getSubject();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setSubject(String sub) {
-        innerToken.setSubject(sub);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String getIssuer() {
-        return innerToken.getIssuer();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setIssuer(String issuer) {
-        innerToken.setIssuer(issuer);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public List<String> getAudiences() {
-        return innerToken.getAudiences();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setAudiences(List<String> audiences) {
-        innerToken.setAudiences(audiences);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean isIdToken() {
-        return innerToken.isIdToken();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void isIdToken(boolean isIdToken) {
-        innerToken.isIdToken(isIdToken);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean isAcToken() {
-        return innerToken.isAcToken();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void isAcToken(boolean isAcToken) {
-        innerToken.isAcToken(isAcToken);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean isBearerToken() {
-        return innerToken.isBearerToken();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean isHolderOfKeyToken() {
-        return innerToken.isHolderOfKeyToken();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public Date getExpiredTime() {
-        return innerToken.getExpiredTime();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setExpirationTime(Date exp) {
-        innerToken.setExpirationTime(exp);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public Date getNotBeforeTime() {
-        return innerToken.getNotBeforeTime();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setNotBeforeTime(Date nbt) {
-        innerToken.setNotBeforeTime(nbt);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public Date getIssueTime() {
-        return innerToken.getIssueTime();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setIssueTime(Date iat) {
-        innerToken.setIssueTime(iat);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public Map<String, Object> getAttributes() {
-        return innerToken.getAttributes();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void addAttribute(String name, Object value) {
-        innerToken.addAttribute(name, value);
-    }
-
-    public void setInnerToken(AuthToken authToken) {
-        this.innerToken = authToken;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReq.java
deleted file mode 100644
index 83f3b13..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReq.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.spec.base;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-
-/**
- LastReq         ::=     SEQUENCE OF SEQUENCE {
- lr-type         [0] Int32,
- lr-value        [1] KerberosTime
- }
- */
-public class LastReq extends KrbSequenceOfType<LastReqEntry> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.java
deleted file mode 100644
index 06b5384..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-/**
- LastReq         ::=     SEQUENCE OF SEQUENCE {
- lr-type         [0] Int32,
- lr-value        [1] KerberosTime
- }
- */
-public class LastReqEntry extends KrbSequenceType {
-    private static final int LR_TYPE = 0;
-    private static final int LR_VALUE = 1;
-
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(LR_TYPE, 0, Asn1Integer.class),
-            new ExplicitField(LR_VALUE, 1, KerberosTime.class)
-    };
-
-    public LastReqEntry() {
-        super(fieldInfos);
-    }
-
-    public LastReqType getLrType() {
-        Integer value = getFieldAsInteger(LR_TYPE);
-        return LastReqType.fromValue(value);
-    }
-
-    public void setLrType(LastReqType lrType) {
-        setFieldAsInt(LR_TYPE, lrType.getValue());
-    }
-
-    public KerberosTime getLrValue() {
-        return getFieldAs(LR_VALUE, KerberosTime.class);
-    }
-
-    public void setLrValue(KerberosTime lrValue) {
-        setFieldAs(LR_VALUE, lrValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqType.java
deleted file mode 100644
index 8113fe9..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqType.java
+++ /dev/null
@@ -1,62 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum LastReqType implements Asn1EnumType {
-    NONE(0),
-    ALL_LAST_TGT(1),
-    THE_LAST_TGT(-1),
-    ALL_LAST_INITIAL(2),
-    THE_LAST_INITIAL(-2),
-    ALL_LAST_TGT_ISSUED(3),
-    THE_LAST_TGT_ISSUED(-3),
-    ALL_LAST_RENEWAL(4),
-    THE_LAST_RENEWAL(-4),
-    ALL_LAST_REQ(5),
-    THE_LAST_REQ(-5),
-    ALL_PW_EXPTIME(6),
-    THE_PW_EXPTIME(-6),
-    ALL_ACCT_EXPTIME(7),
-    THE_ACCT_EXPTIME(-7);
-
-    private int value;
-
-    private LastReqType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static LastReqType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value) {
-                    return (LastReqType) e;
-                }
-            }
-        }
-        return NONE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/MethodData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/MethodData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/MethodData.java
deleted file mode 100644
index 9dcb207..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/MethodData.java
+++ /dev/null
@@ -1,30 +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.spec.base;
-
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceOfType;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-
-/**
- METHOD-DATA     ::= SEQUENCE OF PA-DATA
- */
-public class MethodData extends KrbSequenceOfType<PaDataEntry> {
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/NameType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/NameType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/NameType.java
deleted file mode 100644
index 86055f4..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/NameType.java
+++ /dev/null
@@ -1,54 +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.spec.base;
-
-import org.apache.kerby.asn1.type.Asn1EnumType;
-
-public enum NameType implements Asn1EnumType {
-    NT_UNKNOWN(0),
-    NT_PRINCIPAL(1),
-    NT_SRV_INST(2),
-    NT_SRV_HST(3),
-    NT_SRV_XHST(4),
-    NT_UID(5);
-    
-    private int value;
-
-    private NameType(int value) {
-        this.value = value;
-    }
-
-    @Override
-    public int getValue() {
-        return value;
-    }
-
-    public static NameType fromValue(Integer value) {
-        if (value != null) {
-            for (Asn1EnumType e : values()) {
-                if (e.getValue() == value.intValue()) {
-                    return (NameType) e;
-                }
-            }
-        }
-
-        return NT_UNKNOWN;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java
deleted file mode 100644
index 23b3cf2..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java
+++ /dev/null
@@ -1,202 +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.spec.base;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.ExplicitField;
-import org.apache.kerby.kerberos.kerb.spec.KerberosStrings;
-import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- PrincipalName   ::= SEQUENCE {
- name-type       [0] Int32,
- name-string     [1] SEQUENCE OF KerberosString
- }
- */
-public class PrincipalName extends KrbSequenceType {
-    private static final int NAME_TYPE = 0;
-    private static final int NAME_STRING = 1;
-    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
-            new ExplicitField(NAME_TYPE, Asn1Integer.class),
-            new ExplicitField(NAME_STRING, KerberosStrings.class)
-    };
-    private String realm;
-
-    public PrincipalName() {
-        super(fieldInfos);
-    }
-
-    public PrincipalName(String nameString) {
-        this();
-        setNameType(NameType.NT_PRINCIPAL);
-        fromNameString(nameString);
-    }
-
-    public PrincipalName(String nameString, NameType type) {
-        this();
-        fromNameString(nameString);
-        setNameType(type);
-    }
-
-    public PrincipalName(List<String> nameStrings, NameType type) {
-        this();
-        setNameStrings(nameStrings);
-        setNameType(type);
-    }
-
-    public static String extractRealm(String principal) {
-        int pos = principal.indexOf('@');
-
-        if (pos > 0) {
-            return principal.substring(pos + 1);
-        }
-
-        throw new IllegalArgumentException("Not a valid principal, missing realm name");
-    }
-
-    public static String extractName(String principal) {
-        int pos = principal.indexOf('@');
-
-        if (pos < 0) {
-            return principal;
-        }
-
-        return principal.substring(0, pos);
-    }
-
-    public static String makeSalt(PrincipalName principalName) {
-        StringBuilder salt = new StringBuilder();
-        if (principalName.getRealm() != null) {
-            salt.append(principalName.getRealm().toString());
-        }
-        List<String> nameStrings = principalName.getNameStrings();
-        for (String ns : nameStrings) {
-            salt.append(ns);
-        }
-        return salt.toString();
-    }
-
-    public NameType getNameType() {
-        Integer value = getFieldAsInteger(NAME_TYPE);
-        return NameType.fromValue(value);
-    }
-
-    public void setNameType(NameType nameType) {
-        setFieldAsInt(NAME_TYPE, nameType.getValue());
-    }
-
-    public List<String> getNameStrings() {
-        KerberosStrings krbStrings = getFieldAs(NAME_STRING, KerberosStrings.class);
-        if (krbStrings != null) {
-            return krbStrings.getAsStrings();
-        }
-        return Collections.emptyList();
-    }
-
-    public void setNameStrings(List<String> nameStrings) {
-        setFieldAs(NAME_STRING, new KerberosStrings(nameStrings));
-    }
-
-    public String getRealm() {
-        return this.realm;
-    }
-
-    public void setRealm(String realm) {
-        this.realm = realm;
-    }
-
-    public String getName() {
-        return makeSingleName();
-    }
-
-    private String makeSingleName() {
-        List<String> names = getNameStrings();
-        StringBuilder sb = new StringBuilder();
-        boolean isFirst = true;
-        for (String name : names) {
-            sb.append(name);
-            if (isFirst && names.size() > 1) {
-                sb.append('/');
-            }
-            isFirst = false;
-        }
-
-        String realm = getRealm();
-        if (realm != null && !realm.isEmpty()) {
-            sb.append('@');
-            sb.append(realm);
-        }
-
-        return sb.toString();
-    }
-
-    @Override
-    public String toString() {
-        return getName();
-    }
-
-    @Override
-    public int hashCode() {
-        return getName().hashCode();
-    }
-
-    @Override
-    public boolean equals(Object other) {
-        if (other == null) {
-            return false;
-        } else if (this == other) {
-            return true;
-        } else if (!(other instanceof PrincipalName)) {
-            return false;
-        }
-
-        PrincipalName otherPrincipal = (PrincipalName) other;
-        if (getNameType() != ((PrincipalName) other).getNameType()) {
-            return false;
-        }
-
-        return getName().equals(otherPrincipal.getName());
-    }
-
-    private void fromNameString(String nameString) {
-        if (nameString == null) {
-            return;
-        }
-        String tmpRealm = null;
-        List<String> nameStrings;
-        int pos = nameString.indexOf('@');
-        String nameParts = nameString;
-        if (pos != -1) {
-            nameParts = nameString.substring(0, pos);
-            tmpRealm = nameString.substring(pos + 1);
-        }
-        String[] parts = nameParts.split("\\/");
-        nameStrings = Arrays.asList(parts);
-
-        setNameStrings(nameStrings);
-        setRealm(tmpRealm);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/Realm.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/Realm.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/Realm.java
deleted file mode 100644
index 08e7361..0000000
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/Realm.java
+++ /dev/null
@@ -1,34 +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.spec.base;
-
-import org.apache.kerby.kerberos.kerb.spec.KerberosString;
-
-/**
- * Realm           ::= KerberosString
- */
-public class Realm extends KerberosString {
-    public Realm() {
-    }
-
-    public Realm(String value) {
-        super(value);
-    }
-}


[03/19] directory-kerby git commit: Moved some classes out of the asn1 type package

Posted by pl...@apache.org.
Moved some classes out of the asn1 type package


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

Branch: refs/heads/pkinit-support
Commit: 105dc25f517fd6bfe75c6f047857100bdeb1912d
Parents: 9601a5a
Author: Kai Zheng <ka...@intel.com>
Authored: Sat Nov 28 22:23:05 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sat Nov 28 22:23:05 2015 +0800

----------------------------------------------------------------------
 .../org/apache/kerby/asn1/Asn1FieldInfo.java    | 97 ++++++++++++++++++++
 .../org/apache/kerby/asn1/Asn1OutputBuffer.java |  1 -
 .../org/apache/kerby/asn1/ExplicitField.java    | 46 ++++++++++
 .../org/apache/kerby/asn1/ImplicitField.java    | 46 ++++++++++
 .../org/apache/kerby/asn1/type/Asn1Choice.java  |  1 +
 .../kerby/asn1/type/Asn1CollectionType.java     |  1 +
 .../apache/kerby/asn1/type/Asn1FieldInfo.java   | 97 --------------------
 .../kerby/asn1/type/Asn1SequenceType.java       |  1 +
 .../org/apache/kerby/asn1/type/Asn1SetType.java |  1 +
 .../apache/kerby/asn1/type/ExplicitField.java   | 44 ---------
 .../apache/kerby/asn1/type/ImplicitField.java   | 44 ---------
 .../kerby/asn1/type/TaggingCollection.java      |  1 +
 .../apache/kerby/asn1/type/TaggingSequence.java |  2 +
 .../org/apache/kerby/asn1/type/TaggingSet.java  |  2 +
 .../org/apache/kerby/asn1/PersonnelRecord.java  |  3 -
 .../kerberos/kerb/spec/KrbAppSequenceType.java  |  2 +-
 .../kerberos/kerb/spec/KrbSequenceType.java     |  2 +-
 .../kerby/kerberos/kerb/spec/ad/AdToken.java    |  4 +-
 .../kerb/spec/ad/AuthorizationDataEntry.java    |  4 +-
 .../kerby/kerberos/kerb/spec/ap/ApRep.java      |  4 +-
 .../kerby/kerberos/kerb/spec/ap/ApReq.java      |  4 +-
 .../kerberos/kerb/spec/ap/Authenticator.java    |  4 +-
 .../kerberos/kerb/spec/ap/EncAPRepPart.java     |  4 +-
 .../kerby/kerberos/kerb/spec/base/CheckSum.java |  4 +-
 .../kerberos/kerb/spec/base/EncryptedData.java  |  4 +-
 .../kerberos/kerb/spec/base/EncryptionKey.java  |  4 +-
 .../kerb/spec/base/EtypeInfo2Entry.java         |  4 +-
 .../kerberos/kerb/spec/base/EtypeInfoEntry.java |  4 +-
 .../kerberos/kerb/spec/base/HostAddress.java    |  4 +-
 .../kerby/kerberos/kerb/spec/base/KrbError.java |  4 +-
 .../kerberos/kerb/spec/base/KrbMessage.java     |  2 +-
 .../kerby/kerberos/kerb/spec/base/KrbToken.java |  4 +-
 .../kerberos/kerb/spec/base/LastReqEntry.java   |  4 +-
 .../kerberos/kerb/spec/base/PrincipalName.java  |  4 +-
 .../kerb/spec/base/TransitedEncoding.java       |  4 +-
 .../kerberos/kerb/spec/fast/KrbFastArmor.java   |  4 +-
 .../kerb/spec/fast/KrbFastArmoredRep.java       |  4 +-
 .../kerb/spec/fast/KrbFastArmoredReq.java       |  4 +-
 .../kerb/spec/fast/KrbFastFinished.java         |  4 +-
 .../kerberos/kerb/spec/fast/KrbFastReq.java     |  4 +-
 .../kerb/spec/fast/KrbFastResponse.java         |  4 +-
 .../kerberos/kerb/spec/fast/PaAuthnEntry.java   |  4 +-
 .../kerberos/kerb/spec/fast/PaFxFastReply.java  |  4 +-
 .../kerb/spec/fast/PaFxFastRequest.java         |  4 +-
 .../kerberos/kerb/spec/kdc/EncKdcRepPart.java   |  4 +-
 .../kerby/kerberos/kerb/spec/kdc/KdcRep.java    |  4 +-
 .../kerby/kerberos/kerb/spec/kdc/KdcReq.java    |  4 +-
 .../kerberos/kerb/spec/kdc/KdcReqBody.java      |  4 +-
 .../kerb/spec/pa/PaAuthenticationSetElem.java   |  4 +-
 .../kerberos/kerb/spec/pa/PaDataEntry.java      |  4 +-
 .../kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java |  4 +-
 .../kerberos/kerb/spec/pa/otp/OtpTokenInfo.java |  4 +-
 .../kerb/spec/pa/otp/PaOtpChallenge.java        |  4 +-
 .../kerberos/kerb/spec/pa/pkinit/AuthPack.java  |  4 +-
 .../kerberos/kerb/spec/pa/pkinit/DHRepInfo.java |  6 +-
 .../pa/pkinit/ExternalPrincipalIdentifier.java  |  4 +-
 .../kerb/spec/pa/pkinit/KdcDHKeyInfo.java       |  4 +-
 .../kerb/spec/pa/pkinit/Krb5PrincipalName.java  |  4 +-
 .../kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java |  6 +-
 .../kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java |  6 +-
 .../kerb/spec/pa/pkinit/PkAuthenticator.java    |  4 +-
 .../kerb/spec/pa/pkinit/ReplyKeyPack.java       |  4 +-
 .../kerb/spec/pa/token/PaTokenChallenge.java    |  4 +-
 .../kerb/spec/pa/token/PaTokenRequest.java      |  4 +-
 .../kerberos/kerb/spec/pa/token/TokenInfo.java  |  4 +-
 .../kerb/spec/ticket/EncTicketPart.java         |  4 +-
 .../kerby/kerberos/kerb/spec/ticket/Ticket.java |  4 +-
 .../org/apache/kerby/cms/type/Attribute.java    |  2 +-
 .../cms/type/AttributeCertificateInfoV1.java    |  2 +-
 .../kerby/cms/type/AttributeCertificateV1.java  |  2 +-
 .../org/apache/kerby/cms/type/Certificate.java  |  2 +-
 .../kerby/cms/type/CertificateChoices.java      |  4 +-
 .../apache/kerby/cms/type/CertificateList.java  |  2 +-
 .../apache/kerby/cms/type/CompressedData.java   |  2 +-
 .../org/apache/kerby/cms/type/ContentInfo.java  |  4 +-
 .../kerby/cms/type/EncapsulatedContentInfo.java |  4 +-
 .../kerby/cms/type/ExtendedCertificate.java     |  2 +-
 .../kerby/cms/type/ExtendedCertificateInfo.java |  2 +-
 .../kerby/cms/type/IssuerAndSerialNumber.java   |  2 +-
 .../kerby/cms/type/OtherCertificateFormat.java  |  2 +-
 .../cms/type/OtherRevocationInfoFormat.java     |  2 +-
 .../kerby/cms/type/RevocationInfoChoice.java    |  4 +-
 .../org/apache/kerby/cms/type/SignedData.java   |  4 +-
 .../apache/kerby/cms/type/SignerIdentifier.java |  4 +-
 .../org/apache/kerby/cms/type/SignerInfo.java   |  4 +-
 .../java/org/apache/kerby/cms/type/Subject.java |  4 +-
 .../kerby/x500/type/AttributeTypeAndValue.java  |  2 +-
 .../java/org/apache/kerby/x500/type/Name.java   |  2 +-
 .../kerby/x509/type/AccessDescription.java      |  2 +-
 .../kerby/x509/type/AlgorithmIdentifier.java    |  2 +-
 .../apache/kerby/x509/type/AttCertIssuer.java   |  4 +-
 .../kerby/x509/type/AttCertValidityPeriod.java  |  2 +-
 .../org/apache/kerby/x509/type/Attribute.java   |  2 +-
 .../kerby/x509/type/AttributeCertificate.java   |  2 +-
 .../x509/type/AttributeCertificateInfo.java     |  2 +-
 .../kerby/x509/type/AuthorityKeyIdentifier.java |  4 +-
 .../kerby/x509/type/BasicConstraints.java       |  2 +-
 .../org/apache/kerby/x509/type/Certificate.java |  2 +-
 .../apache/kerby/x509/type/CertificateList.java |  2 +-
 .../apache/kerby/x509/type/CertificatePair.java |  4 +-
 .../apache/kerby/x509/type/DSAParameter.java    |  2 +-
 .../org/apache/kerby/x509/type/DigestInfo.java  |  2 +-
 .../apache/kerby/x509/type/DirectoryString.java |  2 +-
 .../org/apache/kerby/x509/type/DisplayText.java |  2 +-
 .../kerby/x509/type/DistributionPoint.java      |  4 +-
 .../kerby/x509/type/DistributionPointName.java  |  4 +-
 .../apache/kerby/x509/type/EDIPartyName.java    |  4 +-
 .../org/apache/kerby/x509/type/Extension.java   |  2 +-
 .../org/apache/kerby/x509/type/GeneralName.java |  4 +-
 .../apache/kerby/x509/type/GeneralSubtree.java  |  4 +-
 .../java/org/apache/kerby/x509/type/Holder.java |  4 +-
 .../apache/kerby/x509/type/IetfAttrSyntax.java  |  4 +-
 .../kerby/x509/type/IetfAttrSyntaxChoice.java   |  2 +-
 .../apache/kerby/x509/type/IssuerSerial.java    |  2 +-
 .../x509/type/IssuingDistributionPoint.java     |  4 +-
 .../apache/kerby/x509/type/NameConstraints.java |  4 +-
 .../apache/kerby/x509/type/NoticeReference.java |  2 +-
 .../kerby/x509/type/ObjectDigestInfo.java       |  2 +-
 .../org/apache/kerby/x509/type/OtherName.java   |  4 +-
 .../kerby/x509/type/PolicyConstraints.java      |  4 +-
 .../kerby/x509/type/PolicyInformation.java      |  2 +-
 .../apache/kerby/x509/type/PolicyMapping.java   |  2 +-
 .../kerby/x509/type/PolicyQualifierInfo.java    |  2 +-
 .../kerby/x509/type/PrivateKeyUsagePeriod.java  |  4 +-
 .../kerby/x509/type/RevokedCertificate.java     |  2 +-
 .../org/apache/kerby/x509/type/RoleSyntax.java  |  4 +-
 .../kerby/x509/type/SubjectPublicKeyInfo.java   |  2 +-
 .../org/apache/kerby/x509/type/TBSCertList.java |  4 +-
 .../apache/kerby/x509/type/TBSCertificate.java  |  6 +-
 .../java/org/apache/kerby/x509/type/Target.java |  4 +-
 .../org/apache/kerby/x509/type/TargetCert.java  |  2 +-
 .../java/org/apache/kerby/x509/type/Time.java   |  2 +-
 .../org/apache/kerby/x509/type/UserNotice.java  |  2 +-
 .../java/org/apache/kerby/x509/type/V2Form.java |  4 +-
 134 files changed, 398 insertions(+), 389 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1FieldInfo.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1FieldInfo.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1FieldInfo.java
new file mode 100644
index 0000000..9efa6a5
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1FieldInfo.java
@@ -0,0 +1,97 @@
+/**
+ *  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.asn1;
+
+import org.apache.kerby.asn1.type.Asn1Type;
+
+/**
+ * Representing a field in a ASN1 collection or choice.
+ */
+public class Asn1FieldInfo {
+    private int index;
+    private int tagNo = -1; // Indicate a non-tagged field
+    private boolean isImplicit;
+    private Class<? extends Asn1Type> type;
+
+    /**
+     * Constructor for a tagged field, the tagNo being the same of index.
+     * @param index
+     * @param type
+     * @param isImplicit
+     */
+    public Asn1FieldInfo(int index, Class<? extends Asn1Type> type,
+                         boolean isImplicit) {
+        this(index, index, type, isImplicit);
+    }
+
+    /**
+     * Constructor for a tagged field.
+     * @param index
+     * @param tagNo
+     * @param type
+     * @param isImplicit
+     */
+    public Asn1FieldInfo(int index, int tagNo, Class<? extends Asn1Type> type,
+                         boolean isImplicit) {
+        this.index = index;
+        this.tagNo = tagNo;
+        this.type = type;
+        this.isImplicit = isImplicit;
+    }
+
+    /**
+     * Constructor for a non-tagged field.
+     * @param index
+     * @param type
+     */
+    public Asn1FieldInfo(int index, Class<? extends Asn1Type> type) {
+        this.index = index;
+        this.type = type;
+        this.tagNo = -1; // Indicate a non-tagged field
+    }
+
+    public boolean isTagged() {
+        return tagNo != -1;
+    }
+
+    public TaggingOption getTaggingOption() {
+        if (isImplicit) {
+            return TaggingOption.newImplicitContextSpecific(tagNo);
+        } else {
+            return TaggingOption.newExplicitContextSpecific(tagNo);
+        }
+    }
+
+    public int getTagNo() {
+        return tagNo;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public boolean isImplicit() {
+        return isImplicit;
+    }
+
+    public Class<? extends Asn1Type> getType() {
+        return type;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/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 7748df6..729e042 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
@@ -19,7 +19,6 @@
  */
 package org.apache.kerby.asn1;
 
-import org.apache.kerby.asn1.type.AbstractAsn1Type;
 import org.apache.kerby.asn1.type.Asn1Object;
 import org.apache.kerby.asn1.type.Asn1Type;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/ExplicitField.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/ExplicitField.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/ExplicitField.java
new file mode 100644
index 0000000..85fded1
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/ExplicitField.java
@@ -0,0 +1,46 @@
+/**
+ *  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.asn1;
+
+import org.apache.kerby.asn1.type.Asn1Type;
+
+/**
+ * Representing an explicitly tagged field in a ASN1 collection or choice.
+ */
+public class ExplicitField extends Asn1FieldInfo {
+
+    /**
+     * Constructor for an explicitly tagged field.
+     * @param index
+     * @param type
+     */
+    public ExplicitField(int index, int tagNo, Class<? extends Asn1Type> type) {
+        super(index, tagNo, type, false);
+    }
+
+    /**
+     * Constructor for an explicitly tagged field, the tagNo being the same of index.
+     * @param index
+     * @param type
+     */
+    public ExplicitField(int index, Class<? extends Asn1Type> type) {
+        super(index, index, type, false);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/ImplicitField.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/ImplicitField.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/ImplicitField.java
new file mode 100644
index 0000000..a0e7acb
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/ImplicitField.java
@@ -0,0 +1,46 @@
+/**
+ *  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.asn1;
+
+import org.apache.kerby.asn1.type.Asn1Type;
+
+/**
+ * Representing an implicitly tagged field in a ASN1 collection or choice.
+ */
+public class ImplicitField extends Asn1FieldInfo {
+
+    /**
+     * Constructor for an implicitly tagged field.
+     * @param index
+     * @param type
+     */
+    public ImplicitField(int index, int tagNo, Class<? extends Asn1Type> type) {
+        super(index, tagNo, type, true);
+    }
+
+    /**
+     * Constructor for an implicitly tagged field, the tagNo being the same of index.
+     * @param index
+     * @param type
+     */
+    public ImplicitField(int index, Class<? extends Asn1Type> type) {
+        super(index, index, type, true);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/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 e251e11..3641070 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
@@ -19,6 +19,7 @@
  */
 package org.apache.kerby.asn1.type;
 
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.LimitedByteBuffer;
 import org.apache.kerby.asn1.TagClass;
 import org.apache.kerby.asn1.TaggingOption;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/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 2fdb34b..82f360b 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
@@ -19,6 +19,7 @@
  */
 package org.apache.kerby.asn1.type;
 
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.LimitedByteBuffer;
 import org.apache.kerby.asn1.TagClass;
 import org.apache.kerby.asn1.TaggingOption;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1FieldInfo.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1FieldInfo.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1FieldInfo.java
deleted file mode 100644
index fb3c885..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1FieldInfo.java
+++ /dev/null
@@ -1,97 +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.asn1.type;
-
-import org.apache.kerby.asn1.TaggingOption;
-
-/**
- * Representing a field in a ASN1 collection or choice.
- */
-public class Asn1FieldInfo {
-    private int index;
-    private int tagNo = -1; // Indicate a non-tagged field
-    private boolean isImplicit;
-    private Class<? extends Asn1Type> type;
-
-    /**
-     * Constructor for a tagged field, the tagNo being the same of index.
-     * @param index
-     * @param type
-     * @param isImplicit
-     */
-    public Asn1FieldInfo(int index, Class<? extends Asn1Type> type,
-                         boolean isImplicit) {
-        this(index, index, type, isImplicit);
-    }
-
-    /**
-     * Constructor for a tagged field.
-     * @param index
-     * @param tagNo
-     * @param type
-     * @param isImplicit
-     */
-    public Asn1FieldInfo(int index, int tagNo, Class<? extends Asn1Type> type,
-                         boolean isImplicit) {
-        this.index = index;
-        this.tagNo = tagNo;
-        this.type = type;
-        this.isImplicit = isImplicit;
-    }
-
-    /**
-     * Constructor for a non-tagged field.
-     * @param index
-     * @param type
-     */
-    public Asn1FieldInfo(int index, Class<? extends Asn1Type> type) {
-        this.index = index;
-        this.type = type;
-        this.tagNo = -1; // Indicate a non-tagged field
-    }
-
-    public boolean isTagged() {
-        return tagNo != -1;
-    }
-
-    public TaggingOption getTaggingOption() {
-        if (isImplicit) {
-            return TaggingOption.newImplicitContextSpecific(tagNo);
-        } else {
-            return TaggingOption.newExplicitContextSpecific(tagNo);
-        }
-    }
-
-    public int getTagNo() {
-        return tagNo;
-    }
-
-    public int getIndex() {
-        return index;
-    }
-
-    public boolean isImplicit() {
-        return isImplicit;
-    }
-
-    public Class<? extends Asn1Type> getType() {
-        return type;
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceType.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceType.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceType.java
index bcbf715..4733838 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceType.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceType.java
@@ -19,6 +19,7 @@
  */
 package org.apache.kerby.asn1.type;
 
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.UniversalTag;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetType.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetType.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetType.java
index 4f13369..b320224 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetType.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetType.java
@@ -19,6 +19,7 @@
  */
 package org.apache.kerby.asn1.type;
 
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.UniversalTag;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/ExplicitField.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/ExplicitField.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/ExplicitField.java
deleted file mode 100644
index abb42ce..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/ExplicitField.java
+++ /dev/null
@@ -1,44 +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.asn1.type;
-
-/**
- * Representing an explicitly tagged field in a ASN1 collection or choice.
- */
-public class ExplicitField extends Asn1FieldInfo {
-
-    /**
-     * Constructor for an explicitly tagged field.
-     * @param index
-     * @param type
-     */
-    public ExplicitField(int index, int tagNo, Class<? extends Asn1Type> type) {
-        super(index, tagNo, type, false);
-    }
-
-    /**
-     * Constructor for an explicitly tagged field, the tagNo being the same of index.
-     * @param index
-     * @param type
-     */
-    public ExplicitField(int index, Class<? extends Asn1Type> type) {
-        super(index, index, type, false);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/ImplicitField.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/ImplicitField.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/ImplicitField.java
deleted file mode 100644
index b64bc4f..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/ImplicitField.java
+++ /dev/null
@@ -1,44 +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.asn1.type;
-
-/**
- * Representing an implicitly tagged field in a ASN1 collection or choice.
- */
-public class ImplicitField extends Asn1FieldInfo {
-
-    /**
-     * Constructor for an implicitly tagged field.
-     * @param index
-     * @param type
-     */
-    public ImplicitField(int index, int tagNo, Class<? extends Asn1Type> type) {
-        super(index, tagNo, type, true);
-    }
-
-    /**
-     * Constructor for an implicitly tagged field, the tagNo being the same of index.
-     * @param index
-     * @param type
-     */
-    public ImplicitField(int index, Class<? extends Asn1Type> type) {
-        super(index, index, type, true);
-    }
-}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/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 1d810a3..bac51b0 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
@@ -19,6 +19,7 @@
  */
 package org.apache.kerby.asn1.type;
 
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.LimitedByteBuffer;
 import org.apache.kerby.asn1.TagClass;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSequence.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSequence.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSequence.java
index eab2aaf..0bd9fbb 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSequence.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSequence.java
@@ -19,6 +19,8 @@
  */
 package org.apache.kerby.asn1.type;
 
+import org.apache.kerby.asn1.Asn1FieldInfo;
+
 /**
  * For tagging a sequence type with tagNo, either application specific or context specific class
  */

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSet.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSet.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSet.java
index 444102b..52158cb 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSet.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSet.java
@@ -19,6 +19,8 @@
  */
 package org.apache.kerby.asn1.type;
 
+import org.apache.kerby.asn1.Asn1FieldInfo;
+
 /**
  * For tagging a sequence type with tagNo, either application specific or context specific class
  */

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/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 72da457..ee4c96e 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
@@ -19,14 +19,11 @@
  */
 package org.apache.kerby.asn1;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceOf;
 import org.apache.kerby.asn1.type.Asn1SetType;
 import org.apache.kerby.asn1.type.Asn1Tagging;
 import org.apache.kerby.asn1.type.Asn1VisibleString;
-import org.apache.kerby.asn1.type.ExplicitField;
-import org.apache.kerby.asn1.type.ImplicitField;
 import org.apache.kerby.asn1.type.TaggingSequence;
 import org.apache.kerby.asn1.type.TaggingSet;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/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 ef7f911..244e089 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
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.spec;
 
 import org.apache.kerby.asn1.type.Asn1EnumType;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.TaggingSequence;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/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 a15cc59..5a5b6ee 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
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.spec;
 
 import org.apache.kerby.asn1.type.Asn1EnumType;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 
 public abstract class KrbSequenceType extends Asn1SequenceType {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java
index 80896ff..ef49215 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AdToken.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.ad;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbToken;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.java
index 6f5b3bf..08a8fc2 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ad/AuthorizationDataEntry.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.ad;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java
index 8e69400..08db746 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApRep.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.ap;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java
index 23be6a4..bf9f82e 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/ApReq.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.ap;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java
index f40e031..e5abe6a 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/Authenticator.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.ap;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java
index 5b6826d..bd56091 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ap/EncAPRepPart.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.ap;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java
index ce975a8..b79f80d 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/CheckSum.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 import java.util.Arrays;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java
index 4ccc5a4..e72238b 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptedData.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 import java.util.Arrays;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java
index 9c00bee..7df2fd2 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EncryptionKey.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 import java.util.Arrays;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java
index aac940d..5da0a4a 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfo2Entry.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java
index 176a212..d9cc98a 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/EtypeInfoEntry.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java
index 404d803..2f26b6e 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/HostAddress.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 import java.net.InetAddress;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java
index 31938f9..d97f5b7 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbError.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.KrbErrorCode;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java
index 0b1297c..55c7717 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbMessage.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.kerberos.kerb.KrbConstant;
 import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java
index e0ccd52..062f777 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/KrbToken.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.KrbConstant;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.KrbRuntime;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.java
index 816821a..06b5384 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/LastReqEntry.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java
index 4f9b45c..23b3cf2 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/PrincipalName.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosStrings;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.java
index 06d3cbe..6859adf 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/base/TransitedEncoding.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.base;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java
index b1e5318..ec78b30 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmor.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java
index e034d46..2c31c9f 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredRep.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java
index f1057b1..85876b8 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastArmoredReq.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java
index a2df6fe..0c08cc2 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastFinished.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java
index 90cff9b..298a7ad 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastReq.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReqBody;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaData;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java
index eafaa82..64b9aa1 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/KrbFastResponse.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaData;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java
index 6e78a7a..8433245 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaAuthnEntry.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java
index 41d95bc..b8cbd53 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastReply.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  PA-FX-FAST-REPLY ::= CHOICE {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java
index 5a24cd5..3ff345c 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/fast/PaFxFastRequest.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.spec.fast;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 
 /**
  PA-FX-FAST-REQUEST ::= CHOICE {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.java
index dfccf18..f93d7df 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/EncKdcRepPart.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.kdc;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java
index fa92cd2..204dc2e 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcRep.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.kdc;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java
index b0417b4..b0119d0 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReq.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.kdc;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
 import org.apache.kerby.kerberos.kerb.spec.pa.PaData;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java
index 9afadd6..0e61b73 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/kdc/KdcReqBody.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.kdc;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbIntegers;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java
index 9a3ca09..c8878f0 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaAuthenticationSetElem.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java
index 5dd6e59..0ad3fa3 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaDataEntry.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java
index 1107919..66594d4 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/PaEncTsEnc.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java
index b2a6a6a..1157b50 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/OtpTokenInfo.java
@@ -19,11 +19,11 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.otp;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 import org.apache.kerby.asn1.type.Asn1Utf8String;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.AlgorithmIdentifiers;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java
index a146552..161b230 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/otp/PaOtpChallenge.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.otp;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 import org.apache.kerby.asn1.type.Asn1Utf8String;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java
index b5e505d..78dc6b0 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/AuthPack.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.x509.type.SubjectPublicKeyInfo;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java
index 85072fb..e2a39f1 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/DHRepInfo.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.asn1.ImplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java
index 5e03253..177aed7 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ExternalPrincipalIdentifier.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.ImplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java
index b5e23f4..8bfe151 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/KdcDHKeyInfo.java
@@ -20,9 +20,9 @@
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
 import org.apache.kerby.asn1.type.Asn1BitString;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java
index eb210e2..816776b 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/Krb5PrincipalName.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
 import org.apache.kerby.kerberos.kerb.spec.base.Realm;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java
index 49cc980..dc2bbc8 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsRep.java
@@ -20,10 +20,10 @@
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
 import org.apache.kerby.asn1.type.Asn1Choice;
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.asn1.ImplicitField;
 
 /**
  PA-PK-AS-REP ::= CHOICE {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java
index 7e740c2..2c21cc2 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PaPkAsReq.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
-import org.apache.kerby.asn1.type.ImplicitField;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.asn1.ImplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java
index c24fad2..91451c7 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/PkAuthenticator.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java
index 406a4df..6bf77fe 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/pkinit/ReplyKeyPack.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.pkinit;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
 import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java
index 5f70174..45b8aff 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenChallenge.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.token;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java
index 8add888..b8a62b5 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/PaTokenRequest.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.token;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.spec.base.KrbToken;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.java
index ff56f13..6d2c631 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/TokenInfo.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.pa.token;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 import org.apache.kerby.asn1.type.Asn1Utf8String;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KrbSequenceType;
 
 /**

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java
index 0fe3bcb..f44a71e 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/EncTicketPart.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.ticket;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
 import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java
index a660210..de6ca31 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/ticket/Ticket.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.spec.ticket;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
-import org.apache.kerby.asn1.type.ExplicitField;
+import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.KrbConstant;
 import org.apache.kerby.kerberos.kerb.spec.KerberosString;
 import org.apache.kerby.kerberos.kerb.spec.KrbAppSequenceType;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/105dc25f/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Attribute.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Attribute.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Attribute.java
index cffd5ed..1eabefe 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Attribute.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/Attribute.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.cms.type;
 
-import org.apache.kerby.asn1.type.Asn1FieldInfo;
+import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x509.type.AttributeValues;


[19/19] directory-kerby git commit: Merge from master.

Posted by pl...@apache.org.
Merge from master.


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

Branch: refs/heads/pkinit-support
Commit: 9fe0fd885d6b9132a7f33225b6914e09e2cc677e
Parents: ae595fb 78f67dc
Author: plusplusjiajia <ji...@intel.com>
Authored: Mon Nov 30 11:15:58 2015 +0800
Committer: plusplusjiajia <ji...@intel.com>
Committed: Mon Nov 30 11:15:58 2015 +0800

----------------------------------------------------------------------
 .../src/main/java/org/apache/kerby/asn1/type/Asn1Any.java   | 1 -
 .../java/org/apache/kerby/asn1/type/Asn1CollectionType.java | 9 +++++----
 .../kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java  | 1 -
 .../kerby/kerberos/kerb/client/request/KdcRequest.java      | 1 -
 .../main/java/org/apache/kerby/cms/type/ContentInfo.java    | 4 ++--
 .../org/apache/kerby/cms/type/OtherCertificateFormat.java   | 4 ++--
 .../apache/kerby/cms/type/OtherRevocationInfoFormat.java    | 4 ++--
 .../org/apache/kerby/x500/type/AttributeTypeAndValue.java   | 4 ++--
 .../org/apache/kerby/x509/type/AlgorithmIdentifier.java     | 4 ++--
 .../src/main/java/org/apache/kerby/x509/type/OtherName.java | 4 ++--
 .../org/apache/kerby/x509/type/PolicyQualifierInfo.java     | 4 ++--
 11 files changed, 19 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9fe0fd88/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
----------------------------------------------------------------------
diff --cc kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionType.java
index bb4f622,72278d3..7011770
--- 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
@@@ -177,15 -176,13 +177,16 @@@ public abstract class Asn1CollectionTyp
          setFieldAs(index, new Asn1Integer(value));
      }
  
 +    protected void setFieldAsBigInteger(int index, BigInteger value) {
 +        setFieldAs(index, new Asn1Integer(value));
 +    }
 +
-     protected Asn1Type getFieldAsAny(int index) {
-         Asn1Any any = getFieldAs(index, Asn1Any.class);
-         if (any != null) {
-             return any.getValue();
+     protected <T extends Asn1Type> T getFieldAsAny(int index, Class<T> t) {
+         Asn1Type value = fields[index];
+         if (value != null && value instanceof Asn1Any) {
+             Asn1Any any = (Asn1Any) value;
+             return any.getValueAs(t);
          }
 -
          return null;
      }
  

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9fe0fd88/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java
----------------------------------------------------------------------
diff --cc kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java
index 5024abe,a1f2886..23954b0
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/pkinit/PkinitPreauth.java
@@@ -50,29 -42,10 +50,28 @@@ import org.apache.kerby.kerberos.kerb.t
  import org.apache.kerby.kerberos.kerb.type.pa.pkinit.PaPkAsReq;
  import org.apache.kerby.kerberos.kerb.type.pa.pkinit.PkAuthenticator;
  import org.apache.kerby.kerberos.kerb.type.pa.pkinit.TrustedCertifiers;
- 
 +import org.apache.kerby.x509.type.AlgorithmIdentifier;
  import org.apache.kerby.x509.type.SubjectPublicKeyInfo;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import javax.crypto.interfaces.DHPublicKey;
 +import javax.crypto.spec.DHParameterSpec;
 +import java.io.FileInputStream;
 +import java.io.FileNotFoundException;
 +import java.io.IOException;
 +import java.io.InputStream;
 +import java.math.BigInteger;
 +import java.security.cert.X509Certificate;
 +import java.util.Arrays;
 +import java.util.Calendar;
 +import java.util.Date;
 +import java.util.List;
 +
 +
  
 -@SuppressWarnings("PMD")
  public class PkinitPreauth extends AbstractPreauthPlugin {
 +    private static final Logger LOG = LoggerFactory.getLogger(PkinitPreauth.class);
  
      private PkinitContext pkinitContext;
  

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/9fe0fd88/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/request/KdcRequest.java
----------------------------------------------------------------------


[08/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/fast/FastUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/fast/FastUtil.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/fast/FastUtil.java
index 461d789..1bab24f 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/fast/FastUtil.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/fast/FastUtil.java
@@ -21,7 +21,7 @@ package org.apache.kerby.kerberos.kerb.crypto.fast;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 
 import java.nio.charset.StandardCharsets;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java
index 157cb5c..672dbe4 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java
@@ -19,11 +19,11 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto;
 
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 9aa50c4..9220f94 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
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto;
 
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSumType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSumType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 d80b483..c0c938d 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
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/FastUtilTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/FastUtilTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/FastUtilTest.java
index 6a5a300..a08f01f 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/FastUtilTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/FastUtilTest.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.crypto;
 
 import org.apache.kerby.kerberos.kerb.crypto.fast.FastUtil;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 56b2c3b..7b44da0 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
@@ -28,7 +28,7 @@ import org.apache.kerby.kerberos.kerb.crypto.key.AesKeyMaker;
 import org.apache.kerby.kerberos.kerb.crypto.key.CamelliaKeyMaker;
 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.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java
index 0faa83c..c5dcac6 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/PrfTest.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 b62b89d..abbbbfb 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
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.crypto;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 import org.apache.kerby.util.HexUtil;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java b/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
index ccb738c..209a4c7 100644
--- a/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
+++ b/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTest.java
@@ -21,8 +21,8 @@ package org.apache.kerby.kerberos.kerb.identity.backend;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 import java.util.Iterator;
 import java.util.LinkedList;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java b/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java
index d125cc5..9640534 100644
--- a/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java
+++ b/kerby-kerb/kerb-identity-test/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/BackendTestUtil.java
@@ -22,9 +22,9 @@ package org.apache.kerby.kerberos.kerb.identity.backend;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 import java.util.ArrayList;
 import java.util.Arrays;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
index 420772b..d963441 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.identity;
 
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.util.HashMap;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 6ebe00a..52c11bb 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
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.server;
 
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.junit.Assert;
 
 import static org.assertj.core.api.Assertions.assertThat;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java
index 88ba06e..a3e6e88 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/LoginTestBase.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.server;
 
 import org.apache.kerby.kerberos.kerb.client.JaasKrbUtil;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.junit.After;
 import org.junit.Before;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java
index 55f9c99..75020be 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/MultiRequestsKdcTest.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.server;
 
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.junit.Assert;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
index 0eb476e..e53ddc9 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.server;
 
 import org.apache.kerby.kerberos.kerb.common.Krb5Conf;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 import java.util.Arrays;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcHandler.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcHandler.java
index eb63a13..27c14c8 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcHandler.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcHandler.java
@@ -25,14 +25,14 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.server.request.AsRequest;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
 import org.apache.kerby.kerberos.kerb.server.request.TgsRequest;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbError;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsReq;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.KrbError;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsReq;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcRecoverableException.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcRecoverableException.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcRecoverableException.java
index 32d1e16..e056b0a 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcRecoverableException.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcRecoverableException.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.server;
 
 import org.apache.kerby.kerberos.kerb.KrbErrorException;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbError;
+import org.apache.kerby.kerberos.kerb.type.base.KrbError;
 
 /**
  * KDC side recoverable exception, where retrying will be made.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/AbstractPreauthPlugin.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/AbstractPreauthPlugin.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/AbstractPreauthPlugin.java
index 2d07cff..800798d 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/AbstractPreauthPlugin.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/AbstractPreauthPlugin.java
@@ -25,9 +25,9 @@ import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.PreauthPluginMeta;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
-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.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class AbstractPreauthPlugin implements KdcPreauth {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcFastContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcFastContext.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcFastContext.java
index 2fd15e0..727453e 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcFastContext.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcFastContext.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.server.preauth;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.fast.FastOptions;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.fast.FastOptions;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
 
 /**
  * Maintaining FAST processing state in KDC side per request.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcPreauth.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcPreauth.java
index a18e5d0..ee91366 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcPreauth.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/KdcPreauth.java
@@ -25,9 +25,9 @@ import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.preauth.PreauthPluginMeta;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
-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.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 /**
  * KDC side preauth plugin module

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandle.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandle.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandle.java
index ea603a5..acbaccb 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandle.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandle.java
@@ -22,8 +22,8 @@ package org.apache.kerby.kerberos.kerb.server.preauth;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
 
 public class PreauthHandle {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandler.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandler.java
index cff6ba6..850d34f 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandler.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/PreauthHandler.java
@@ -25,9 +25,9 @@ import org.apache.kerby.kerberos.kerb.server.preauth.builtin.EncTsPreauth;
 import org.apache.kerby.kerberos.kerb.server.preauth.builtin.TgtPreauth;
 import org.apache.kerby.kerberos.kerb.server.preauth.token.TokenPreauth;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
-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.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/EncTsPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/EncTsPreauth.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/EncTsPreauth.java
index 377136c..134e86f 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/EncTsPreauth.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/EncTsPreauth.java
@@ -28,11 +28,11 @@ import org.apache.kerby.kerberos.kerb.preauth.builtin.EncTsPreauthMeta;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.server.preauth.AbstractPreauthPlugin;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaEncTsEnc;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaEncTsEnc;
 
 public class EncTsPreauth extends AbstractPreauthPlugin {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/TgtPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/TgtPreauth.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/TgtPreauth.java
index fbacf0f..1a47964 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/TgtPreauth.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/builtin/TgtPreauth.java
@@ -25,7 +25,7 @@ import org.apache.kerby.kerberos.kerb.preauth.builtin.TgtPreauthMeta;
 import org.apache.kerby.kerberos.kerb.server.preauth.AbstractPreauthPlugin;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
 import org.apache.kerby.kerberos.kerb.server.request.TgsRequest;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
 
 public class TgtPreauth extends AbstractPreauthPlugin {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java
index 08baa0e..0a41572 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java
@@ -26,10 +26,10 @@ import org.apache.kerby.kerberos.kerb.preauth.pkinit.PkinitPreauthMeta;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
 import org.apache.kerby.kerberos.kerb.server.preauth.AbstractPreauthPlugin;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.PaPkAsReq;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.PaPkAsReq;
 
 import java.util.HashMap;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitRequestContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitRequestContext.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitRequestContext.java
index 97ca7c4..3f41c5e 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitRequestContext.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitRequestContext.java
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.server.preauth.pkinit;
 
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-import org.apache.kerby.kerberos.kerb.spec.pa.pkinit.AuthPack;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.AuthPack;
 
 public class PkinitRequestContext implements PluginRequestContext {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenPreauth.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenPreauth.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenPreauth.java
index adabe9f..a516873 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenPreauth.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenPreauth.java
@@ -32,16 +32,16 @@ import org.apache.kerby.kerberos.kerb.server.preauth.AbstractPreauthPlugin;
 import org.apache.kerby.kerberos.kerb.server.request.AsRequest;
 import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
 import org.apache.kerby.kerberos.kerb.server.request.TgsRequest;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbToken;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-import org.apache.kerby.kerberos.kerb.spec.pa.token.PaTokenRequest;
-import org.apache.kerby.kerberos.kerb.spec.pa.token.TokenInfo;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.token.PaTokenRequest;
+import org.apache.kerby.kerberos.kerb.type.pa.token.TokenInfo;
 
 import java.io.File;
 import java.io.FileInputStream;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenRequestContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenRequestContext.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenRequestContext.java
index 6f0b73d..f902a7d 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenRequestContext.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/token/TokenRequestContext.java
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.server.preauth.token;
 
 import org.apache.kerby.kerberos.kerb.preauth.PluginRequestContext;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
 
 public class TokenRequestContext implements PluginRequestContext {
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java
index 2765673..b48b697 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/AsRequest.java
@@ -24,22 +24,22 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.LastReq;
-import org.apache.kerby.kerberos.kerb.spec.base.LastReqEntry;
-import org.apache.kerby.kerberos.kerb.spec.base.LastReqType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncAsRepPart;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncKdcRepPart;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlag;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.LastReq;
+import org.apache.kerby.kerberos.kerb.type.base.LastReqEntry;
+import org.apache.kerby.kerberos.kerb.type.base.LastReqType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.AsReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncAsRepPart;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncKdcRepPart;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlag;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java
index 521ab51..bf05752 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/KdcRequest.java
@@ -34,33 +34,33 @@ import org.apache.kerby.kerberos.kerb.server.KdcRecoverableException;
 import org.apache.kerby.kerberos.kerb.server.preauth.KdcFastContext;
 import org.apache.kerby.kerberos.kerb.server.preauth.PreauthContext;
 import org.apache.kerby.kerberos.kerb.server.preauth.PreauthHandler;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApReq;
-import org.apache.kerby.kerberos.kerb.spec.ap.Authenticator;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.base.CheckSum;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfo;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfo2;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfo2Entry;
-import org.apache.kerby.kerberos.kerb.spec.base.EtypeInfoEntry;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbError;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.MethodData;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.fast.ArmorType;
-import org.apache.kerby.kerberos.kerb.spec.fast.KrbFastArmor;
-import org.apache.kerby.kerberos.kerb.spec.fast.KrbFastArmoredReq;
-import org.apache.kerby.kerberos.kerb.spec.fast.KrbFastReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-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.apache.kerby.kerberos.kerb.spec.ticket.EncTicketPart;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
+import org.apache.kerby.kerberos.kerb.type.ap.Authenticator;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.CheckSum;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfo;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfo2;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfo2Entry;
+import org.apache.kerby.kerberos.kerb.type.base.EtypeInfoEntry;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbError;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.type.base.MethodData;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.fast.ArmorType;
+import org.apache.kerby.kerberos.kerb.type.fast.KrbFastArmor;
+import org.apache.kerby.kerberos.kerb.type.fast.KrbFastArmoredReq;
+import org.apache.kerby.kerberos.kerb.type.fast.KrbFastReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/ServiceTicketIssuer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/ServiceTicketIssuer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/ServiceTicketIssuer.java
index 9ab7c65..1d08a93 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/ServiceTicketIssuer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/ServiceTicketIssuer.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb.server.request;
 
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.base.TransitedEncoding;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.TransitedEncoding;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
 
 /**
  * Issuing service ticket.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java
index bd0cc80..941ef9f 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgsRequest.java
@@ -26,29 +26,29 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApOption;
-import org.apache.kerby.kerberos.kerb.spec.ap.ApReq;
-import org.apache.kerby.kerberos.kerb.spec.ap.Authenticator;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.base.LastReq;
-import org.apache.kerby.kerberos.kerb.spec.base.LastReqEntry;
-import org.apache.kerby.kerberos.kerb.spec.base.LastReqType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncKdcRepPart;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncTgsRepPart;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsRep;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsReq;
-import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.ticket.EncTicketPart;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlag;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.ap.ApOption;
+import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
+import org.apache.kerby.kerberos.kerb.type.ap.Authenticator;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.LastReq;
+import org.apache.kerby.kerberos.kerb.type.base.LastReqEntry;
+import org.apache.kerby.kerberos.kerb.type.base.LastReqType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncKdcRepPart;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncTgsRepPart;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsRep;
+import org.apache.kerby.kerberos.kerb.type.kdc.TgsReq;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlag;
 
 import java.nio.ByteBuffer;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgtTicketIssuer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgtTicketIssuer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgtTicketIssuer.java
index 91d2e46..8a98c45 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgtTicketIssuer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TgtTicketIssuer.java
@@ -19,8 +19,8 @@
  */
 package org.apache.kerby.kerberos.kerb.server.request;
 
-import org.apache.kerby.kerberos.kerb.spec.base.TransitedEncoding;
-import org.apache.kerby.kerberos.kerb.spec.base.TransitedEncodingType;
+import org.apache.kerby.kerberos.kerb.type.base.TransitedEncoding;
+import org.apache.kerby.kerberos.kerb.type.base.TransitedEncodingType;
 
 /**
  * Issuing TGT ticket.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java
index 7021c27..8af8be5 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/request/TicketIssuer.java
@@ -25,22 +25,22 @@ import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
 import org.apache.kerby.kerberos.kerb.server.KdcContext;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.base.TransitedEncoding;
-import org.apache.kerby.kerberos.kerb.spec.base.TransitedEncodingType;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcOption;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcOptions;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-import org.apache.kerby.kerberos.kerb.spec.ticket.EncTicketPart;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlag;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlags;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.TransitedEncoding;
+import org.apache.kerby.kerberos.kerb.type.base.TransitedEncodingType;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcOption;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcOptions;
+import org.apache.kerby.kerberos.kerb.type.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlag;
+import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlags;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbInputStream.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbInputStream.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbInputStream.java
index b523505..3dac9bf 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbInputStream.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/KrbInputStream.java
@@ -19,10 +19,10 @@
  */
 package org.apache.kerby.kerberos.kerb;
 
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.DataInputStream;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 b1ea2c4..a2a3c0f 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
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb;
 
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.DataOutputStream;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheInputStream.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheInputStream.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheInputStream.java
index ff685a1..ea52156 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheInputStream.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/CredCacheInputStream.java
@@ -20,18 +20,18 @@
 package org.apache.kerby.kerberos.kerb.ccache;
 
 import org.apache.kerby.kerberos.kerb.KrbInputStream;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationType;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddrType;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddress;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.NameType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlags;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationDataEntry;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddrType;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddress;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlags;
 
 import java.io.IOException;
 import java.io.InputStream;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 75e720d..4ee1313 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
@@ -20,15 +20,15 @@
 package org.apache.kerby.kerberos.kerb.ccache;
 
 import org.apache.kerby.kerberos.kerb.KrbOutputStream;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationDataEntry;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddress;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlags;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationDataEntry;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddress;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlags;
 
 import java.io.IOException;
 import java.io.OutputStream;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/Credential.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/Credential.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/Credential.java
index a391089..c29c8bd 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/Credential.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/Credential.java
@@ -19,16 +19,16 @@
  */
 package org.apache.kerby.kerberos.kerb.ccache;
 
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.ad.AuthorizationData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.HostAddresses;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.kdc.EncKdcRepPart;
-import org.apache.kerby.kerberos.kerb.spec.ticket.KrbTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TicketFlags;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.kdc.EncKdcRepPart;
+import org.apache.kerby.kerberos.kerb.type.ticket.KrbTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlags;
 
 import java.io.IOException;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 6971788..d2b8e7e 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
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.ccache;
 
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
 
 import java.io.File;
 import java.io.FileInputStream;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/KrbCredentialCache.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/KrbCredentialCache.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/KrbCredentialCache.java
index 72820a2..77d80d2 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/KrbCredentialCache.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/ccache/KrbCredentialCache.java
@@ -19,7 +19,7 @@
  */
 package org.apache.kerby.kerberos.kerb.ccache;
 
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.File;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 e0a8147..6c23329 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,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.keytab;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.File;
 import java.io.FileInputStream;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 1ccec6f..2744aad 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
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.keytab;
 
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 bd2d1ac..a856629 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
@@ -20,11 +20,11 @@
 package org.apache.kerby.kerberos.kerb.keytab;
 
 import org.apache.kerby.kerberos.kerb.KrbInputStream;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.NameType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.NameType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.IOException;
 import java.io.InputStream;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 3fe2280..a372cb5 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
@@ -20,8 +20,8 @@
 package org.apache.kerby.kerberos.kerb.keytab;
 
 import org.apache.kerby.kerberos.kerb.KrbOutputStream;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.IOException;
 import java.io.OutputStream;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KrbKeytab.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KrbKeytab.java b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KrbKeytab.java
index 175d77a..9fe8715 100644
--- a/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KrbKeytab.java
+++ b/kerby-kerb/kerb-util/src/main/java/org/apache/kerby/kerberos/kerb/keytab/KrbKeytab.java
@@ -19,9 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.keytab;
 
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 
 import java.io.File;
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 b13a7c4..cb606e1 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
@@ -20,7 +20,7 @@
 package org.apache.kerby.kerberos.kerb.util;
 
 import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 159fc8d..a00667a 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
@@ -24,13 +24,13 @@ import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
 import org.apache.kerby.kerberos.kerb.keytab.Keytab;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
-import org.apache.kerby.kerberos.kerb.spec.ticket.EncTicketPart;
-import org.apache.kerby.kerberos.kerb.spec.ticket.Ticket;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 735088e..e755f95 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
@@ -23,9 +23,9 @@ import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
 import org.apache.kerby.kerberos.kerb.keytab.Keytab;
 import org.apache.kerby.kerberos.kerb.keytab.KeytabEntry;
 import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/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 5ba6b5b..11d434a 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
@@ -21,7 +21,7 @@ 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.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/NewEncryptionTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/NewEncryptionTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/NewEncryptionTest.java
index 2545c1c..5790bda 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/NewEncryptionTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/NewEncryptionTest.java
@@ -21,10 +21,10 @@ package org.apache.kerby.kerberos.kerb.util;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptedData;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.base.KeyUsage;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.KeyUsage;
 import org.junit.Test;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtAuthToken.java
----------------------------------------------------------------------
diff --git a/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtAuthToken.java b/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtAuthToken.java
index 0b66b16..e5d92c8 100644
--- a/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtAuthToken.java
+++ b/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtAuthToken.java
@@ -24,7 +24,7 @@ import com.nimbusds.jwt.JWT;
 import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.jwt.PlainJWT;
 import com.nimbusds.jwt.ReadOnlyJWTClaimsSet;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 
 import java.util.Date;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenDecoder.java
----------------------------------------------------------------------
diff --git a/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenDecoder.java b/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenDecoder.java
index 8aad479..de5f4f9 100644
--- a/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenDecoder.java
+++ b/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenDecoder.java
@@ -35,7 +35,7 @@ import com.nimbusds.jwt.SignedJWT;
 
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.provider.TokenDecoder;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenEncoder.java
----------------------------------------------------------------------
diff --git a/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenEncoder.java b/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenEncoder.java
index 03ebdcf..7ee7bd4 100644
--- a/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenEncoder.java
+++ b/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenEncoder.java
@@ -39,7 +39,7 @@ import com.nimbusds.jwt.JWT;
 import com.nimbusds.jwt.SignedJWT;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 
 import java.nio.charset.StandardCharsets;
 import java.security.PrivateKey;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenProvider.java
----------------------------------------------------------------------
diff --git a/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenProvider.java b/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenProvider.java
index f40c0e5..036443e 100644
--- a/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenProvider.java
+++ b/kerby-provider/token-provider/src/main/java/org/apache/kerby/kerberos/provider/token/JwtTokenProvider.java
@@ -23,7 +23,7 @@ import org.apache.kerby.kerberos.kerb.provider.TokenDecoder;
 import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
 import org.apache.kerby.kerberos.kerb.provider.TokenFactory;
 import org.apache.kerby.kerberos.kerb.provider.TokenProvider;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 
 /**
  * JWT Token provider.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-provider/token-provider/src/test/java/org/apache/kerby/kerberos/provider/token/TokenTest.java
----------------------------------------------------------------------
diff --git a/kerby-provider/token-provider/src/test/java/org/apache/kerby/kerberos/provider/token/TokenTest.java b/kerby-provider/token-provider/src/test/java/org/apache/kerby/kerberos/provider/token/TokenTest.java
index 6ca118e..8957da9 100644
--- a/kerby-provider/token-provider/src/test/java/org/apache/kerby/kerberos/provider/token/TokenTest.java
+++ b/kerby-provider/token-provider/src/test/java/org/apache/kerby/kerberos/provider/token/TokenTest.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.provider.token;
 import org.apache.kerby.kerberos.kerb.KrbRuntime;
 import org.apache.kerby.kerberos.kerb.provider.TokenDecoder;
 import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 import org.assertj.core.api.Assertions;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java
----------------------------------------------------------------------
diff --git a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java
index cb4c55f..3cf4508 100644
--- a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java
+++ b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/kinit/KinitTool.java
@@ -24,8 +24,8 @@ import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.client.KrbClient;
 import org.apache.kerby.kerberos.kerb.client.KrbOption;
-import org.apache.kerby.kerberos.kerb.spec.ticket.SgtTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.SgtTicket;
+import org.apache.kerby.kerberos.kerb.type.ticket.TgtTicket;
 import org.apache.kerby.kerberos.tool.ToolUtil;
 import org.apache.kerby.util.OSUtil;
 import org.apache.kerby.util.SysUtil;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java
----------------------------------------------------------------------
diff --git a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java
index 9ddb291..57dfe4b 100644
--- a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java
+++ b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/klist/KlistTool.java
@@ -25,7 +25,7 @@ import org.apache.kerby.kerberos.kerb.ccache.Credential;
 import org.apache.kerby.kerberos.kerb.ccache.CredentialCache;
 import org.apache.kerby.kerberos.kerb.keytab.Keytab;
 import org.apache.kerby.kerberos.kerb.keytab.KeytabEntry;
-import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
 import org.apache.kerby.util.HexUtil;
 import org.apache.kerby.util.OSUtil;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/token/TokenInit.java
----------------------------------------------------------------------
diff --git a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/token/TokenInit.java b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/token/TokenInit.java
index d257f76..d5ff8e1 100644
--- a/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/token/TokenInit.java
+++ b/kerby-tool/client-tool/src/main/java/org/apache/kerby/kerberos/tool/token/TokenInit.java
@@ -22,7 +22,7 @@ package org.apache.kerby.kerberos.tool.token;
 import org.apache.kerby.kerberos.kerb.KrbRuntime;
 import org.apache.kerby.kerberos.kerb.provider.TokenDecoder;
 import org.apache.kerby.kerberos.kerb.provider.TokenEncoder;
-import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
+import org.apache.kerby.kerberos.kerb.type.base.AuthToken;
 import org.apache.kerby.kerberos.provider.token.JwtTokenProvider;
 
 import java.util.ArrayList;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java
----------------------------------------------------------------------
diff --git a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java
index c029935..33d4929 100644
--- a/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java
+++ b/kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/command/GetPrincipalCommand.java
@@ -22,8 +22,8 @@ package org.apache.kerby.kerberos.tool.kadmin.command;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.admin.Kadmin;
 import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
 
 import java.util.Map;
 


[10/19] directory-kerby git commit: Renamed spec package to type for Kerberos types defined in kerb-core module to be consistent with ASN1/X509/CMS

Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaAuthnEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaAuthnEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaAuthnEntry.java
new file mode 100644
index 0000000..8494ef9
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaAuthnEntry.java
@@ -0,0 +1,81 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
+
+/**
+ PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
+     pa-type      [0] Int32,
+     pa-hint      [1] OCTET STRING OPTIONAL,
+     pa-value     [2] OCTET STRING OPTIONAL,
+ }
+ */
+public class PaAuthnEntry extends KrbSequenceType {
+    private static final int PA_TYPE = 0;
+    private static final int PA_HINT = 1;
+    private static final int PA_VALUE = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PA_TYPE, Asn1Integer.class),
+            new ExplicitField(PA_HINT, Asn1OctetString.class),
+            new ExplicitField(PA_VALUE, Asn1OctetString.class)
+    };
+
+    public PaAuthnEntry() {
+        super(fieldInfos);
+    }
+
+    public PaAuthnEntry(PaDataType type, byte[] paData) {
+        this();
+        setPaType(type);
+        setPaValue(paData);
+    }
+
+    public PaDataType getPaType() {
+        Integer value = getFieldAsInteger(PA_TYPE);
+        return PaDataType.fromValue(value);
+    }
+
+    public void setPaType(PaDataType paDataType) {
+        setFieldAsInt(PA_TYPE, paDataType.getValue());
+    }
+
+    public byte[] getPaHint() {
+        return getFieldAsOctets(PA_HINT);
+    }
+
+    public void setPaHint(byte[] paHint) {
+        setFieldAsOctets(PA_HINT, paHint);
+    }
+
+    public byte[] getPaValue() {
+        return getFieldAsOctets(PA_VALUE);
+    }
+
+    public void setPaValue(byte[] paValue) {
+        setFieldAsOctets(PA_VALUE, paValue);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaAuthnSet.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaAuthnSet.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaAuthnSet.java
new file mode 100644
index 0000000..89d03c0
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaAuthnSet.java
@@ -0,0 +1,29 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ PA-AUTHENTICATION-SET ::= SEQUENCE OF PA-AUTHENTICATION-SET-ELEM
+ */
+public class PaAuthnSet extends KrbSequenceOfType<PaAuthnEntry> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaFxFastReply.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaFxFastReply.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaFxFastReply.java
new file mode 100644
index 0000000..f3966f6
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaFxFastReply.java
@@ -0,0 +1,49 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.type.Asn1Choice;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+
+/**
+ PA-FX-FAST-REPLY ::= CHOICE {
+    armored-data [0] KrbFastArmoredRep,
+ }
+ */
+public class PaFxFastReply extends Asn1Choice {
+    private static final int ARMORED_DATA = 0;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ARMORED_DATA, KrbFastArmoredRep.class)
+    };
+
+    public PaFxFastReply() {
+        super(fieldInfos);
+    }
+
+    public KrbFastArmoredRep getFastArmoredRep() {
+        return getFieldAs(ARMORED_DATA, KrbFastArmoredRep.class);
+    }
+
+    public void setFastArmoredRep(KrbFastArmoredRep fastArmoredRep) {
+        setFieldAs(ARMORED_DATA, fastArmoredRep);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaFxFastRequest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaFxFastRequest.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaFxFastRequest.java
new file mode 100644
index 0000000..a1b26c7
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/fast/PaFxFastRequest.java
@@ -0,0 +1,49 @@
+/**
+ *  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.type.fast;
+
+import org.apache.kerby.asn1.type.Asn1Choice;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+
+/**
+ PA-FX-FAST-REQUEST ::= CHOICE {
+    armored-data [0] KrbFastArmoredReq,
+ }
+ */
+public class PaFxFastRequest extends Asn1Choice {
+    private static final int ARMORED_DATA = 0;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(ARMORED_DATA, KrbFastArmoredReq.class)
+    };
+
+    public PaFxFastRequest() {
+        super(fieldInfos);
+    }
+
+    public KrbFastArmoredReq getFastArmoredReq() {
+        return getFieldAs(ARMORED_DATA, KrbFastArmoredReq.class);
+    }
+
+    public void setFastArmoredReq(KrbFastArmoredReq fastArmoredReq) {
+        setFieldAs(ARMORED_DATA, fastArmoredReq);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/AsRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/AsRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/AsRep.java
new file mode 100644
index 0000000..2f13c5d
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/AsRep.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.type.kdc;
+
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+
+/**
+ AS-REP          ::= [APPLICATION 11] KDC-REP
+ */
+public class AsRep extends KdcRep {
+
+    public AsRep() {
+        super(KrbMessageType.AS_REP);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/AsReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/AsReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/AsReq.java
new file mode 100644
index 0000000..d3a6765
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/AsReq.java
@@ -0,0 +1,31 @@
+/**
+ *  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.type.kdc;
+
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+
+/**
+ AS-REQ          ::= [APPLICATION 10] KDC-REQ
+ */
+public class AsReq extends KdcReq {
+    public AsReq() {
+        super(KrbMessageType.AS_REQ);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncAsRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncAsRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncAsRepPart.java
new file mode 100644
index 0000000..19c0988
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncAsRepPart.java
@@ -0,0 +1,31 @@
+/**
+ *  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.type.kdc;
+
+/**
+EncASRepPart    ::= [APPLICATION 25] EncKDCRepPart
+*/
+public class EncAsRepPart extends EncKdcRepPart {
+    public static final int TAG = 25;
+
+    public EncAsRepPart() {
+        super(TAG);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncKdcRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncKdcRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncKdcRepPart.java
new file mode 100644
index 0000000..d363ca7
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncKdcRepPart.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.type.kdc;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbAppSequenceType;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.LastReq;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlags;
+
+/**
+ EncKDCRepPart   ::= SEQUENCE {
+ key             [0] EncryptionKey,
+ last-req        [1] LastReq,
+ nonce           [2] UInt32,
+ key-expiration  [3] KerberosTime OPTIONAL,
+ flags           [4] TicketFlags,
+ authtime        [5] KerberosTime,
+ starttime       [6] KerberosTime OPTIONAL,
+ endtime         [7] KerberosTime,
+ renew-till      [8] KerberosTime OPTIONAL,
+ srealm          [9] Realm,
+ sname           [10] PrincipalName,
+ caddr           [11] HostAddresses OPTIONAL
+ }
+ */
+public abstract class EncKdcRepPart extends KrbAppSequenceType {
+    private static final int KEY = 0;
+    private static final int LAST_REQ = 1;
+    private static final int NONCE = 2;
+    private static final int KEY_EXPIRATION = 3;
+    private static final int FLAGS = 4;
+    private static final int AUTHTIME = 5;
+    private static final int STARTTIME = 6;
+    private static final int ENDTIME = 7;
+    private static final int RENEW_TILL = 8;
+    private static final int SREALM = 9;
+    private static final int SNAME = 10;
+    private static final int CADDR = 11;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(KEY, EncryptionKey.class),
+            new ExplicitField(LAST_REQ, LastReq.class),
+            new ExplicitField(NONCE, Asn1Integer.class),
+            new ExplicitField(KEY_EXPIRATION, KerberosTime.class),
+            new ExplicitField(FLAGS, TicketFlags.class),
+            new ExplicitField(AUTHTIME, KerberosTime.class),
+            new ExplicitField(STARTTIME, KerberosTime.class),
+            new ExplicitField(ENDTIME, KerberosTime.class),
+            new ExplicitField(RENEW_TILL, KerberosTime.class),
+            new ExplicitField(SREALM, KerberosString.class),
+            new ExplicitField(SNAME, PrincipalName.class),
+            new ExplicitField(CADDR, HostAddresses.class)
+    };
+
+    public EncKdcRepPart(int tagNo) {
+        super(tagNo, fieldInfos);
+    }
+
+    public EncryptionKey getKey() {
+        return getFieldAs(KEY, EncryptionKey.class);
+    }
+
+    public void setKey(EncryptionKey key) {
+        setFieldAs(KEY, key);
+    }
+
+    public LastReq getLastReq() {
+        return getFieldAs(LAST_REQ, LastReq.class);
+    }
+
+    public void setLastReq(LastReq lastReq) {
+        setFieldAs(LAST_REQ, lastReq);
+    }
+
+    public int getNonce() {
+        return getFieldAsInt(NONCE);
+    }
+
+    public void setNonce(int nonce) {
+        setFieldAsInt(NONCE, nonce);
+    }
+
+    public KerberosTime getKeyExpiration() {
+        return getFieldAsTime(KEY_EXPIRATION);
+    }
+
+    public void setKeyExpiration(KerberosTime keyExpiration) {
+        setFieldAs(KEY_EXPIRATION, keyExpiration);
+    }
+
+    public TicketFlags getFlags() {
+        return getFieldAs(FLAGS, TicketFlags.class);
+    }
+
+    public void setFlags(TicketFlags flags) {
+        setFieldAs(FLAGS, flags);
+    }
+
+    public KerberosTime getAuthTime() {
+        return getFieldAsTime(AUTHTIME);
+    }
+
+    public void setAuthTime(KerberosTime authTime) {
+        setFieldAs(AUTHTIME, authTime);
+    }
+
+    public KerberosTime getStartTime() {
+        return getFieldAsTime(STARTTIME);
+    }
+
+    public void setStartTime(KerberosTime startTime) {
+        setFieldAs(STARTTIME, startTime);
+    }
+
+    public KerberosTime getEndTime() {
+        return getFieldAsTime(ENDTIME);
+    }
+
+    public void setEndTime(KerberosTime endTime) {
+        setFieldAs(ENDTIME, endTime);
+    }
+
+    public KerberosTime getRenewTill() {
+        return getFieldAsTime(RENEW_TILL);
+    }
+
+    public void setRenewTill(KerberosTime renewTill) {
+        setFieldAs(RENEW_TILL, renewTill);
+    }
+
+    public String getSrealm() {
+        return getFieldAsString(SREALM);
+    }
+
+    public void setSrealm(String srealm) {
+        setFieldAsString(SREALM, srealm);
+    }
+
+    public PrincipalName getSname() {
+        return getFieldAs(SNAME, PrincipalName.class);
+    }
+
+    public void setSname(PrincipalName sname) {
+        setFieldAs(SNAME, sname);
+    }
+
+    public HostAddresses getCaddr() {
+        return getFieldAs(CADDR, HostAddresses.class);
+    }
+
+    public void setCaddr(HostAddresses caddr) {
+        setFieldAs(CADDR, caddr);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncTgsRepPart.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncTgsRepPart.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncTgsRepPart.java
new file mode 100644
index 0000000..70fb23d
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/EncTgsRepPart.java
@@ -0,0 +1,31 @@
+/**
+ *  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.type.kdc;
+
+/**
+ EncTGSRepPart   ::= [APPLICATION 26] EncKDCRepPart
+ */
+public class EncTgsRepPart extends EncKdcRepPart {
+    public static final int TAG = 26;
+
+    public EncTgsRepPart() {
+        super(TAG);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcOption.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcOption.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcOption.java
new file mode 100644
index 0000000..ef6261d
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcOption.java
@@ -0,0 +1,79 @@
+/**
+ *  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.type.kdc;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+public enum KdcOption implements Asn1EnumType {
+    NONE(-1),
+    //RESERVED(0x80000000),
+    FORWARDABLE(0x40000000),
+    FORWARDED(0x20000000),
+    PROXIABLE(0x10000000),
+    PROXY(0x08000000),
+    ALLOW_POSTDATE(0x04000000),
+    POSTDATED(0x02000000),
+    //UNUSED(0x01000000),
+    RENEWABLE(0x00800000),
+    //UNUSED(0x00400000),
+    //RESERVED(0x00200000),
+    //RESERVED(0x00100000),
+    //RESERVED(0x00080000),
+    //RESERVED(0x00040000),
+    CNAME_IN_ADDL_TKT(0x00020000),
+    CANONICALIZE(0x00010000),
+    REQUEST_ANONYMOUS(0x00008000),
+    //RESERVED(0x00004000),
+    //RESERVED(0x00002000),
+    //RESERVED(0x00001000),
+    //RESERVED(0x00000800),
+    //RESERVED(0x00000400),
+    //RESERVED(0x00000200),
+    //RESERVED(0x00000100),
+    //RESERVED(0x00000080),
+    //RESERVED(0x00000040),
+    DISABLE_TRANSITED_CHECK(0x00000020),
+    RENEWABLE_OK(0x00000010),
+    ENC_TKT_IN_SKEY(0x00000008),
+    //UNUSED(0x00000004),
+    RENEW(0x00000002),
+    VALIDATE(0x00000001);
+
+    private final int value;
+
+    private KdcOption(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static KdcOption fromValue(int value) {
+        for (Asn1EnumType e : values()) {
+            if (e.getValue() == value) {
+                return (KdcOption) e;
+            }
+        }
+
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcOptions.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcOptions.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcOptions.java
new file mode 100644
index 0000000..fb0c9db
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcOptions.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.type.kdc;
+
+import org.apache.kerby.asn1.type.Asn1Flags;
+
+public class KdcOptions extends Asn1Flags {
+
+    public KdcOptions() {
+        this(0);
+    }
+
+    public KdcOptions(int value) {
+        setFlags(value);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcRep.java
new file mode 100644
index 0000000..9d0bd88
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcRep.java
@@ -0,0 +1,117 @@
+/**
+ *  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.type.kdc;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
+
+/**
+ KDC-REP         ::= SEQUENCE {
+ pvno            [0] INTEGER (5),
+ msg-type        [1] INTEGER (11 -- AS -- | 13 -- TGS --),
+ padata          [2] SEQUENCE OF PA-DATA OPTIONAL
+ -- NOTE: not empty --,
+ crealm          [3] Realm,
+ cname           [4] PrincipalName,
+ ticket          [5] Ticket,
+ enc-part        [6] EncryptedData
+ -- EncASRepPart or EncTGSRepPart,
+ -- as appropriate
+ }
+ */
+public class KdcRep extends KrbMessage {
+    private static final int PADATA = 2;
+    private static final int CREALM = 3;
+    private static final int CNAME = 4;
+    private static final int TICKET = 5;
+    private static final int ENC_PART = 6;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PVNO, Asn1Integer.class),
+            new ExplicitField(MSG_TYPE, Asn1Integer.class),
+            new ExplicitField(PADATA, PaData.class),
+            new ExplicitField(CREALM, KerberosString.class),
+            new ExplicitField(CNAME, PrincipalName.class),
+            new ExplicitField(TICKET, Ticket.class),
+            new ExplicitField(ENC_PART, EncryptedData.class)
+    };
+
+    private EncKdcRepPart encPart;
+
+    public KdcRep(KrbMessageType msgType) {
+        super(msgType, fieldInfos);
+    }
+
+    public PaData getPaData() {
+        return getFieldAs(PADATA, PaData.class);
+    }
+
+    public void setPaData(PaData paData) {
+        setFieldAs(PADATA, paData);
+    }
+
+    public PrincipalName getCname() {
+        return getFieldAs(CNAME, PrincipalName.class);
+    }
+
+    public void setCname(PrincipalName sname) {
+        setFieldAs(CNAME, sname);
+    }
+
+    public String getCrealm() {
+        return getFieldAsString(CREALM);
+    }
+
+    public void setCrealm(String realm) {
+        setFieldAs(CREALM, new KerberosString(realm));
+    }
+
+    public Ticket getTicket() {
+        return getFieldAs(TICKET, Ticket.class);
+    }
+
+    public void setTicket(Ticket ticket) {
+        setFieldAs(TICKET, ticket);
+    }
+
+    public EncryptedData getEncryptedEncPart() {
+        return getFieldAs(ENC_PART, EncryptedData.class);
+    }
+
+    public void setEncryptedEncPart(EncryptedData encryptedEncPart) {
+        setFieldAs(ENC_PART, encryptedEncPart);
+    }
+
+    public EncKdcRepPart getEncPart() {
+        return encPart;
+    }
+
+    public void setEncPart(EncKdcRepPart encPart) {
+        this.encPart = encPart;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcReq.java
new file mode 100644
index 0000000..98b2d80
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcReq.java
@@ -0,0 +1,77 @@
+/**
+ *  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.type.kdc;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.type.pa.PaData;
+import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
+
+/**
+ KDC-REQ         ::= SEQUENCE {
+ -- NOTE: first tag is [1], not [0]
+ pvno            [1] INTEGER (5) ,
+ msg-type        [2] INTEGER (10 -- AS -- | 12 -- TGS --),
+ padata          [3] SEQUENCE OF PA-DATA OPTIONAL
+ -- NOTE: not empty --,
+ req-encodeBody        [4] KDC-REQ-BODY
+ }
+ */
+public class KdcReq extends KrbMessage {
+    private static final int PADATA = 2;
+    private static final int REQ_BODY = 3;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PVNO, 1, Asn1Integer.class),
+            new ExplicitField(MSG_TYPE, 2, Asn1Integer.class),
+            new ExplicitField(PADATA, 3, PaData.class),
+            new ExplicitField(REQ_BODY, 4, KdcReqBody.class)
+    };
+
+    public KdcReq(KrbMessageType msgType) {
+        super(msgType, fieldInfos);
+    }
+
+    public PaData getPaData() {
+        return getFieldAs(PADATA, PaData.class);
+    }
+
+    public void setPaData(PaData paData) {
+        setFieldAs(PADATA, paData);
+    }
+
+    public void addPaData(PaDataEntry paDataEntry) {
+        if (getPaData() == null) {
+            setPaData(new PaData());
+        }
+        getPaData().addElement(paDataEntry);
+    }
+
+    public KdcReqBody getReqBody() {
+        return getFieldAs(REQ_BODY, KdcReqBody.class);
+    }
+
+    public void setReqBody(KdcReqBody reqBody) {
+        setFieldAs(REQ_BODY, reqBody);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcReqBody.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcReqBody.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcReqBody.java
new file mode 100644
index 0000000..f7a23c1
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/KdcReqBody.java
@@ -0,0 +1,214 @@
+/**
+ *  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.type.kdc;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbIntegers;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.ad.AuthorizationData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
+import org.apache.kerby.kerberos.kerb.type.base.EncryptionType;
+import org.apache.kerby.kerberos.kerb.type.base.HostAddresses;
+import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
+import org.apache.kerby.kerberos.kerb.type.ticket.Tickets;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ KDC-REQ-BODY    ::= SEQUENCE {
+ kdc-options             [0] KDCOptions,
+ cname                   [1] PrincipalName OPTIONAL
+ -- Used only in AS-REQ --,
+ realm                   [2] Realm
+ -- Server's realm
+ -- Also client's in AS-REQ --,
+ sname                   [3] PrincipalName OPTIONAL,
+ from                    [4] KerberosTime OPTIONAL,
+ till                    [5] KerberosTime,
+ rtime                   [6] KerberosTime OPTIONAL,
+ nonce                   [7] UInt32,
+ etype                   [8] SEQUENCE OF Int32 -- EncryptionType
+ -- in preference order --,
+ addresses               [9] HostAddresses OPTIONAL,
+ enc-authorization-data  [10] EncryptedData OPTIONAL
+ -- AuthorizationData --,
+ additional-tickets      [11] SEQUENCE OF Ticket OPTIONAL
+ -- NOTE: not empty
+ }
+ */
+public class KdcReqBody extends KrbSequenceType {
+    private static final int KDC_OPTIONS = 0;
+    private static final int CNAME = 1;
+    private static final int REALM = 2;
+    private static final int SNAME = 3;
+    private static final int FROM = 4;
+    private static final int TILL = 5;
+    private static final int RTIME = 6;
+    private static final int NONCE = 7;
+    private static final int ETYPE = 8;
+    private static final int ADDRESSES = 9;
+    private static final int ENC_AUTHORIZATION_DATA = 10;
+    private static final int ADDITIONAL_TICKETS = 11;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(KDC_OPTIONS, KdcOptions.class),
+            new ExplicitField(CNAME, PrincipalName.class),
+            new ExplicitField(REALM, KerberosString.class),
+            new ExplicitField(SNAME, PrincipalName.class),
+            new ExplicitField(FROM, KerberosTime.class),
+            new ExplicitField(TILL, KerberosTime.class),
+            new ExplicitField(RTIME, KerberosTime.class),
+            new ExplicitField(NONCE, Asn1Integer.class),
+            new ExplicitField(ETYPE, KrbIntegers.class),
+            new ExplicitField(ADDRESSES, HostAddresses.class),
+            new ExplicitField(ENC_AUTHORIZATION_DATA, AuthorizationData.class),
+            new ExplicitField(ADDITIONAL_TICKETS, Tickets.class)
+    };
+
+    public KdcReqBody() {
+        super(fieldInfos);
+    }
+
+    private AuthorizationData authorizationData;
+
+    public KerberosTime getFrom() {
+        return getFieldAs(FROM, KerberosTime.class);
+    }
+
+    public void setFrom(KerberosTime from) {
+        setFieldAs(FROM, from);
+    }
+
+    public KerberosTime getTill() {
+        return getFieldAs(TILL, KerberosTime.class);
+    }
+
+    public void setTill(KerberosTime till) {
+        setFieldAs(TILL, till);
+    }
+
+    public KerberosTime getRtime() {
+        return getFieldAs(RTIME, KerberosTime.class);
+    }
+
+    public void setRtime(KerberosTime rtime) {
+        setFieldAs(RTIME, rtime);
+    }
+
+    public int getNonce() {
+        return getFieldAsInt(NONCE);
+    }
+
+    public void setNonce(int nonce) {
+        setFieldAsInt(NONCE, nonce);
+    }
+
+    public List<EncryptionType> getEtypes() {
+        KrbIntegers values = getFieldAs(ETYPE, KrbIntegers.class);
+        if (values == null) {
+            return Collections.emptyList();
+        }
+
+        List<EncryptionType> results = new ArrayList<EncryptionType>();
+        for (Integer value : values.getValues()) {
+            results.add(EncryptionType.fromValue(value));
+        }
+        return results;
+    }
+
+    public void setEtypes(List<EncryptionType> etypes) {
+        List<Integer> values = new ArrayList<Integer>();
+        for (EncryptionType etype: etypes) {
+            values.add(etype.getValue());
+        }
+        KrbIntegers value = new KrbIntegers(values);
+        setFieldAs(ETYPE, value);
+    }
+
+    public HostAddresses getAddresses() {
+        return getFieldAs(ADDRESSES, HostAddresses.class);
+    }
+
+    public void setAddresses(HostAddresses addresses) {
+        setFieldAs(ADDRESSES, addresses);
+    }
+
+    public EncryptedData getEncryptedAuthorizationData() {
+        return getFieldAs(ENC_AUTHORIZATION_DATA, EncryptedData.class);
+    }
+
+    public void setEncryptedAuthorizationData(EncryptedData encAuthorizationData) {
+        setFieldAs(ENC_AUTHORIZATION_DATA, encAuthorizationData);
+    }
+
+    public AuthorizationData getAuthorizationData() {
+        return authorizationData;
+    }
+
+    public void setAuthorizationData(AuthorizationData authorizationData) {
+        this.authorizationData = authorizationData;
+    }
+
+    public Tickets getAdditionalTickets() {
+        return getFieldAs(ADDITIONAL_TICKETS, Tickets.class);
+    }
+
+    public void setAdditionalTickets(Tickets additionalTickets) {
+        setFieldAs(ADDITIONAL_TICKETS, additionalTickets);
+    }
+
+    public KdcOptions getKdcOptions() {
+        return getFieldAs(KDC_OPTIONS, KdcOptions.class);
+    }
+
+    public void setKdcOptions(KdcOptions kdcOptions) {
+        setFieldAs(KDC_OPTIONS, kdcOptions);
+    }
+
+    public PrincipalName getSname() {
+        return getFieldAs(SNAME, PrincipalName.class);
+    }
+
+    public void setSname(PrincipalName sname) {
+        setFieldAs(SNAME, sname);
+    }
+
+    public PrincipalName getCname() {
+        return getFieldAs(CNAME, PrincipalName.class);
+    }
+
+    public void setCname(PrincipalName cname) {
+        setFieldAs(CNAME, cname);
+    }
+
+    public String getRealm() {
+        return getFieldAsString(REALM);
+    }
+
+    public void setRealm(String realm) {
+        setFieldAs(REALM, new KerberosString(realm));
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/TgsRep.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/TgsRep.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/TgsRep.java
new file mode 100644
index 0000000..582df95
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/TgsRep.java
@@ -0,0 +1,31 @@
+/**
+ *  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.type.kdc;
+
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+
+/**
+ TGS-REP         ::= [APPLICATION 13] KDC-REP
+ */
+public class TgsRep extends KdcRep {
+    public TgsRep() {
+        super(KrbMessageType.TGS_REP);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/TgsReq.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/TgsReq.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/TgsReq.java
new file mode 100644
index 0000000..b20b413
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/kdc/TgsReq.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.type.kdc;
+
+import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+
+/**
+ TGS-REQ         ::= [APPLICATION 12] KDC-REQ
+ */
+public class TgsReq extends KdcReq {
+
+    public TgsReq() {
+        super(KrbMessageType.TGS_REQ);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaAuthenticationSet.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaAuthenticationSet.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaAuthenticationSet.java
new file mode 100644
index 0000000..6690d98
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaAuthenticationSet.java
@@ -0,0 +1,29 @@
+/**
+ *  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.type.pa;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ PA-AUTHENTICATION-SET ::= SEQUENCE OF PA-AUTHENTICATION-SET-ELEM
+ */
+public class PaAuthenticationSet extends KrbSequenceOfType<PaAuthenticationSetElem> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaAuthenticationSetElem.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaAuthenticationSetElem.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaAuthenticationSetElem.java
new file mode 100644
index 0000000..83b390e
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaAuthenticationSetElem.java
@@ -0,0 +1,75 @@
+/**
+ *  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.type.pa;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
+     pa-type      [0] Int32,
+     -- same as padata-type.
+     pa-hint      [1] OCTET STRING OPTIONAL,
+     pa-value     [2] OCTET STRING OPTIONAL
+ }
+ */
+public class PaAuthenticationSetElem extends KrbSequenceType {
+    private static final int PA_TYPE = 0;
+    private static final int PA_HINT = 1;
+    private static final int PA_VALUE = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PA_TYPE, Asn1Integer.class),
+            new ExplicitField(PA_HINT, Asn1OctetString.class),
+            new ExplicitField(PA_VALUE, Asn1OctetString.class)
+    };
+
+    public PaAuthenticationSetElem() {
+        super(fieldInfos);
+    }
+
+    public PaDataType getPaType() {
+        Integer value = getFieldAsInteger(PA_TYPE);
+        return PaDataType.fromValue(value);
+    }
+
+    public void setPaType(PaDataType paDataType) {
+        setFieldAsInt(PA_TYPE, paDataType.getValue());
+    }
+
+    public byte[] getPaHint() {
+        return getFieldAsOctets(PA_HINT);
+    }
+
+    public void setPaHint(byte[] paHint) {
+        setFieldAsOctets(PA_HINT, paHint);
+    }
+
+    public byte[] getPaValue() {
+        return getFieldAsOctets(PA_VALUE);
+    }
+
+    public void setPaValue(byte[] paDataValue) {
+        setFieldAsOctets(PA_VALUE, paDataValue);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaData.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaData.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaData.java
new file mode 100644
index 0000000..bcbaaf8
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaData.java
@@ -0,0 +1,41 @@
+/**
+ *  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.type.pa;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ PA-DATA         ::= SEQUENCE {
+     -- NOTE: first tag is [1], not [0]
+     padata-type     [1] Int32,
+     padata-value    [2] OCTET STRING -- might be encoded AP-REQ
+ }
+ */
+public class PaData extends KrbSequenceOfType<PaDataEntry> {
+
+    public PaDataEntry findEntry(PaDataType paType) {
+        for (PaDataEntry pae : getElements()) {
+            if (pae.getPaDataType() == paType) {
+                return pae;
+            }
+        }
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaDataEntry.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaDataEntry.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaDataEntry.java
new file mode 100644
index 0000000..ea2f131
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaDataEntry.java
@@ -0,0 +1,70 @@
+/**
+ *  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.type.pa;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ PA-DATA         ::= SEQUENCE {
+     -- NOTE: first tag is [1], not [0]
+     padata-type     [1] Int32,
+     padata-value    [2] OCTET STRING -- might be encoded AP-REQ
+ }
+ */
+public class PaDataEntry extends KrbSequenceType {
+    private static final int PADATA_TYPE = 0;
+    private static final int PADATA_VALUE = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PADATA_TYPE, 1, Asn1Integer.class),
+            new ExplicitField(PADATA_VALUE, 2, Asn1OctetString.class)
+    };
+
+    public PaDataEntry() {
+        super(fieldInfos);
+    }
+
+    public PaDataEntry(PaDataType type, byte[] paData) {
+        this();
+        setPaDataType(type);
+        setPaDataValue(paData);
+    }
+
+    public PaDataType getPaDataType() {
+        Integer value = getFieldAsInteger(PADATA_TYPE);
+        return PaDataType.fromValue(value);
+    }
+
+    public void setPaDataType(PaDataType paDataType) {
+        setFieldAsInt(PADATA_TYPE, paDataType.getValue());
+    }
+
+    public byte[] getPaDataValue() {
+        return getFieldAsOctets(PADATA_VALUE);
+    }
+
+    public void setPaDataValue(byte[] paDataValue) {
+        setFieldAsOctets(PADATA_VALUE, paDataValue);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaDataType.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaDataType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaDataType.java
new file mode 100644
index 0000000..da3807e
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaDataType.java
@@ -0,0 +1,92 @@
+/**
+ *  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.type.pa;
+
+import org.apache.kerby.asn1.type.Asn1EnumType;
+
+/**
+ * From krb5.h
+ */
+public enum PaDataType implements Asn1EnumType {
+    NONE                (0),
+    TGS_REQ              (1),
+    AP_REQ              (1),
+    ENC_TIMESTAMP       (2), // RFC 4120
+    PW_SALT             (3), // RFC 4120
+    ENC_ENCKEY        (4),  // Key encrypted within itself
+    ENC_UNIX_TIME       (5),  // timestamp encrypted in key. RFC 4120
+    ENC_SANDIA_SECURID (6),  // SecurId passcode. RFC 4120
+    SESAME              (7),  // Sesame project. RFC 4120
+    OSF_DCE             (8),  // OSF DCE. RFC 4120
+    CYBERSAFE_SECUREID (9),  // Cybersafe. RFC 4120
+    AFS3_SALT           (10), // Cygnus. RFC 4120, 3961
+    ETYPE_INFO          (11), // Etype info for preauth. RFC 4120
+    SAM_CHALLENGE       (12), // SAM/OTP
+    SAM_RESPONSE        (13), // SAM/OTP
+    PK_AS_REQ           (16), // PKINIT. RFC 4556
+    PK_AS_REP           (17), // PKINIT. RFC 4556
+    ETYPE_INFO2         (19), // RFC 4120
+    USE_SPECIFIED_KVNO  (20), // RFC 4120
+    SVR_REFERRAL_INFO   (20), // Windows 2000 referrals. RFC 6820
+    SAM_REDIRECT        (21), // SAM/OTP. RFC 4120
+    GET_FROM_TYPED_DATA (22), // Embedded in typed data. RFC 4120
+    REFERRAL            (25), // draft referral system
+    SAM_CHALLENGE_2     (30), // draft challenge system, updated
+    SAM_RESPONSE_2      (31), // draft challenge system, updated
+    /* MS-KILE */
+    PAC_REQUEST         (128), // include Windows PAC
+    FOR_USER            (129), // username protocol transition request
+    S4U_X509_USER       (130), // certificate protocol transition request
+    AS_CHECKSUM         (132), // AS checksum
+    FX_COOKIE           (133), // RFC 6113
+    FX_FAST             (136), // RFC 6113
+    FX_ERROR            (137), // RFC 6113
+    ENCRYPTED_CHALLENGE (138), // RFC 6113
+    OTP_CHALLENGE       (141), // RFC 6560 section 4.1
+    OTP_REQUEST         (142), // RFC 6560 section 4.2
+    OTP_PIN_CHANGE      (144), // RFC 6560 section 4.3
+    PKINIT_KX           (147), // RFC 6112
+    ENCPADATA_REQ_ENC_PA_REP   (149), // RFC 6806
+    TOKEN_REQUEST       (148), // TokenPreauth
+    TOKEN_CHALLENGE     (149);
+
+    private final int value;
+
+    private PaDataType(int value) {
+        this.value = value;
+    }
+
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    public static PaDataType fromValue(Integer value) {
+        if (value != null) {
+            for (Asn1EnumType e : values()) {
+                if (e.getValue() == value.intValue()) {
+                    return (PaDataType) e;
+                }
+            }
+        }
+
+        return NONE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaEncTsEnc.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaEncTsEnc.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaEncTsEnc.java
new file mode 100644
index 0000000..4ffff7c
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/PaEncTsEnc.java
@@ -0,0 +1,67 @@
+/**
+ *  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.type.pa;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ PA-ENC-TS-ENC           ::= SEQUENCE {
+    patimestamp     [0] KerberosTime -- client's time --,
+    pausec          [1] Microseconds OPTIONAL
+ }
+ */
+public class PaEncTsEnc extends KrbSequenceType {
+    private static final int PATIMESTAMP = 0;
+    private static final int PAUSEC = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PATIMESTAMP, 0, KerberosTime.class),
+            new ExplicitField(PAUSEC, 1, Asn1Integer.class)
+    };
+
+    public PaEncTsEnc() {
+        super(fieldInfos);
+    }
+
+    public KerberosTime getPaTimestamp() {
+        return getFieldAsTime(PATIMESTAMP);
+    }
+
+    public void setPaTimestamp(KerberosTime paTimestamp) {
+        setFieldAs(PATIMESTAMP, paTimestamp);
+    }
+
+    public int getPaUsec() {
+        return getFieldAsInt(PAUSEC);
+    }
+
+    public void setPaUsec(int paUsec) {
+        setFieldAsInt(PAUSEC, paUsec);
+    }
+
+    public KerberosTime getAllTime() {
+        KerberosTime paTimestamp = getPaTimestamp();
+        return paTimestamp.extend(getPaUsec() / 1000);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/otp/OtpTokenInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/otp/OtpTokenInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/otp/OtpTokenInfo.java
new file mode 100644
index 0000000..900d2d2
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/otp/OtpTokenInfo.java
@@ -0,0 +1,70 @@
+/**
+ *  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.type.pa.otp;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.type.Asn1Utf8String;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.kerberos.kerb.type.pa.pkinit.AlgorithmIdentifiers;
+
+/**
+ OTP-TOKENINFO ::= SEQUENCE {
+     flags            [0] OTPFlags,
+     otp-vendor       [1] UTF8String               OPTIONAL,
+     otp-challenge    [2] OCTET STRING (SIZE(1..MAX)) OPTIONAL,
+     otp-length       [3] Int32                    OPTIONAL,
+     otp-format       [4] OTPFormat                OPTIONAL,
+     otp-tokenID      [5] OCTET STRING             OPTIONAL,
+     otp-algID        [6] AnyURI                   OPTIONAL,
+     supportedHashAlg [7] SEQUENCE OF AlgorithmIdentifier OPTIONAL,
+     iterationCount   [8] Int32                    OPTIONAL
+ }
+ */
+public class OtpTokenInfo extends KrbSequenceType {
+    private static final int FLAGS = 0;
+    private static final int OTP_VENDOR = 1;
+    private static final int OTP_CHALLENGE = 2;
+    private static final int OTP_LENGTH = 3;
+    private static final int OTP_FORMAT = 4;
+    private static final int OTP_TOKEN_ID = 5;
+    private static final int OTP_ALG_ID = 6;
+    private static final int SUPPORTED_HASH_ALG = 7;
+    private static final int ITERATION_COUNT = 8;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(FLAGS, Asn1OctetString.class),
+            new ExplicitField(OTP_VENDOR, Asn1Utf8String.class),
+            new ExplicitField(OTP_CHALLENGE, Asn1OctetString.class),
+            new ExplicitField(OTP_LENGTH, KerberosString.class),
+            new ExplicitField(OTP_FORMAT, Asn1OctetString.class),
+            new ExplicitField(OTP_TOKEN_ID, Asn1Utf8String.class),
+            new ExplicitField(OTP_ALG_ID, Asn1OctetString.class),
+            new ExplicitField(SUPPORTED_HASH_ALG, AlgorithmIdentifiers.class),
+            new ExplicitField(ITERATION_COUNT, Asn1Integer.class)
+    };
+
+    public OtpTokenInfo() {
+        super(fieldInfos);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/otp/PaOtpChallenge.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/otp/PaOtpChallenge.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/otp/PaOtpChallenge.java
new file mode 100644
index 0000000..cbf245c
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/otp/PaOtpChallenge.java
@@ -0,0 +1,56 @@
+/**
+ *  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.type.pa.otp;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.type.Asn1Utf8String;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosString;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ PA-OTP-CHALLENGE ::= SEQUENCE {
+     nonce            [0] OCTET STRING,
+     otp-service      [1] UTF8String               OPTIONAL,
+     otp-tokenInfo    [2] SEQUENCE (SIZE(1..MAX)) OF OTP-TOKENINFO,
+     salt             [3] KerberosString           OPTIONAL,
+     s2kparams        [4] OCTET STRING             OPTIONAL,
+ }
+ */
+public class PaOtpChallenge extends KrbSequenceType {
+    private static final int NONCE = 0;
+    private static final int OTP_SERVICE = 1;
+    private static final int OTP_TOKEN_INFO = 2;
+    private static final int SALT = 3;
+    private static final int S2KPARAMS = 4;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(NONCE, Asn1OctetString.class),
+            new ExplicitField(OTP_SERVICE, Asn1Utf8String.class),
+            new ExplicitField(OTP_TOKEN_INFO, Asn1OctetString.class),
+            new ExplicitField(SALT, KerberosString.class),
+            new ExplicitField(S2KPARAMS, Asn1OctetString.class)
+    };
+
+    public PaOtpChallenge() {
+        super(fieldInfos);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AdInitialVerifiedCas.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AdInitialVerifiedCas.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AdInitialVerifiedCas.java
new file mode 100644
index 0000000..ac6d4eb
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AdInitialVerifiedCas.java
@@ -0,0 +1,28 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+
+/**
+ * AD-INITIAL-VERIFIED-CAS ::= SEQUENCE OF ExternalPrincipalIdentifier
+ */
+public class AdInitialVerifiedCas extends KrbSequenceOfType<ExternalPrincipalIdentifier> {
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AlgorithmIdentifiers.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AlgorithmIdentifiers.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AlgorithmIdentifiers.java
new file mode 100644
index 0000000..a64245a
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AlgorithmIdentifiers.java
@@ -0,0 +1,30 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceOfType;
+import org.apache.kerby.x509.type.AlgorithmIdentifier;
+
+/**
+ trustedCertifiers       SEQUENCE OF AlgorithmIdentifier OPTIONAL,
+ */
+public class AlgorithmIdentifiers extends KrbSequenceOfType<AlgorithmIdentifier> {
+
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AuthPack.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AuthPack.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AuthPack.java
new file mode 100644
index 0000000..c387674
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AuthPack.java
@@ -0,0 +1,83 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import org.apache.kerby.x509.type.SubjectPublicKeyInfo;
+
+/**
+ AuthPack ::= SEQUENCE {
+     pkAuthenticator         [0] PKAuthenticator,
+     clientPublicValue       [1] SubjectPublicKeyInfo OPTIONAL,
+     supportedCMSTypes       [2] SEQUENCE OF AlgorithmIdentifier OPTIONAL,
+     clientDHNonce           [3] DHNonce OPTIONAL
+ }
+ */
+public class AuthPack extends KrbSequenceType {
+    private static final int PK_AUTHENTICATOR = 0;
+    private static final int CLIENT_PUBLIC_VALUE = 1;
+    private static final int SUPPORTED_CMS_TYPES = 2;
+    private static final int CLIENT_DH_NONCE = 3;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(PK_AUTHENTICATOR, PkAuthenticator.class),
+            new ExplicitField(CLIENT_PUBLIC_VALUE, SubjectPublicKeyInfo.class),
+            new ExplicitField(SUPPORTED_CMS_TYPES, AlgorithmIdentifiers.class),
+            new ExplicitField(CLIENT_DH_NONCE, DHNonce.class)
+    };
+
+    public AuthPack() {
+        super(fieldInfos);
+    }
+
+    public PkAuthenticator getPkAuthenticator() {
+        return getFieldAs(PK_AUTHENTICATOR, PkAuthenticator.class);
+    }
+
+    public void setPkAuthenticator(PkAuthenticator pkAuthenticator) {
+        setFieldAs(PK_AUTHENTICATOR, pkAuthenticator);
+    }
+
+    public SubjectPublicKeyInfo getClientPublicValue() {
+        return getFieldAs(CLIENT_PUBLIC_VALUE, SubjectPublicKeyInfo.class);
+    }
+
+    public void setClientPublicValue(SubjectPublicKeyInfo clientPublicValue) {
+        setFieldAs(CLIENT_PUBLIC_VALUE, clientPublicValue);
+    }
+
+    public AlgorithmIdentifiers getsupportedCmsTypes() {
+        return getFieldAs(CLIENT_DH_NONCE, AlgorithmIdentifiers.class);
+    }
+
+    public void setsupportedCmsTypes(AlgorithmIdentifiers supportedCMSTypes) {
+        setFieldAs(CLIENT_DH_NONCE, supportedCMSTypes);
+    }
+
+    public DHNonce getClientDhNonce() {
+        return getFieldAs(CLIENT_DH_NONCE, DHNonce.class);
+    }
+
+    public void setClientDhNonce(DHNonce dhNonce) {
+        setFieldAs(CLIENT_DH_NONCE, dhNonce);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/DHNonce.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/DHNonce.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/DHNonce.java
new file mode 100644
index 0000000..e6653b8
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/DHNonce.java
@@ -0,0 +1,28 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.type.Asn1OctetString;
+
+/**
+ * DHNonce ::= OCTET STRING
+ */
+public class DHNonce extends Asn1OctetString {
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/DHRepInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/DHRepInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/DHRepInfo.java
new file mode 100644
index 0000000..1ca5697
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/DHRepInfo.java
@@ -0,0 +1,62 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.asn1.ImplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ DHRepInfo ::= SEQUENCE {
+    dhSignedData            [0] IMPLICIT OCTET STRING,
+    serverDHNonce           [1] DHNonce OPTIONAL
+ }
+ */
+public class DHRepInfo extends KrbSequenceType {
+    private static final int DH_SIGNED_DATA = 0;
+    private static final int SERVER_DH_NONCE = 1;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ImplicitField(DH_SIGNED_DATA, Asn1OctetString.class),
+            new ExplicitField(SERVER_DH_NONCE, DHNonce.class)
+    };
+
+    public DHRepInfo() {
+        super(fieldInfos);
+    }
+
+    public byte[] getDHSignedData() {
+        return getFieldAsOctets(DH_SIGNED_DATA);
+    }
+
+    public void setDHSignedData(byte[] dhSignedData) {
+        setFieldAsOctets(DH_SIGNED_DATA, dhSignedData);
+    }
+
+    public DHNonce getServerDhNonce() {
+        return getFieldAs(SERVER_DH_NONCE, DHNonce.class);
+    }
+
+    public void setServerDhNonce(DHNonce dhNonce) {
+        setFieldAs(SERVER_DH_NONCE, dhNonce);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/ExternalPrincipalIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/ExternalPrincipalIdentifier.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/ExternalPrincipalIdentifier.java
new file mode 100644
index 0000000..d686773
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/ExternalPrincipalIdentifier.java
@@ -0,0 +1,72 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1OctetString;
+import org.apache.kerby.asn1.ImplicitField;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ ExternalPrincipalIdentifier ::= SEQUENCE {
+     subjectName             [0] IMPLICIT OCTET STRING OPTIONAL,
+     issuerAndSerialNumber   [1] IMPLICIT OCTET STRING OPTIONAL,
+     subjectKeyIdentifier    [2] IMPLICIT OCTET STRING OPTIONAL
+ }
+ */
+public class ExternalPrincipalIdentifier extends KrbSequenceType {
+    private static final int SUBJECT_NAME = 0;
+    private static final int ISSUER_AND_SERIAL_NUMBER = 1;
+    private static final int SUBJECT_KEY_IDENTIFIER = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ImplicitField(SUBJECT_NAME, Asn1OctetString.class),
+            new ImplicitField(ISSUER_AND_SERIAL_NUMBER, Asn1OctetString.class),
+            new ImplicitField(SUBJECT_KEY_IDENTIFIER, Asn1OctetString.class)
+    };
+
+    public ExternalPrincipalIdentifier() {
+        super(fieldInfos);
+    }
+
+    public byte[] getSubjectName() {
+        return getFieldAsOctets(SUBJECT_NAME);
+    }
+
+    public void setSubjectName(byte[] subjectName) {
+        setFieldAsOctets(SUBJECT_NAME, subjectName);
+    }
+
+    public byte[] getIssuerSerialNumber() {
+        return getFieldAsOctets(ISSUER_AND_SERIAL_NUMBER);
+    }
+
+    public void setIssuerSerialNumber(byte[] issuerSerialNumber) {
+        setFieldAsOctets(ISSUER_AND_SERIAL_NUMBER, issuerSerialNumber);
+    }
+
+    public byte[] getSubjectKeyIdentifier() {
+        return getFieldAsOctets(SUBJECT_KEY_IDENTIFIER);
+    }
+
+    public void setSubjectKeyIdentifier(byte[] subjectKeyIdentifier) {
+        setFieldAsOctets(SUBJECT_KEY_IDENTIFIER, subjectKeyIdentifier);
+    }
+}

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8483322e/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/KdcDHKeyInfo.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/KdcDHKeyInfo.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/KdcDHKeyInfo.java
new file mode 100644
index 0000000..7437f8d
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/KdcDHKeyInfo.java
@@ -0,0 +1,66 @@
+/**
+ *  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.type.pa.pkinit;
+
+import org.apache.kerby.asn1.type.Asn1BitString;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.ExplicitField;
+import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+
+/**
+ KDCDHKeyInfo ::= SEQUENCE {
+    subjectPublicKey        [0] BIT STRING,
+    nonce                   [1] INTEGER (0..4294967295),
+    dhKeyExpiration         [2] KerberosTime OPTIONAL,
+ }
+ */
+public class KdcDHKeyInfo extends KrbSequenceType {
+    private static final int SUBJECT_PUBLICK_KEY = 0;
+    private static final int NONCE = 1;
+    private static final int DH_KEY_EXPIRATION = 2;
+
+    static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+            new ExplicitField(SUBJECT_PUBLICK_KEY, Asn1BitString.class),
+            new ExplicitField(NONCE, Asn1Integer.class),
+            new ExplicitField(DH_KEY_EXPIRATION, KerberosTime.class)
+    };
+
+    public KdcDHKeyInfo() {
+        super(fieldInfos);
+    }
+
+    public byte[] getSubjectPublicKey() {
+        return getFieldAsOctets(SUBJECT_PUBLICK_KEY);
+    }
+
+    public void setSubjectPublicKey(byte[] subjectPublicKey) {
+        setFieldAsOctets(SUBJECT_PUBLICK_KEY, subjectPublicKey);
+    }
+
+    public int getNonce() {
+        return getFieldAsInt(NONCE);
+    }
+
+    public void setNonce(int nonce) {
+        setFieldAsInt(NONCE, nonce);
+    }
+}