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/12/03 09:00:39 UTC

[3/4] directory-kerby git commit: DIRKRB-486 Dumping support for built-in ASN1 types and user defined types.

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index aaa0d24..91a5ca9 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.fast;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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 static org.apache.kerby.kerberos.kerb.type.fast.KrbFastArmoredReq.MyEnum.*;
 
 /**
  KrbFastArmoredReq ::= SEQUENCE {
@@ -46,9 +48,21 @@ import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        ARMOR,
+        REQ_CHECKSUM,
+        ENC_FAST_REQ;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     private KrbFastReq fastReq;
 

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 2944471..7ae6b07 100644
--- 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
@@ -20,11 +20,13 @@
 package org.apache.kerby.kerberos.kerb.type.fast;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.fast.KrbFastFinished.MyEnum.*;
 
 /**
  KrbFastFinished ::= SEQUENCE {
@@ -43,9 +45,21 @@ import org.apache.kerby.kerberos.kerb.type.pa.PaData;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        FAST_OPTIONS,
+        PADATA,
+        REQ_BODY;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(FAST_OPTIONS, KrbFastArmor.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 0f7da88..eacbacf 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.fast;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.fast.KrbFastReq.MyEnum.*;
 
 /**
  KrbFastReq ::= SEQUENCE {
@@ -39,9 +41,21 @@ import org.apache.kerby.kerberos.kerb.type.pa.PaData;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        FAST_OPTIONS,
+        PADATA,
+        REQ_BODY;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(FAST_OPTIONS, FastOptions.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index cd06c42..134e7d6 100644
--- 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
@@ -20,11 +20,13 @@
 package org.apache.kerby.kerberos.kerb.type.fast;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.fast.KrbFastResponse.MyEnum.*;
 
 /**
  KrbFastResponse ::= SEQUENCE {
@@ -41,10 +43,22 @@ import org.apache.kerby.kerberos.kerb.type.pa.PaData;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        PADATA,
+        STRENGTHEN_KEY,
+        FINISHED,
+        NONCE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(PADATA, PaData.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 8494ef9..ed0a29d 100644
--- 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
@@ -20,11 +20,13 @@
 package org.apache.kerby.kerberos.kerb.type.fast;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.fast.PaAuthnEntry.MyEnum.*;
 
 /**
  PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
@@ -34,9 +36,21 @@ import org.apache.kerby.kerberos.kerb.type.pa.PaDataType;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        PA_TYPE,
+        PA_HINT,
+        PA_VALUE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(PA_TYPE, Asn1Integer.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index f3966f6..33b5863 100644
--- 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
@@ -19,9 +19,11 @@
  */
 package org.apache.kerby.kerberos.kerb.type.fast;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Choice;
 import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.kerberos.kerb.type.fast.PaFxFastReply.MyEnum.*;
 
 /**
  PA-FX-FAST-REPLY ::= CHOICE {
@@ -29,7 +31,19 @@ import org.apache.kerby.asn1.ExplicitField;
  }
  */
 public class PaFxFastReply extends Asn1Choice {
-    private static final int ARMORED_DATA = 0;
+    protected static enum MyEnum implements EnumType {
+        ARMORED_DATA;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(ARMORED_DATA, KrbFastArmoredRep.class)

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index a1b26c7..865074e 100644
--- 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
@@ -19,9 +19,11 @@
  */
 package org.apache.kerby.kerberos.kerb.type.fast;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Choice;
 import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.kerberos.kerb.type.fast.PaFxFastRequest.MyEnum.*;
 
 /**
  PA-FX-FAST-REQUEST ::= CHOICE {
@@ -29,7 +31,19 @@ import org.apache.kerby.asn1.ExplicitField;
  }
  */
 public class PaFxFastRequest extends Asn1Choice {
-    private static final int ARMORED_DATA = 0;
+    protected static enum MyEnum implements EnumType {
+        ARMORED_DATA;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(ARMORED_DATA, KrbFastArmoredReq.class)

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index d363ca7..59ced72 100644
--- 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
@@ -20,6 +20,7 @@
 package org.apache.kerby.kerberos.kerb.type.kdc;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.type.KerberosString;
@@ -30,6 +31,7 @@ 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;
+import static org.apache.kerby.kerberos.kerb.type.kdc.EncKdcRepPart.MyEnum.*;
 
 /**
  EncKDCRepPart   ::= SEQUENCE {
@@ -48,18 +50,30 @@ import org.apache.kerby.kerberos.kerb.type.ticket.TicketFlags;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        KEY,
+        LAST_REQ,
+        NONCE,
+        KEY_EXPIRATION,
+        FLAGS,
+        AUTHTIME,
+        STARTTIME,
+        ENDTIME,
+        RENEW_TILL,
+        SREALM,
+        SNAME,
+        CADDR;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(KEY, EncryptionKey.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 3a5edc6..7e44c96 100644
--- 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
@@ -67,6 +67,11 @@ public enum KdcOption implements EnumType {
         return value;
     }
 
+    @Override
+    public String getName() {
+        return name();
+    }
+
     public static KdcOption fromValue(int value) {
         for (EnumType e : values()) {
             if (e.getValue() == value) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 9d0bd88..9d01c23 100644
--- 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
@@ -20,6 +20,7 @@
 package org.apache.kerby.kerberos.kerb.type.kdc;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.type.KerberosString;
@@ -29,6 +30,7 @@ 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;
+import static org.apache.kerby.kerberos.kerb.type.kdc.KdcRep.MyEnum.*;
 
 /**
  KDC-REP         ::= SEQUENCE {
@@ -45,11 +47,25 @@ import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        PVNO,
+        MSG_TYPE,
+        PADATA,
+        CREALM,
+        CNAME,
+        TICKET,
+        ENC_PART;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(PVNO, Asn1Integer.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 98b2d80..cb1a13e 100644
--- 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
@@ -20,12 +20,14 @@
 package org.apache.kerby.kerberos.kerb.type.kdc;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.kdc.KdcReq.MyEnum.*;
 
 /**
  KDC-REQ         ::= SEQUENCE {
@@ -38,8 +40,22 @@ import org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry;
  }
  */
 public class KdcReq extends KrbMessage {
-    private static final int PADATA = 2;
-    private static final int REQ_BODY = 3;
+    protected static enum MyEnum implements EnumType {
+        PVNO,
+        MSG_TYPE,
+        PADATA,
+        REQ_BODY;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(PVNO, 1, Asn1Integer.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index f7a23c1..f8fda13 100644
--- 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
@@ -20,6 +20,7 @@
 package org.apache.kerby.kerberos.kerb.type.kdc;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.type.KerberosString;
@@ -32,6 +33,7 @@ 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 static org.apache.kerby.kerberos.kerb.type.kdc.KdcReqBody.MyEnum.*;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -60,18 +62,30 @@ import java.util.List;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        KDC_OPTIONS,
+        CNAME,
+        REALM,
+        SNAME,
+        FROM,
+        TILL,
+        RTIME,
+        NONCE,
+        ETYPE,
+        ADDRESSES,
+        ENC_AUTHORIZATION_DATA,
+        ADDITIONAL_TICKETS;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(KDC_OPTIONS, KdcOptions.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 83b390e..0594bd2 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.pa;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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 static org.apache.kerby.kerberos.kerb.type.pa.PaAuthenticationSetElem.MyEnum.*;
 
 /**
  PA-AUTHENTICATION-SET-ELEM ::= SEQUENCE {
@@ -34,9 +36,21 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        PA_TYPE,
+        PA_HINT,
+        PA_VALUE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(PA_TYPE, Asn1Integer.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index ea2f131..1cf75ec 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.pa;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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 static org.apache.kerby.kerberos.kerb.type.pa.PaDataEntry.MyEnum.*;
 
 /**
  PA-DATA         ::= SEQUENCE {
@@ -33,8 +35,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 public class PaDataEntry extends KrbSequenceType {
-    private static final int PADATA_TYPE = 0;
-    private static final int PADATA_VALUE = 1;
+    protected static enum MyEnum implements EnumType {
+        PADATA_TYPE,
+        PADATA_VALUE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(PADATA_TYPE, 1, Asn1Integer.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 44cb2c5..06e0db2 100644
--- 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
@@ -78,6 +78,11 @@ public enum PaDataType implements EnumType {
         return value;
     }
 
+    @Override
+    public String getName() {
+        return name();
+    }
+
     public static PaDataType fromValue(Integer value) {
         if (value != null) {
             for (EnumType e : values()) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 4ffff7c..b7cf263 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.pa;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.PaEncTsEnc.MyEnum.*;
 
 /**
  PA-ENC-TS-ENC           ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 public class PaEncTsEnc extends KrbSequenceType {
-    private static final int PATIMESTAMP = 0;
-    private static final int PAUSEC = 1;
+    protected static enum MyEnum implements EnumType {
+        PATIMESTAMP,
+        PAUSEC;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(PATIMESTAMP, 0, KerberosTime.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 900d2d2..6e3da3d 100644
--- 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
@@ -20,6 +20,7 @@
 package org.apache.kerby.kerberos.kerb.type.pa.otp;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 import org.apache.kerby.asn1.type.Asn1Utf8String;
@@ -27,6 +28,7 @@ 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.otp.OtpTokenInfo.MyEnum.*;
 
 /**
  OTP-TOKENINFO ::= SEQUENCE {
@@ -42,15 +44,27 @@ import org.apache.kerby.kerberos.kerb.type.pa.pkinit.AlgorithmIdentifiers;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        FLAGS,
+        OTP_VENDOR,
+        OTP_CHALLENGE,
+        OTP_LENGTH,
+        OTP_FORMAT,
+        OTP_TOKEN_ID,
+        OTP_ALG_ID,
+        SUPPORTED_HASH_ALG,
+        ITERATION_COUNT;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(FLAGS, Asn1OctetString.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index cbf245c..f5e58f6 100644
--- 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
@@ -20,11 +20,13 @@
 package org.apache.kerby.kerberos.kerb.type.pa.otp;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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 static org.apache.kerby.kerberos.kerb.type.pa.otp.PaOtpChallenge.MyEnum.*;
 
 /**
  PA-OTP-CHALLENGE ::= SEQUENCE {
@@ -36,11 +38,23 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        NONCE,
+        OTP_SERVICE,
+        OTP_TOKEN_INFO,
+        SALT,
+        S2KPARAMS;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(NONCE, Asn1OctetString.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index c387674..60e4f65 100644
--- 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
@@ -20,9 +20,11 @@
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
 import org.apache.kerby.x509.type.SubjectPublicKeyInfo;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.AuthPack.MyEnum.*;
 
 /**
  AuthPack ::= SEQUENCE {
@@ -33,10 +35,22 @@ import org.apache.kerby.x509.type.SubjectPublicKeyInfo;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        PK_AUTHENTICATOR,
+        CLIENT_PUBLIC_VALUE,
+        SUPPORTED_CMS_TYPES,
+        CLIENT_DH_NONCE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(PK_AUTHENTICATOR, PkAuthenticator.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 1ca5697..abb0d57 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.DHRepInfo.MyEnum.*;
 
 /**
  DHRepInfo ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 public class DHRepInfo extends KrbSequenceType {
-    private static final int DH_SIGNED_DATA = 0;
-    private static final int SERVER_DH_NONCE = 1;
+    protected static enum MyEnum implements EnumType {
+        DH_SIGNED_DATA,
+        SERVER_DH_NONCE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ImplicitField(DH_SIGNED_DATA, Asn1OctetString.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index d686773..27f84e9 100644
--- 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
@@ -20,9 +20,11 @@
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1OctetString;
 import org.apache.kerby.asn1.ImplicitField;
 import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.ExternalPrincipalIdentifier.MyEnum.*;
 
 /**
  ExternalPrincipalIdentifier ::= SEQUENCE {
@@ -32,9 +34,21 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        SUBJECT_NAME,
+        ISSUER_AND_SERIAL_NUMBER,
+        SUBJECT_KEY_IDENTIFIER;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ImplicitField(SUBJECT_NAME, Asn1OctetString.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 7437f8d..f3669eb 100644
--- 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
@@ -19,12 +19,14 @@
  */
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.KdcDHKeyInfo.MyEnum.*;
 
 /**
  KDCDHKeyInfo ::= SEQUENCE {
@@ -34,9 +36,21 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        SUBJECT_PUBLICK_KEY,
+        NONCE,
+        DH_KEY_EXPIRATION;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(SUBJECT_PUBLICK_KEY, Asn1BitString.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 4f131a4..81cde21 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.Krb5PrincipalName.MyEnum.*;
 
 /**
  KRB5PrincipalName ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.base.Realm;
  }
  */
 public class Krb5PrincipalName extends KrbSequenceType {
-    private static final int REALM = 0;
-    private static final int PRINCIPAL_NAME = 1;
+    protected static enum MyEnum implements EnumType {
+        REALM,
+        PRINCIPAL_NAME;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(REALM, Realm.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 204b612..3d3ed3c 100644
--- 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
@@ -19,11 +19,13 @@
  */
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.PaPkAsRep.MyEnum.*;
 
 /**
  PA-PK-AS-REP ::= CHOICE {
@@ -32,8 +34,20 @@ import org.apache.kerby.asn1.ImplicitField;
  }
  */
 public class PaPkAsRep extends Asn1Choice {
-    private static final int DH_INFO = 0;
-    private static final int ENCKEY_PACK = 1;
+    protected static enum MyEnum implements EnumType {
+        DH_INFO,
+        ENCKEY_PACK;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(DH_INFO, DHRepInfo.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 1d59112..ed6ebac 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.PaPkAsReq.MyEnum.*;
 
 /**
  PA-PK-AS-REQ ::= SEQUENCE {
@@ -33,9 +35,21 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        SIGNED_AUTH_PACK,
+        TRUSTED_CERTIFIERS,
+        KDC_PKID;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ImplicitField(SIGNED_AUTH_PACK, Asn1OctetString.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 4549552..9f5b8b1 100644
--- 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
@@ -20,11 +20,13 @@
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.PkAuthenticator.MyEnum.*;
 
 /**
  PKAuthenticator ::= SEQUENCE {
@@ -42,10 +44,22 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 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;
+    protected static enum MyEnum implements EnumType {
+        CUSEC,
+        CTIME,
+        NONCE,
+        PA_CHECKSUM;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(CUSEC, Asn1Integer.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 8baa470..f219c47 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.pa.pkinit;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.pkinit.ReplyKeyPack.MyEnum.*;
 
 /**
  ReplyKeyPack ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
  }
  */
 public class ReplyKeyPack extends KrbSequenceType {
-    private static final int REPLY_KEY = 0;
-    private static final int AS_CHECKSUM = 1;
+    protected static enum MyEnum implements EnumType {
+        REPLY_KEY,
+        AS_CHECKSUM;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(REPLY_KEY, EncryptionKey.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 77bd369..ff94b95 100644
--- 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
@@ -20,8 +20,10 @@
 package org.apache.kerby.kerberos.kerb.type.pa.token;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import static org.apache.kerby.kerberos.kerb.type.pa.token.PaTokenChallenge.MyEnum.*;
 
 /**
  PA-TOKEN-CHALLENGE ::= SEQUENCE {
@@ -29,7 +31,19 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
 */
 public class PaTokenChallenge extends KrbSequenceType {
-    private static final int TOKENINFOS = 0;
+    protected static enum MyEnum implements EnumType {
+        TOKENINFOS;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(TOKENINFOS, TokenInfos.class)

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 0b99fe2..9d5d730 100644
--- 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
@@ -20,9 +20,11 @@
 package org.apache.kerby.kerberos.kerb.type.pa.token;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
 import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
+import static org.apache.kerby.kerberos.kerb.type.pa.token.PaTokenRequest.MyEnum.*;
 
 /**
  PA-TOKEN-REQUEST ::= SEQUENCE {
@@ -31,8 +33,20 @@ import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
  }
 */
 public class PaTokenRequest extends KrbSequenceType {
-    private static final int TOKEN_INFO = 0;
-    private static final int TOKEN = 1;
+    protected static enum MyEnum implements EnumType {
+        TOKEN_INFO,
+        TOKEN;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(TOKEN_INFO, TokenInfo.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 12d8ea6..a4f2211 100644
--- 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
@@ -39,6 +39,11 @@ public enum TokenFlag implements EnumType {
         return value;
     }
 
+    @Override
+    public String getName() {
+        return name();
+    }
+
     public static TokenFlag fromValue(int value) {
         for (EnumType e : values()) {
             if (e.getValue() == value) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 0acc254..1d4173c 100644
--- 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.kerberos.kerb.type.pa.token;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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;
+import static org.apache.kerby.kerberos.kerb.type.pa.token.TokenInfo.MyEnum.*;
 
 /**
  TokenInfo ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
  }
  */
 public class TokenInfo extends KrbSequenceType {
-    private static final int FLAGS = 0;
-    private static final int TOKEN_VENDOR = 1;
+    protected static enum MyEnum implements EnumType {
+        FLAGS,
+        TOKEN_VENDOR;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(FLAGS, Asn1OctetString.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 40c4473..16b56d0 100644
--- 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
@@ -20,6 +20,7 @@
 package org.apache.kerby.kerberos.kerb.type.ticket;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.type.KerberosString;
 import org.apache.kerby.kerberos.kerb.type.KerberosTime;
@@ -29,6 +30,7 @@ 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;
+import static org.apache.kerby.kerberos.kerb.type.ticket.EncTicketPart.MyEnum.*;
 
 /**
  -- Encrypted part of ticket
@@ -49,17 +51,29 @@ import org.apache.kerby.kerberos.kerb.type.base.TransitedEncoding;
 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;
+    protected static enum MyEnum implements EnumType {
+        FLAGS,
+        KEY,
+        CREALM,
+        CNAME,
+        TRANSITED,
+        AUTHTIME,
+        STARTTIME,
+        ENDTIME,
+        RENEW_TILL,
+        CADDR,
+        AUTHORIZATION_DATA;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(FLAGS, 0, TicketFlags.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 1855e37..bf6a65c 100644
--- 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
@@ -20,6 +20,7 @@
 package org.apache.kerby.kerberos.kerb.type.ticket;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.ExplicitField;
 import org.apache.kerby.kerberos.kerb.KrbConstant;
@@ -27,6 +28,7 @@ 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;
+import static org.apache.kerby.kerberos.kerb.type.ticket.Ticket.MyEnum.*;
 
 /**
  Ticket          ::= [APPLICATION 1] SEQUENCE {
@@ -40,10 +42,22 @@ 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;
+    protected static enum MyEnum implements EnumType {
+        TKT_VNO,
+        REALM,
+        SNAME,
+        ENC_PART;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new ExplicitField(TKT_VNO, 0, Asn1Integer.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 48dd355..942af84 100644
--- 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
@@ -50,6 +50,11 @@ public enum TicketFlag implements EnumType {
         return value;
     }
 
+    @Override
+    public String getName() {
+        return name();
+    }
+
     public static TicketFlag fromValue(int value) {
         for (EnumType e : values()) {
             if (e.getValue() == value) {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 1eabefe..cdc3a27 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
@@ -20,9 +20,11 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x509.type.AttributeValues;
+import static org.apache.kerby.cms.type.Attribute.MyEnum.*;
 
 /**
  * Ref. RFC 5652
@@ -36,8 +38,20 @@ import org.apache.kerby.x509.type.AttributeValues;
  * </pre>
  */
 public class Attribute extends Asn1SequenceType {
-    private static final int ATTR_TYPE = 0;
-    private static final int ATTR_VALUES = 1;
+    protected static enum MyEnum implements EnumType {
+        ATTR_TYPE,
+        ATTR_VALUES;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
         new Asn1FieldInfo(ATTR_TYPE, Asn1ObjectIdentifier.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 e1796e9..f0a5e39 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
@@ -19,6 +19,7 @@
  */
 package org.apache.kerby.cms.type;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1BitString;
 import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.type.Asn1Integer;
@@ -29,6 +30,7 @@ import org.apache.kerby.x509.type.AttCertValidityPeriod;
 import org.apache.kerby.x509.type.Attributes;
 import org.apache.kerby.x509.type.CertificateSerialNumber;
 import org.apache.kerby.x509.type.Extensions;
+import static org.apache.kerby.cms.type.AttributeCertificateInfoV1.MyEnum.*;
 
 /**
  * AttributeCertificateInfoV1 ::= SEQUENCE {
@@ -46,16 +48,27 @@ import org.apache.kerby.x509.type.Extensions;
  * AttCertVersionV1 ::= INTEGER { v1(0) }
  */
 public class AttributeCertificateInfoV1 extends Asn1SequenceType {
-
-    private static final int VERSION = 0;
-    private static final int SUBJECT = 1;
-    private static final int ISSUER = 2;
-    private static final int SIGNATURE = 3;
-    private static final int SERIAL_NUMBER = 4;
-    private static final int ATTR_CERT_VALIDITY_PERIOD = 5;
-    private static final int ATTRIBUTES = 6;
-    private static final int ISSUER_UNIQUE_ID = 7;
-    private static final int EXTENSIONS = 8;
+    protected static enum MyEnum implements EnumType {
+        VERSION,
+        SUBJECT,
+        ISSUER,
+        SIGNATURE,
+        SERIAL_NUMBER,
+        ATTR_CERT_VALIDITY_PERIOD,
+        ATTRIBUTES,
+        ISSUER_UNIQUE_ID,
+        EXTENSIONS;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(VERSION, Asn1Integer.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 c45a76f..a1aa414 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
@@ -19,11 +19,13 @@
  */
 package org.apache.kerby.cms.type;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1BitString;
 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;
+import static org.apache.kerby.cms.type.AttributeCertificateV1.MyEnum.*;
 
 /**
  * AttributeCertificateV1 ::= SEQUENCE {
@@ -33,9 +35,21 @@ import org.apache.kerby.x509.type.AttributeCertificateInfo;
  * }
  */
 public class AttributeCertificateV1 extends Asn1SequenceType {
-    private static final int ACI_INFO = 0;
-    private static final int SIGNATURE_ALGORITHM = 1;
-    private static final int SIGNATURE = 2;
+    protected static enum MyEnum implements EnumType {
+        ACI_INFO,
+        SIGNATURE_ALGORITHM,
+        SIGNATURE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(ACI_INFO, AttributeCertificateInfoV1.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 46e625b..fd15ee7 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
@@ -19,11 +19,13 @@
  */
 package org.apache.kerby.cms.type;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1BitString;
 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;
+import static org.apache.kerby.cms.type.Certificate.MyEnum.*;
 
 /**
  * <pre>
@@ -35,10 +37,21 @@ import org.apache.kerby.x509.type.TBSCertificate;
  * </pre>
  */
 public class Certificate extends Asn1SequenceType {
+    protected static enum MyEnum implements EnumType {
+        TBS_CERTIFICATE,
+        SIGNATURE_ALGORITHM,
+        SIGNATURE;
 
-    private static final int TBS_CERTIFICATE = 0;
-    private static final int SIGNATURE_ALGORITHM = 1;
-    private static final int SIGNATURE = 2;
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(TBS_CERTIFICATE, TBSCertificate.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 598c896..91b1930 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
@@ -19,9 +19,11 @@
  */
 package org.apache.kerby.cms.type;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Choice;
 import org.apache.kerby.asn1.Asn1FieldInfo;
 import org.apache.kerby.asn1.ImplicitField;
+import static org.apache.kerby.cms.type.CertificateChoices.MyEnum.*;
 
 /**
  * CertificateChoices ::= CHOICE {
@@ -32,12 +34,23 @@ import org.apache.kerby.asn1.ImplicitField;
  *   other [3] IMPLICIT OtherCertificateFormat }
  */
 public class CertificateChoices extends Asn1Choice {
+    protected static enum MyEnum implements EnumType {
+        CERTIFICATE,
+        EXTENDED_CERTIFICATE,
+        V1_ATTR_CERT,
+        V2_ATTR_CERT,
+        OTHER;
 
-    private static final int CERTIFICATE = 0;
-    private static final int EXTENDED_CERTIFICATE = 1;
-    private static final int V1_ATTR_CERT = 2;
-    private static final int V2_ATTR_CERT = 3;
-    private static final int OTHER = 4;
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(CERTIFICATE, Certificate.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 8502ca6..c7dd0dd 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
@@ -19,11 +19,13 @@
  */
 package org.apache.kerby.cms.type;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1BitString;
 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;
+import static org.apache.kerby.cms.type.CertificateList.MyEnum.*;
 
 /**
  * Ref. RFC-2459
@@ -37,9 +39,21 @@ import org.apache.kerby.x509.type.TBSCertList;
  * </pre>
  */
 public class CertificateList extends Asn1SequenceType {
-    private static final int TBS_CERT_LIST = 0;
-    private static final int SIGNATURE_ALGORITHMS = 1;
-    private static final int SIGNATURE_VALUE = 2;
+    protected static enum MyEnum implements EnumType {
+        TBS_CERT_LIST,
+        SIGNATURE_ALGORITHMS,
+        SIGNATURE_VALUE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(TBS_CERT_LIST, TBSCertList.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CmsVersion.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CmsVersion.java b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CmsVersion.java
index 9f120ad..e1f1f8f 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CmsVersion.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/cms/type/CmsVersion.java
@@ -39,6 +39,11 @@ enum CmsVersionEnum implements EnumType {
     public int getValue() {
         return ordinal();
     }
+
+    @Override
+    public String getName() {
+        return name();
+    }
 }
 
 public class CmsVersion extends Asn1Integer {

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 9f6f6cd..1ba4a78 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
@@ -20,8 +20,10 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x509.type.AlgorithmIdentifier;
+import static org.apache.kerby.cms.type.CompressedData.MyEnum.*;
 
 /** 
  * Ref. RFC 3274
@@ -35,10 +37,21 @@ import org.apache.kerby.x509.type.AlgorithmIdentifier;
  * </pre>
  */
 public class CompressedData extends Asn1SequenceType {
+    protected static enum MyEnum implements EnumType {
+        VERSION,
+        COMPRESSION_ALGORITHM,
+        ENCAP_CONTENT_INFO;
 
-    private static final int VERSION = 0;
-    private static final int COMPRESSION_ALGORITHM = 1;
-    private static final int ENCAP_CONTENT_INFO = 2;
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(VERSION, CmsVersion.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 19c17ea..a33d0e3 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
@@ -19,12 +19,14 @@
  */
 package org.apache.kerby.cms.type;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Any;
 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.ExplicitField;
+import static org.apache.kerby.cms.type.ContentInfo.MyEnum.*;
 
 /**
  * Ref. RFC 5652
@@ -39,8 +41,20 @@ import org.apache.kerby.asn1.ExplicitField;
  * </pre>
  */
 public class ContentInfo extends Asn1SequenceType {
-    private static final int CONTENT_TYPE = 0;
-    private static final int CONTENT = 1;
+    protected static enum MyEnum implements EnumType {
+        CONTENT_TYPE,
+        CONTENT;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
         new Asn1FieldInfo(CONTENT_TYPE, Asn1ObjectIdentifier.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 24fa2ab..9744c67 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
@@ -20,10 +20,12 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 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.ExplicitField;
+import static org.apache.kerby.cms.type.EncapsulatedContentInfo.MyEnum.*;
 
 /**
  * EncapsulatedContentInfo ::= SEQUENCE {
@@ -34,8 +36,20 @@ import org.apache.kerby.asn1.ExplicitField;
  * ContentType ::= OBJECT IDENTIFIER
  */
 public class EncapsulatedContentInfo extends Asn1SequenceType {
-    private static final int CONTENT_TYPE = 0;
-    private static final int CONTENT = 1;
+    protected static enum MyEnum implements EnumType {
+        CONTENT_TYPE,
+        CONTENT;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
             new Asn1FieldInfo(CONTENT_TYPE, Asn1ObjectIdentifier.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 7ab4681..bc37a57 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
@@ -20,7 +20,9 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
+import static org.apache.kerby.cms.type.ExtendedCertificate.MyEnum.*;
 
 /**
  * ExtendedCertificate ::= SEQUENCE {
@@ -30,9 +32,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
  * }
  */
 public class ExtendedCertificate extends Asn1SequenceType {
-    private static final int EXTENDED_CERTIFICATE_INFO = 0;
-    private static final int SIGNATURE_ALGORITHMS = 1;
-    private static final int SIGNATURE = 2;
+    protected static enum MyEnum implements EnumType {
+        EXTENDED_CERTIFICATE_INFO,
+        SIGNATURE_ALGORITHMS,
+        SIGNATURE;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(EXTENDED_CERTIFICATE_INFO, ExtendedCertificateInfo.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 a4803a4..130db3a 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
@@ -20,7 +20,9 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
+import static org.apache.kerby.cms.type.ExtendedCertificateInfo.MyEnum.*;
 
 /**
  * ExtendedCertificateInfo ::= SEQUENCE {
@@ -30,9 +32,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
  * }
  */
 public class ExtendedCertificateInfo extends Asn1SequenceType {
-    private static final int CMS_VERSION = 0;
-    private static final int CERTIFICATE = 1;
-    private static final int ATTRIBUTES = 2;
+    protected static enum MyEnum implements EnumType {
+        CMS_VERSION,
+        CERTIFICATE,
+        ATTRIBUTES;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(CMS_VERSION, CmsVersion.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 2416d3e..07ea824 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
@@ -20,9 +20,11 @@
 package org.apache.kerby.cms.type;
 
 import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Integer;
 import org.apache.kerby.asn1.type.Asn1SequenceType;
 import org.apache.kerby.x500.type.Name;
+import static org.apache.kerby.cms.type.IssuerAndSerialNumber.MyEnum.*;
 
 /**
  * Ref. RFC5652
@@ -36,8 +38,20 @@ import org.apache.kerby.x500.type.Name;
  * </pre>
  */
 public class IssuerAndSerialNumber extends Asn1SequenceType {
-    private static final int ISSUER = 0;
-    private static final int SERIAL_NUMBER = 1;
+    protected static enum MyEnum implements EnumType {
+        ISSUER,
+        SERIAL_NUMBER;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
         new Asn1FieldInfo(ISSUER, Name.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 74f2d7c..423b95c 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
@@ -19,11 +19,13 @@
  */
 package org.apache.kerby.cms.type;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Any;
 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 static org.apache.kerby.cms.type.OtherCertificateFormat.MyEnum.*;
 
 /**
  * OtherCertificateFormat ::= SEQUENCE {
@@ -32,9 +34,20 @@ import org.apache.kerby.asn1.type.Asn1Type;
  * }
  */
 public class OtherCertificateFormat extends Asn1SequenceType {
+    protected static enum MyEnum implements EnumType {
+        OTHER_CERT_FORMAT,
+        OTHER_CERT;
 
-    private static final int OTHER_CERT_FORMAT = 0;
-    private static final int OTHER_CERT = 1;
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(OTHER_CERT_FORMAT, Asn1ObjectIdentifier.class),

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 e320a09..eb19db8 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
@@ -19,11 +19,13 @@
  */
 package org.apache.kerby.cms.type;
 
+import org.apache.kerby.asn1.EnumType;
 import org.apache.kerby.asn1.type.Asn1Any;
 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 static org.apache.kerby.cms.type.OtherRevocationInfoFormat.MyEnum.*;
 
 /**
  * OtherRevocationInfoFormat ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.asn1.type.Asn1Type;
  * }
  */
 public class OtherRevocationInfoFormat extends Asn1SequenceType {
-    private static final int OTHER_REV_INFO_FORMAT = 0;
-    private static final int OTHER_REV_INFO = 1;
+    protected static enum MyEnum implements EnumType {
+        OTHER_REV_INFO_FORMAT,
+        OTHER_REV_INFO;
+
+        @Override
+        public int getValue() {
+            return ordinal();
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+    }
 
     static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
             new Asn1FieldInfo(OTHER_REV_INFO_FORMAT, Asn1ObjectIdentifier.class),