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/07 04:33:31 UTC
[01/26] directory-kerby git commit: Consolidate the relevant
hex-bytes converting utilities for more tests
Repository: directory-kerby
Updated Branches:
refs/heads/pkinit-support 38b2aa3c9 -> 1d9567ec2
Consolidate the relevant hex-bytes converting utilities for more tests
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/ca1e8c10
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/ca1e8c10
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/ca1e8c10
Branch: refs/heads/pkinit-support
Commit: ca1e8c10e12fc3b614a771d121d16acc3b09fdbb
Parents: 78f67dc
Author: Kai Zheng <ka...@intel.com>
Authored: Mon Nov 30 15:09:12 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Mon Nov 30 15:09:12 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kerby/asn1/HexUtil.java | 113 ++++++++++++++
.../org/apache/kerby/asn1/TestAsn1Boolean.java | 4 +-
.../apache/kerby/asn1/TestAsn1Collection.java | 4 +-
.../org/apache/kerby/asn1/TestAsn1Integer.java | 4 +-
.../kerby/asn1/TestAsn1ObjectIdentifier.java | 4 +-
.../org/apache/kerby/asn1/TestAsn1UtcTime.java | 4 +-
.../apache/kerby/asn1/TestPersonnelRecord.java | 20 +--
.../test/java/org/apache/kerby/asn1/Util.java | 153 -------------------
8 files changed, 133 insertions(+), 173 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ca1e8c10/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
new file mode 100644
index 0000000..a2a167f
--- /dev/null
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
@@ -0,0 +1,113 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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;
+
+/**
+ * This is only for test, be careful when use in production codes.
+ */
+public class HexUtil {
+
+ static final String HEX_CHARS_STR = "0123456789ABCDEF";
+ static final char[] HEX_CHARS = HEX_CHARS_STR.toCharArray();
+
+ /**
+ * Convert bytes into friendly format as:
+ * 0x02 02 00 80
+ */
+ public static String bytesToHexFriendly(byte[] bytes) {
+ int len = bytes.length * 2;
+ len += bytes.length; // for ' ' appended for each char
+ len += 2; // for '0x' prefix
+ char[] hexChars = new char[len];
+ hexChars[0] = '0';
+ hexChars[1] = 'x';
+ for (int j = 0; j < bytes.length; j++) {
+ int v = bytes[j] & 0xFF;
+ hexChars[j * 3 + 2] = HEX_CHARS[v >>> 4];
+ hexChars[j * 3 + 3] = HEX_CHARS[v & 0x0F];
+ hexChars[j * 3 + 4] = ' ';
+ }
+
+ return new String(hexChars);
+ }
+
+ /**
+ * Convert friendly hex string like follows into byte array
+ * 0x02 02 00 80
+ */
+ public static byte[] hex2bytesFriendly(String hexString) {
+ hexString = hexString.toUpperCase();
+ String hexStr = hexString;
+ if (hexString.startsWith("0X")) {
+ hexStr = hexString.substring(2);
+ }
+ String[] hexParts = hexStr.split(" ");
+
+ byte[] bytes = new byte[hexParts.length];
+ char[] hexPart;
+ for (int i = 0; i < hexParts.length; ++i) {
+ hexPart = hexParts[i].toCharArray();
+ if (hexPart.length != 2) {
+ throw new IllegalArgumentException("Invalid hex string to convert");
+ }
+ bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexPart[0]) << 4) +
+ HEX_CHARS_STR.indexOf(hexPart[1]));
+ }
+
+ return bytes;
+ }
+
+ /**
+ * Convert bytes into format as:
+ * 02020080
+ * @param bytes The bytes
+ * @return The hex string
+ */
+ public static String bytesToHex(byte[] bytes) {
+ int len = bytes.length * 2;
+ char[] hexChars = new char[len];
+ for (int j = 0; j < bytes.length; j++) {
+ int v = bytes[j] & 0xFF;
+ hexChars[j * 2] = HEX_CHARS[v >>> 4];
+ hexChars[j * 2 + 1] = HEX_CHARS[v & 0x0F];
+ }
+
+ return new String(hexChars);
+ }
+
+ /**
+ * Convert hex string like follows into byte array
+ * 02020080
+ * @param hexString The hex string
+ * @return The bytes
+ */
+ public static byte[] hex2bytes(String hexString) {
+ hexString = hexString.toUpperCase();
+ int len = hexString.length() / 2;
+ byte[] bytes = new byte[len];
+ char[] hexChars = hexString.toCharArray();
+ for (int i = 0, j = 0; i < len; ++i) {
+ bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexChars[j++]) << 4) +
+ HEX_CHARS_STR.indexOf(hexChars[j++]));
+ }
+
+ return bytes;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ca1e8c10/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
index 177ddef..227579c 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
@@ -36,7 +36,7 @@ public class TestAsn1Boolean {
private void testEncodingWith(Boolean value, String expectedEncoding,
boolean isDer) {
- byte[] expected = Util.hex2bytes(expectedEncoding);
+ byte[] expected = HexUtil.hex2bytesFriendly(expectedEncoding);
Asn1Boolean aValue = new Asn1Boolean(value);
if (isDer) {
aValue.useDER();
@@ -63,7 +63,7 @@ public class TestAsn1Boolean {
} else {
decoded.useBER();
}
- decoded.decode(Util.hex2bytes(content));
+ decoded.decode(HexUtil.hex2bytesFriendly(content));
assertThat(decoded.getValue()).isEqualTo(expectedValue);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ca1e8c10/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
index cfb5e29..d7210fe 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
@@ -33,8 +33,8 @@ public class TestAsn1Collection {
static final String TEST_STR = "Jones";
static final Boolean TEST_BOOL = true;
static final byte[] EXPECTED_BYTES = new byte[] {(byte) 0x30, (byte) 0x0A,
- (byte) 0x16, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E, (byte) 0x65, (byte) 0x73,
- (byte) 0x01, (byte) 0x01, (byte) 0xFF
+ (byte) 0x16, (byte) 0x05, (byte) 0x4A, (byte) 0x6F, (byte) 0x6E,
+ (byte) 0x65, (byte) 0x73, (byte) 0x01, (byte) 0x01, (byte) 0xFF
};
@Test
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ca1e8c10/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
index 8eb4b4d..1e33bf3 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
@@ -42,7 +42,7 @@ public class TestAsn1Integer {
}
private void testEncodingWith(int value, String expectedEncoding) {
- byte[] expected = Util.hex2bytes(expectedEncoding);
+ byte[] expected = HexUtil.hex2bytesFriendly(expectedEncoding);
Asn1Integer aValue = new Asn1Integer(value);
aValue.useDER();
byte[] encodingBytes = aValue.encode();
@@ -65,7 +65,7 @@ public class TestAsn1Integer {
private void testDecodingWith(int expectedValue, String content) throws IOException {
Asn1Integer decoded = new Asn1Integer();
decoded.useDER();
- decoded.decode(Util.hex2bytes(content));
+ decoded.decode(HexUtil.hex2bytesFriendly(content));
assertThat(decoded.getValue().intValue()).isEqualTo(expectedValue);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ca1e8c10/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
index 726c23e..75b8d4e 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
@@ -43,7 +43,7 @@ public class TestAsn1ObjectIdentifier {
}
private void testEncodingWith(String oid, String expectedEncoding) {
- byte[] expected = Util.hex2bytes(expectedEncoding);
+ byte[] expected = HexUtil.hex2bytesFriendly(expectedEncoding);
Asn1ObjectIdentifier aValue = new Asn1ObjectIdentifier(oid);
aValue.useDER();
byte[] encodingBytes = aValue.encode();
@@ -59,7 +59,7 @@ public class TestAsn1ObjectIdentifier {
private void testDecodingWith(String expectedValue, String content) throws IOException {
Asn1ObjectIdentifier decoded = new Asn1ObjectIdentifier();
decoded.useDER();
- decoded.decode(Util.hex2bytes(content));
+ decoded.decode(HexUtil.hex2bytesFriendly(content));
assertThat(decoded.getValue()).isEqualTo(expectedValue);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ca1e8c10/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
index ebc1509..efef9ae 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
@@ -46,7 +46,7 @@ public class TestAsn1UtcTime {
}
private void testEncodingWith(Date value, String expectedEncoding) {
- byte[] expected = Util.hex2bytes(expectedEncoding);
+ byte[] expected = HexUtil.hex2bytesFriendly(expectedEncoding);
Asn1UtcTime aValue = new Asn1UtcTime(value);
aValue.useDER();
byte[] encodingBytes = aValue.encode();
@@ -65,7 +65,7 @@ public class TestAsn1UtcTime {
private void testDecodingWith(Date expectedValue, String content) throws IOException {
Asn1UtcTime decoded = new Asn1UtcTime();
decoded.useDER();
- decoded.decode(Util.hex2bytes(content));
+ decoded.decode(HexUtil.hex2bytesFriendly(content));
assertThat(decoded.getValue()).isEqualTo(expectedValue);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ca1e8c10/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
index 21413e8..7f97293 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
@@ -39,30 +39,30 @@ public class TestPersonnelRecord {
if (verbose) {
System.out.println("Name:");
- System.out.println(Util.bytesToHex(pr.getName().encode()));
+ System.out.println(HexUtil.bytesToHexFriendly(pr.getName().encode()));
/*
System.out.println("Title:");
- System.out.println(Util.bytesToHex(pr.getFieldAs(1, Asn1VisibleString.class).encode()));
+ System.out.println(HexUtil.bytesToHexFriendly(pr.getFieldAs(1, Asn1VisibleString.class).encode()));
System.out.println("EmployeeNumber:");
- System.out.println(Util.bytesToHex(pr.getFieldAs(2, EmployeeNumber.class).encode()));
+ System.out.println(HexUtil.bytesToHexFriendly(pr.getFieldAs(2, EmployeeNumber.class).encode()));
*/
System.out.println("DateOfHire:");
- System.out.println(Util.bytesToHex(pr.getDateOfHire().encode()));
+ System.out.println(HexUtil.bytesToHexFriendly(pr.getDateOfHire().encode()));
System.out.println("SpouseName:");
- System.out.println(Util.bytesToHex(pr.getNameOfSpouse().encode()));
+ System.out.println(HexUtil.bytesToHexFriendly(pr.getNameOfSpouse().encode()));
System.out.println("Child1:");
- System.out.println(Util.bytesToHex(pr.getChildren().getElements().get(0).encode()));
+ System.out.println(HexUtil.bytesToHexFriendly(pr.getChildren().getElements().get(0).encode()));
System.out.println("Child2:");
- System.out.println(Util.bytesToHex(pr.getChildren().getElements().get(1).encode()));
+ System.out.println(HexUtil.bytesToHexFriendly(pr.getChildren().getElements().get(1).encode()));
System.out.println("Children:");
- System.out.println(Util.bytesToHex(pr.getChildren().encode()));
+ System.out.println(HexUtil.bytesToHexFriendly(pr.getChildren().encode()));
}
byte[] data = TestData.createSammplePersonnelEncodingData();
@@ -70,10 +70,10 @@ public class TestPersonnelRecord {
if (verbose) {
System.out.println("ExpectedData:");
- System.out.println(Util.bytesToHex(data));
+ System.out.println(HexUtil.bytesToHexFriendly(data));
System.out.println("Encoded:");
- System.out.println(Util.bytesToHex(encoded));
+ System.out.println(HexUtil.bytesToHexFriendly(encoded));
}
assertThat(encoded).isEqualTo(data);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/ca1e8c10/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
deleted file mode 100644
index 679a23b..0000000
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/Util.java
+++ /dev/null
@@ -1,153 +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;
-
-public class Util {
-
- static final String HEX_CHARS_STR = "0123456789ABCDEF";
- static final char[] HEX_CHARS = HEX_CHARS_STR.toCharArray();
-
- /**
- * Convert bytes into format as:
- * 0x02 02 00 80
- */
- public static String bytesToHex(byte[] bytes) {
- int len = bytes.length * 2;
- len += bytes.length; // for ' ' appended for each char
- len += 2; // for '0x' prefix
- char[] hexChars = new char[len];
- hexChars[0] = '0';
- hexChars[1] = 'x';
- for (int j = 0; j < bytes.length; j++) {
- int v = bytes[j] & 0xFF;
- hexChars[j * 3 + 2] = HEX_CHARS[v >>> 4];
- hexChars[j * 3 + 3] = HEX_CHARS[v & 0x0F];
- hexChars[j * 3 + 4] = ' ';
- }
-
- return new String(hexChars);
- }
-
- /**
- * Convert hex string like follows into byte array
- * 0x02 02 00 80
- */
- public static byte[] hex2bytes(String hexString) {
- if (hexString == null) {
- throw new IllegalArgumentException("Invalid hex string to convert : null");
- }
-
- char[] hexStr = hexString.toCharArray();
-
- if (hexStr.length < 4) {
- throw new IllegalArgumentException("Invalid hex string to convert : length below 4");
- }
-
- if ((hexStr[0] != '0') || ((hexStr[1] != 'x') && (hexStr[1] != 'X'))) {
- throw new IllegalArgumentException("Invalid hex string to convert : not starting with '0x'");
- }
-
- byte[] bytes = new byte[(hexStr.length - 1) / 3];
- int pos = 0;
- boolean high = false;
- boolean prefix = true;
-
- for (char c : hexStr) {
- if (prefix) {
- if ((c == 'x') || (c == 'X')) {
- prefix = false;
- }
-
- continue;
- }
-
- switch (c) {
- case ' ' :
- if (high) {
- // We have had only the high part
- throw new IllegalArgumentException("Invalid hex string to convert");
- }
-
- // A hex pair has been decoded
- pos++;
- high = false;
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (high) {
- bytes[pos] += (byte) (c - '0');
- } else {
- bytes[pos] = (byte) ((c - '0') << 4);
- }
-
- high = !high;
- break;
-
- case 'a' :
- case 'b' :
- case 'c' :
- case 'd' :
- case 'e' :
- case 'f' :
- if (high) {
- bytes[pos] += (byte) (c - 'a' + 10);
- } else {
- bytes[pos] = (byte) ((c - 'a' + 10) << 4);
- }
-
- high = !high;
- break;
-
- case 'A' :
- case 'B' :
- case 'C' :
- case 'D' :
- case 'E' :
- case 'F' :
- if (high) {
- bytes[pos] += (byte) (c - 'A' + 10);
- } else {
- bytes[pos] = (byte) ((c - 'A' + 10) << 4);
- }
-
- high = !high;
- break;
-
- default :
- throw new IllegalArgumentException("Invalid hex string to convert");
- }
- }
-
- if (high) {
- throw new IllegalArgumentException("Invalid hex string to convert");
- }
-
- return bytes;
- }
-}
[25/26] directory-kerby git commit: ASN1. Consolidate utility classes
into the util package
Posted by pl...@apache.org.
ASN1. Consolidate utility classes into the util 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/68c837fa
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/68c837fa
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/68c837fa
Branch: refs/heads/pkinit-support
Commit: 68c837fa6f7566845b01dca368debaa548460242
Parents: 4cb4366
Author: Kai Zheng <ka...@intel.com>
Authored: Sat Dec 5 10:34:44 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sat Dec 5 10:34:44 2015 +0800
----------------------------------------------------------------------
.../main/java/org/apache/kerby/asn1/Asn1.java | 2 +
.../java/org/apache/kerby/asn1/Asn1Reader.java | 111 --
.../java/org/apache/kerby/asn1/Asn1Reader1.java | 47 -
.../java/org/apache/kerby/asn1/Asn1Reader2.java | 62 --
.../java/org/apache/kerby/asn1/Asn1Util.java | 117 --
.../java/org/apache/kerby/asn1/HexUtil.java | 113 --
.../org/apache/kerby/asn1/type/Asn1Object.java | 4 +-
.../apache/kerby/asn1/type/Asn1OctetString.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Simple.java | 2 +-
.../org/apache/kerby/asn1/util/Asn1Reader.java | 114 ++
.../org/apache/kerby/asn1/util/Asn1Reader1.java | 47 +
.../org/apache/kerby/asn1/util/Asn1Reader2.java | 62 ++
.../org/apache/kerby/asn1/util/Asn1Util.java | 119 ++
.../java/org/apache/kerby/asn1/util/Base64.java | 1048 ++++++++++++++++++
.../org/apache/kerby/asn1/util/HexUtil.java | 113 ++
.../java/org/apache/kerby/asn1/util/IOUtil.java | 109 ++
.../java/org/apache/kerby/asn1/util/Utf8.java | 34 +
.../org/apache/kerby/asn1/PersonnelRecord.java | 17 +-
.../org/apache/kerby/asn1/TestAsn1Boolean.java | 1 +
.../org/apache/kerby/asn1/TestAsn1Flags.java | 2 +-
.../org/apache/kerby/asn1/TestAsn1Integer.java | 1 +
.../kerby/asn1/TestAsn1ObjectIdentifier.java | 1 +
.../org/apache/kerby/asn1/TestAsn1UtcTime.java | 1 +
.../apache/kerby/asn1/TestPersonnelRecord.java | 1 +
24 files changed, 1671 insertions(+), 459 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java
index 68698a9..c1f46fc 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java
@@ -21,6 +21,8 @@ package org.apache.kerby.asn1;
import org.apache.kerby.asn1.type.Asn1Item;
import org.apache.kerby.asn1.type.Asn1Type;
+import org.apache.kerby.asn1.util.Asn1Reader1;
+import org.apache.kerby.asn1.util.HexUtil;
import java.io.IOException;
import java.nio.ByteBuffer;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader.java
deleted file mode 100644
index 9ee9819..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader.java
+++ /dev/null
@@ -1,111 +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;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * ASN1 reader from a byte buffer.
- */
-public abstract class Asn1Reader {
- protected ByteBuffer buffer;
-
- public Asn1Reader(ByteBuffer buffer) {
- this.buffer = buffer;
- }
-
- public ByteBuffer getBuffer() {
- return buffer;
- }
-
- public Asn1Header readHeader() throws IOException {
- Tag tag = readTag();
- int valueLength = readLength();
- Asn1Header header = new Asn1Header(tag, valueLength,
- getValueBuffer(valueLength));
- return header;
- }
-
- protected abstract ByteBuffer getValueBuffer(int valueLength);
-
- protected abstract byte readByte() throws IOException;
-
- private Tag readTag() throws IOException {
- int tagFlags = readTagFlags();
- int tagNo = readTagNo(tagFlags);
- return new Tag(tagFlags, tagNo);
- }
-
- private int readTagFlags() throws IOException {
- int tagFlags = readByte() & 0xff;
- return tagFlags;
- }
-
- private int readTagNo(int tagFlags) throws IOException {
- int tagNo = tagFlags & 0x1f;
-
- if (tagNo == 0x1f) {
- tagNo = 0;
-
- int b = 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 = readByte();
- }
-
- tagNo |= b & 0x7f;
- }
-
- return tagNo;
- }
-
- private int readLength() throws IOException {
- int result = readByte() & 0xff;
- if (result == 0x80) {
- return -1; // non-definitive length
- }
-
- if (result > 127) {
- int length = result & 0x7f;
- if (length > 4) {
- throw new IOException("Bad length of more than 4 bytes: " + length);
- }
-
- result = 0;
- int tmp;
- for (int i = 0; i < length; i++) {
- tmp = readByte() & 0xff;
- result = (result << 8) + tmp;
- }
- }
-
- if (result < 0) {
- throw new IOException("Invalid length " + result);
- }
-
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader1.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader1.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader1.java
deleted file mode 100644
index 291756d..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader1.java
+++ /dev/null
@@ -1,47 +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;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * ASN1 reader for stateful reading.
- */
-public final class Asn1Reader1 extends Asn1Reader {
-
- public Asn1Reader1(ByteBuffer buffer) {
- super(buffer);
- }
-
- @Override
- protected byte readByte() throws IOException {
- return buffer.get();
- }
-
- @Override
- protected ByteBuffer getValueBuffer(int valueLength) {
- ByteBuffer result = buffer.duplicate();
- result.limit(buffer.position() + valueLength);
- buffer.position(buffer.position() + valueLength);
-
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader2.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader2.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader2.java
deleted file mode 100644
index 08e3472..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader2.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.asn1;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * ASN1 reader for positional reading.
- */
-public final class Asn1Reader2 extends Asn1Reader {
- private int position;
-
- public Asn1Reader2(ByteBuffer buffer, int position) {
- super(buffer);
- this.position = position;
- }
-
- public Asn1Reader2(ByteBuffer buffer) {
- super(buffer);
- this.position = buffer.position();
- }
-
- public int getPosition() {
- return position;
- }
-
- public void setPosition(int position) {
- this.position = position;
- }
-
- public boolean available() {
- return position < buffer.limit();
- }
-
- @Override
- protected ByteBuffer getValueBuffer(int valueLength) {
- return buffer;
- }
-
- @Override
- protected byte readByte() throws IOException {
- return buffer.get(position++);
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
deleted file mode 100644
index 315cf28..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.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.asn1;
-
-import java.nio.ByteBuffer;
-
-/**
- * The abstract ASN1 object for all the ASN1 types. It provides basic
- * encoding and decoding utilities.
- */
-public final class Asn1Util {
- private Asn1Util() {
-
- }
-
- 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, Tag tag) {
- int flags = tag.tagFlags();
- int tagNo = tag.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 byte[] readAllLeftBytes(ByteBuffer buffer) {
- byte[] result = new byte[buffer.remaining()];
- buffer.get(result);
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/HexUtil.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/HexUtil.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/HexUtil.java
deleted file mode 100644
index b23f960..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/HexUtil.java
+++ /dev/null
@@ -1,113 +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;
-
-/**
- * This is only for test, be careful when use in production codes.
- */
-public class HexUtil {
-
- static final String HEX_CHARS_STR = "0123456789ABCDEF";
- static final char[] HEX_CHARS = HEX_CHARS_STR.toCharArray();
-
- /**
- * Convert bytes into friendly format as:
- * 0x02 02 00 80
- */
- public static String bytesToHexFriendly(byte[] bytes) {
- int len = bytes.length * 2;
- len += bytes.length; // for ' ' appended for each char
- len += 2; // for '0x' prefix
- char[] hexChars = new char[len];
- hexChars[0] = '0';
- hexChars[1] = 'x';
- for (int j = 0; j < bytes.length; j++) {
- int v = bytes[j] & 0xFF;
- hexChars[j * 3 + 2] = HEX_CHARS[v >>> 4];
- hexChars[j * 3 + 3] = HEX_CHARS[v & 0x0F];
- hexChars[j * 3 + 4] = ' ';
- }
-
- return new String(hexChars);
- }
-
- /**
- * Convert friendly hex string like follows into byte array
- * 0x02 02 00 80
- */
- public static byte[] hex2bytesFriendly(String hexString) {
- hexString = hexString.toUpperCase();
- String hexStr = hexString;
- if (hexString.startsWith("0X")) {
- hexStr = hexString.substring(2);
- }
- String[] hexParts = hexStr.split(" ");
-
- byte[] bytes = new byte[hexParts.length];
- char[] hexPart;
- for (int i = 0; i < hexParts.length; ++i) {
- hexPart = hexParts[i].toCharArray();
- if (hexPart.length != 2) {
- throw new IllegalArgumentException("Invalid hex string to convert");
- }
- bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexPart[0]) << 4)
- + HEX_CHARS_STR.indexOf(hexPart[1]));
- }
-
- return bytes;
- }
-
- /**
- * Convert bytes into format as:
- * 02020080
- * @param bytes The bytes
- * @return The hex string
- */
- public static String bytesToHex(byte[] bytes) {
- int len = bytes.length * 2;
- char[] hexChars = new char[len];
- for (int j = 0; j < bytes.length; j++) {
- int v = bytes[j] & 0xFF;
- hexChars[j * 2] = HEX_CHARS[v >>> 4];
- hexChars[j * 2 + 1] = HEX_CHARS[v & 0x0F];
- }
-
- return new String(hexChars);
- }
-
- /**
- * Convert hex string like follows into byte array
- * 02020080
- * @param hexString The hex string
- * @return The bytes
- */
- public static byte[] hex2bytes(String hexString) {
- hexString = hexString.toUpperCase();
- int len = hexString.length() / 2;
- byte[] bytes = new byte[len];
- char[] hexChars = hexString.toCharArray();
- for (int i = 0, j = 0; i < len; ++i) {
- bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexChars[j++]) << 4)
- + HEX_CHARS_STR.indexOf(hexChars[j++]));
- }
-
- return bytes;
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/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
index 70a43a7..b4a5b7b 100644
--- 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
@@ -20,11 +20,11 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1Header;
-import org.apache.kerby.asn1.Asn1Reader1;
-import org.apache.kerby.asn1.Asn1Util;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.TaggingOption;
import org.apache.kerby.asn1.UniversalTag;
+import org.apache.kerby.asn1.util.Asn1Reader1;
+import org.apache.kerby.asn1.util.Asn1Util;
import java.io.IOException;
import java.nio.ByteBuffer;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
index 4511b42..46c9c32 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
@@ -19,8 +19,8 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.Asn1Util;
import org.apache.kerby.asn1.UniversalTag;
+import org.apache.kerby.asn1.util.Asn1Util;
import java.io.IOException;
import java.nio.ByteBuffer;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
index 23e0cb8..4358f65 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.Asn1Util;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.UniversalTag;
+import org.apache.kerby.asn1.util.Asn1Util;
import java.io.IOException;
import java.nio.ByteBuffer;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader.java
new file mode 100644
index 0000000..451e8ff
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader.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.asn1.util;
+
+import org.apache.kerby.asn1.Asn1Header;
+import org.apache.kerby.asn1.Tag;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * ASN1 reader from a byte buffer.
+ */
+public abstract class Asn1Reader {
+ protected ByteBuffer buffer;
+
+ public Asn1Reader(ByteBuffer buffer) {
+ this.buffer = buffer;
+ }
+
+ public ByteBuffer getBuffer() {
+ return buffer;
+ }
+
+ public Asn1Header readHeader() throws IOException {
+ Tag tag = readTag();
+ int valueLength = readLength();
+ Asn1Header header = new Asn1Header(tag, valueLength,
+ getValueBuffer(valueLength));
+ return header;
+ }
+
+ protected abstract ByteBuffer getValueBuffer(int valueLength);
+
+ protected abstract byte readByte() throws IOException;
+
+ private Tag readTag() throws IOException {
+ int tagFlags = readTagFlags();
+ int tagNo = readTagNo(tagFlags);
+ return new Tag(tagFlags, tagNo);
+ }
+
+ private int readTagFlags() throws IOException {
+ int tagFlags = readByte() & 0xff;
+ return tagFlags;
+ }
+
+ private int readTagNo(int tagFlags) throws IOException {
+ int tagNo = tagFlags & 0x1f;
+
+ if (tagNo == 0x1f) {
+ tagNo = 0;
+
+ int b = 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 = readByte();
+ }
+
+ tagNo |= b & 0x7f;
+ }
+
+ return tagNo;
+ }
+
+ private int readLength() throws IOException {
+ int result = readByte() & 0xff;
+ if (result == 0x80) {
+ return -1; // non-definitive length
+ }
+
+ if (result > 127) {
+ int length = result & 0x7f;
+ if (length > 4) {
+ throw new IOException("Bad length of more than 4 bytes: " + length);
+ }
+
+ result = 0;
+ int tmp;
+ for (int i = 0; i < length; i++) {
+ tmp = readByte() & 0xff;
+ result = (result << 8) + tmp;
+ }
+ }
+
+ if (result < 0) {
+ throw new IOException("Invalid length " + result);
+ }
+
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader1.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader1.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader1.java
new file mode 100644
index 0000000..f53f99d
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader1.java
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.kerby.asn1.util;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * ASN1 reader for stateful reading.
+ */
+public final class Asn1Reader1 extends Asn1Reader {
+
+ public Asn1Reader1(ByteBuffer buffer) {
+ super(buffer);
+ }
+
+ @Override
+ protected byte readByte() throws IOException {
+ return buffer.get();
+ }
+
+ @Override
+ protected ByteBuffer getValueBuffer(int valueLength) {
+ ByteBuffer result = buffer.duplicate();
+ result.limit(buffer.position() + valueLength);
+ buffer.position(buffer.position() + valueLength);
+
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader2.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader2.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader2.java
new file mode 100644
index 0000000..9351c3f
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Reader2.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.asn1.util;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * ASN1 reader for positional reading.
+ */
+public final class Asn1Reader2 extends Asn1Reader {
+ private int position;
+
+ public Asn1Reader2(ByteBuffer buffer, int position) {
+ super(buffer);
+ this.position = position;
+ }
+
+ public Asn1Reader2(ByteBuffer buffer) {
+ super(buffer);
+ this.position = buffer.position();
+ }
+
+ public int getPosition() {
+ return position;
+ }
+
+ public void setPosition(int position) {
+ this.position = position;
+ }
+
+ public boolean available() {
+ return position < buffer.limit();
+ }
+
+ @Override
+ protected ByteBuffer getValueBuffer(int valueLength) {
+ return buffer;
+ }
+
+ @Override
+ protected byte readByte() throws IOException {
+ return buffer.get(position++);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Util.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Util.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Util.java
new file mode 100644
index 0000000..a1f3438
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Asn1Util.java
@@ -0,0 +1,119 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.util;
+
+import org.apache.kerby.asn1.Tag;
+
+import java.nio.ByteBuffer;
+
+/**
+ * The abstract ASN1 object for all the ASN1 types. It provides basic
+ * encoding and decoding utilities.
+ */
+public final class Asn1Util {
+ private Asn1Util() {
+
+ }
+
+ 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, Tag tag) {
+ int flags = tag.tagFlags();
+ int tagNo = tag.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 byte[] readAllLeftBytes(ByteBuffer buffer) {
+ byte[] result = new byte[buffer.remaining()];
+ buffer.get(result);
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Base64.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Base64.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Base64.java
new file mode 100644
index 0000000..a15f477
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Base64.java
@@ -0,0 +1,1048 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.util;
+
+import java.math.BigInteger;
+
+/**
+ * Provides Base64 encoding and decoding as defined by RFC 2045.
+ *
+ * <p>
+ * This class implements section <cite>6.8. Base64 Content-Transfer-Encoding</cite> from RFC 2045 <cite>Multipurpose
+ * Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</cite> by Freed and Borenstein.
+ * </p>
+ * <p>
+ * The class can be parameterized in the following manner with various constructors:
+ * </p>
+ * <ul>
+ * <li>URL-safe mode: Default off.</li>
+ * <li>Line length: Default 76. Line length that aren't multiples of 4 will still essentially end up being multiples of
+ * 4 in the encoded data.</li>
+ * <li>Line separator: Default is CRLF ("\r\n")</li>
+ * </ul>
+ * <p>
+ * Since this class operates directly on byte streams, and not character streams, it is hard-coded to only encode/decode
+ * character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).
+ * </p>
+ *
+ * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
+ * @author Apache Software Foundation
+ * @since 1.0
+ * @version $Id: Base64.java 155 2009-09-17 21:00:58Z julius $
+ */
+public class Base64 {
+ private static final int DEFAULT_BUFFER_RESIZE_FACTOR = 2;
+
+ private static final int DEFAULT_BUFFER_SIZE = 8192;
+
+ /**
+ * Chunk size per RFC 2045 section 6.8.
+ *
+ * <p>
+ * The {@value} character limit does not count the trailing CRLF, but counts all other characters, including any
+ * equal signs.
+ * </p>
+ *
+ * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045 section 6.8</a>
+ */
+ static final int CHUNK_SIZE = 76;
+
+ /**
+ * Chunk separator per RFC 2045 section 2.1.
+ *
+ * <p>
+ * N.B. The next major release may break compatibility and make this field private.
+ * </p>
+ *
+ * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045 section 2.1</a>
+ */
+ static final byte[] CHUNK_SEPARATOR = {'\r', '\n'};
+
+ /**
+ * This array is a lookup table that translates 6-bit positive integer index values into their "Base64 Alphabet"
+ * equivalents as specified in Table 1 of RFC 2045.
+ *
+ * Thanks to "commons" project in ws.apache.org for this code.
+ * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
+ */
+ private static final byte[] STANDARD_ENCODE_TABLE = {
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
+ };
+
+ /**
+ * This is a copy of the STANDARD_ENCODE_TABLE above, but with + and /
+ * changed to - and _ to make the encoded Base64 results more URL-SAFE.
+ * This table is only used when the Base64's mode is set to URL-SAFE.
+ */
+ private static final byte[] URL_SAFE_ENCODE_TABLE = {
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_'
+ };
+
+ /**
+ * Byte used to pad output.
+ */
+ private static final byte PAD = '=';
+
+ /**
+ * This array is a lookup table that translates Unicode characters drawn from the "Base64 Alphabet" (as specified in
+ * Table 1 of RFC 2045) into their 6-bit positive integer equivalents. Characters that are not in the Base64
+ * alphabet but fall within the bounds of the array are translated to -1.
+ *
+ * Note: '+' and '-' both decode to 62. '/' and '_' both decode to 63. This means decoder seamlessly handles both
+ * URL_SAFE and STANDARD base64. (The encoder, on the other hand, needs to know ahead of time what to emit).
+ *
+ * Thanks to "commons" project in ws.apache.org for this code.
+ * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
+ */
+ private static final byte[] DECODE_TABLE = {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, -1, -1, -1, -1, 63, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51
+ };
+
+ /** Mask used to extract 6 bits, used when encoding */
+ private static final int MASK_6BITS = 0x3f;
+
+ /** Mask used to extract 8 bits, used in decoding base64 bytes */
+ private static final int MASK_8BITS = 0xff;
+
+ // The static final fields above are used for the original static byte[] methods on Base64.
+ // The private member fields below are used with the new streaming approach, which requires
+ // some state be preserved between calls of encode() and decode().
+
+ /**
+ * Encode table to use: either STANDARD or URL_SAFE. Note: the DECODE_TABLE above remains static because it is able
+ * to decode both STANDARD and URL_SAFE streams, but the encodeTable must be a member variable so we can switch
+ * between the two modes.
+ */
+ private final byte[] encodeTable;
+
+ /**
+ * Line length for encoding. Not used when decoding. A value of zero or less implies no chunking of the base64
+ * encoded data.
+ */
+ private final int lineLength;
+
+ /**
+ * Line separator for encoding. Not used when decoding. Only used if lineLength > 0.
+ */
+ private final byte[] lineSeparator;
+
+ /**
+ * Convenience variable to help us determine when our buffer is going to run out of room and needs resizing.
+ * <code>decodeSize = 3 + lineSeparator.length;</code>
+ */
+ private final int decodeSize;
+
+ /**
+ * Convenience variable to help us determine when our buffer is going to run out of room and needs resizing.
+ * <code>encodeSize = 4 + lineSeparator.length;</code>
+ */
+ private final int encodeSize;
+
+ /**
+ * Buffer for streaming.
+ */
+ private byte[] buffer;
+
+ /**
+ * Position where next character should be written in the buffer.
+ */
+ private int pos;
+
+ /**
+ * Position where next character should be read from the buffer.
+ */
+ private int readPos;
+
+ /**
+ * Variable tracks how many characters have been written to the current line. Only used when encoding. We use it to
+ * make sure each encoded line never goes beyond lineLength (if lineLength > 0).
+ */
+ private int currentLinePos;
+
+ /**
+ * Writes to the buffer only occur after every 3 reads when encoding, an every 4 reads when decoding. This variable
+ * helps track that.
+ */
+ private int modulus;
+
+ /**
+ * Boolean flag to indicate the EOF has been reached. Once EOF has been reached, this Base64 object becomes useless,
+ * and must be thrown away.
+ */
+ private boolean eof;
+
+ /**
+ * Place holder for the 3 bytes we're dealing with for our base64 logic. Bitwise operations store and extract the
+ * base64 encoding or decoding from this variable.
+ */
+ private int x;
+
+ /**
+ * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
+ * <p>
+ * When encoding the line length is 76, the line separator is CRLF, and the encoding table is STANDARD_ENCODE_TABLE.
+ * </p>
+ *
+ * <p>
+ * When decoding all variants are supported.
+ * </p>
+ */
+ public Base64() {
+ this(false);
+ }
+
+ /**
+ * Creates a Base64 codec used for decoding (all modes) and encoding in the given URL-safe mode.
+ * <p>
+ * When encoding the line length is 76, the line separator is CRLF, and the encoding table is STANDARD_ENCODE_TABLE.
+ * </p>
+ *
+ * <p>
+ * When decoding all variants are supported.
+ * </p>
+ *
+ * @param urlSafe
+ * if <code>true</code>, URL-safe encoding is used. In most cases this should be set to
+ * <code>false</code>.
+ * @since 1.4
+ */
+ public Base64(boolean urlSafe) {
+ this(CHUNK_SIZE, CHUNK_SEPARATOR, urlSafe);
+ }
+
+ /**
+ * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
+ * <p>
+ * When encoding the line length is given in the constructor, the line separator is CRLF, and the encoding table is
+ * STANDARD_ENCODE_TABLE.
+ * </p>
+ * <p>
+ * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data.
+ * </p>
+ * <p>
+ * When decoding all variants are supported.
+ * </p>
+ *
+ * @param lineLength
+ * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4).
+ * If {@code lineLength <= 0}, then the output will not be divided into lines (chunks). Ignored when decoding.
+ * @since 1.4
+ */
+ public Base64(int lineLength) {
+ this(lineLength, CHUNK_SEPARATOR);
+ }
+
+ /**
+ * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
+ * <p>
+ * When encoding the line length and line separator are given in the constructor, and the encoding table is
+ * STANDARD_ENCODE_TABLE.
+ * </p>
+ * <p>
+ * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data.
+ * </p>
+ * <p>
+ * When decoding all variants are supported.
+ * </p>
+ *
+ * @param lineLength
+ * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4).
+ * If {@code lineLength <= 0}, then the output will not be divided into lines (chunks). Ignored when decoding.
+ * @param lineSeparator
+ * Each line of encoded data will end with this sequence of bytes.
+ * @throws IllegalArgumentException
+ * Thrown when the provided lineSeparator included some base64 characters.
+ * @since 1.4
+ */
+ public Base64(int lineLength, byte[] lineSeparator) {
+ this(lineLength, lineSeparator, false);
+ }
+
+ /**
+ * Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
+ * <p>
+ * When encoding the line length and line separator are given in the constructor, and the encoding table is
+ * STANDARD_ENCODE_TABLE.
+ * </p>
+ * <p>
+ * Line lengths that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data.
+ * </p>
+ * <p>
+ * When decoding all variants are supported.
+ * </p>
+ *
+ * @param lineLength
+ * Each line of encoded data will be at most of the given length (rounded down to nearest multiple of 4).
+ * If {@code lineLength <= 0}, then the output will not be divided into lines (chunks). Ignored when decoding.
+ * @param lineSeparator
+ * Each line of encoded data will end with this sequence of bytes.
+ * @param urlSafe
+ * Instead of emitting '+' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode
+ * operations. Decoding seamlessly handles both modes.
+ * @throws IllegalArgumentException
+ * The provided lineSeparator included some base64 characters. That's not going to work!
+ * @since 1.4
+ */
+ public Base64(int lineLength, byte[] lineSeparator, boolean urlSafe) {
+ if (lineSeparator == null) {
+ lineLength = 0; // disable chunk-separating
+ lineSeparator = CHUNK_SEPARATOR; // this just gets ignored
+ }
+ this.lineLength = lineLength > 0 ? (lineLength / 4) * 4 : 0;
+ this.lineSeparator = new byte[lineSeparator.length];
+ System.arraycopy(lineSeparator, 0, this.lineSeparator, 0, lineSeparator.length);
+ if (lineLength > 0) {
+ this.encodeSize = 4 + lineSeparator.length;
+ } else {
+ this.encodeSize = 4;
+ }
+ this.decodeSize = this.encodeSize - 1;
+ if (containsBase64Byte(lineSeparator)) {
+ String sep = Utf8.toString(lineSeparator);
+ throw new IllegalArgumentException("lineSeperator must not contain base64 characters: [" + sep + "]");
+ }
+ this.encodeTable = urlSafe ? URL_SAFE_ENCODE_TABLE : STANDARD_ENCODE_TABLE;
+ }
+
+ /**
+ * Returns our current encode mode. True if we're URL-SAFE, false otherwise.
+ *
+ * @return true if we're in URL-SAFE mode, false otherwise.
+ * @since 1.4
+ */
+ public boolean isUrlSafe() {
+ return this.encodeTable == URL_SAFE_ENCODE_TABLE;
+ }
+
+ /**
+ * Returns true if this Base64 object has buffered data for reading.
+ *
+ * @return true if there is Base64 object still available for reading.
+ */
+ boolean hasData() {
+ return this.buffer != null;
+ }
+
+ /**
+ * Returns the amount of buffered data available for reading.
+ *
+ * @return The amount of buffered data available for reading.
+ */
+ int avail() {
+ return buffer != null ? pos - readPos : 0;
+ }
+
+ /** Doubles our buffer. */
+ private void resizeBuffer() {
+ if (buffer == null) {
+ buffer = new byte[DEFAULT_BUFFER_SIZE];
+ pos = 0;
+ readPos = 0;
+ } else {
+ byte[] b = new byte[buffer.length * DEFAULT_BUFFER_RESIZE_FACTOR];
+ System.arraycopy(buffer, 0, b, 0, buffer.length);
+ buffer = b;
+ }
+ }
+
+ /**
+ * Extracts buffered data into the provided byte[] array, starting at position bPos, up to a maximum of bAvail
+ * bytes. Returns how many bytes were actually extracted.
+ *
+ * @param b
+ * byte[] array to extract the buffered data into.
+ * @param bPos
+ * position in byte[] array to start extraction at.
+ * @param bAvail
+ * amount of bytes we're allowed to extract. We may extract fewer (if fewer are available).
+ * @return The number of bytes successfully extracted into the provided byte[] array.
+ */
+ int readResults(byte[] b, int bPos, int bAvail) {
+ if (buffer != null) {
+ int len = Math.min(avail(), bAvail);
+ if (buffer != b) {
+ System.arraycopy(buffer, readPos, b, bPos, len);
+ readPos += len;
+ if (readPos >= pos) {
+ buffer = null;
+ }
+ } else {
+ // Re-using the original consumer's output array is only
+ // allowed for one round.
+ buffer = null;
+ }
+ return len;
+ }
+ return eof ? -1 : 0;
+ }
+
+ /**
+ * Sets the streaming buffer. This is a small optimization where we try to buffer directly to the consumer's output
+ * array for one round (if the consumer calls this method first) instead of starting our own buffer.
+ *
+ * @param out
+ * byte[] array to buffer directly to.
+ * @param outPos
+ * Position to start buffering into.
+ * @param outAvail
+ * Amount of bytes available for direct buffering.
+ */
+ void setInitialBuffer(byte[] out, int outPos, int outAvail) {
+ // We can re-use consumer's original output array under
+ // special circumstances, saving on some System.arraycopy().
+ if (out != null && out.length == outAvail) {
+ buffer = out;
+ pos = outPos;
+ readPos = outPos;
+ }
+ }
+
+ /**
+ * <p>
+ * Encodes all of the provided data, starting at inPos, for inAvail bytes. Must be called at least twice: once with
+ * the data to encode, and once with inAvail set to "-1" to alert encoder that EOF has been reached, so flush last
+ * remaining bytes (if not multiple of 3).
+ * </p>
+ * <p>
+ * Thanks to "commons" project in ws.apache.org for the bitwise operations, and general approach.
+ * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
+ * </p>
+ *
+ * @param in
+ * byte[] array of binary data to base64 encode.
+ * @param inPos
+ * Position to start reading data from.
+ * @param inAvail
+ * Amount of bytes available from input for encoding.
+ */
+ void encode(byte[] in, int inPos, int inAvail) {
+ if (eof) {
+ return;
+ }
+ // inAvail < 0 is how we're informed of EOF in the underlying data we're
+ // encoding.
+ if (inAvail < 0) {
+ eof = true;
+ if (buffer == null || buffer.length - pos < encodeSize) {
+ resizeBuffer();
+ }
+ switch (modulus) {
+ case 1 :
+ buffer[pos++] = encodeTable[(x >> 2) & MASK_6BITS];
+ buffer[pos++] = encodeTable[(x << 4) & MASK_6BITS];
+ // URL-SAFE skips the padding to further reduce size.
+ if (encodeTable == STANDARD_ENCODE_TABLE) {
+ buffer[pos++] = PAD;
+ buffer[pos++] = PAD;
+ }
+ break;
+
+ case 2 :
+ buffer[pos++] = encodeTable[(x >> 10) & MASK_6BITS];
+ buffer[pos++] = encodeTable[(x >> 4) & MASK_6BITS];
+ buffer[pos++] = encodeTable[(x << 2) & MASK_6BITS];
+ // URL-SAFE skips the padding to further reduce size.
+ if (encodeTable == STANDARD_ENCODE_TABLE) {
+ buffer[pos++] = PAD;
+ }
+ break;
+ default:
+ break;
+ }
+ if (lineLength > 0 && pos > 0) {
+ System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
+ pos += lineSeparator.length;
+ }
+ } else {
+ for (int i = 0; i < inAvail; i++) {
+ if (buffer == null || buffer.length - pos < encodeSize) {
+ resizeBuffer();
+ }
+ modulus = (++modulus) % 3;
+ int b = in[inPos++];
+ if (b < 0) {
+ b += 256;
+ }
+ x = (x << 8) + b;
+ if (0 == modulus) {
+ buffer[pos++] = encodeTable[(x >> 18) & MASK_6BITS];
+ buffer[pos++] = encodeTable[(x >> 12) & MASK_6BITS];
+ buffer[pos++] = encodeTable[(x >> 6) & MASK_6BITS];
+ buffer[pos++] = encodeTable[x & MASK_6BITS];
+ currentLinePos += 4;
+ if (lineLength > 0 && lineLength <= currentLinePos) {
+ System.arraycopy(lineSeparator, 0, buffer, pos, lineSeparator.length);
+ pos += lineSeparator.length;
+ currentLinePos = 0;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * <p>
+ * Decodes all of the provided data, starting at inPos, for inAvail bytes. Should be called at least twice: once
+ * with the data to decode, and once with inAvail set to "-1" to alert decoder that EOF has been reached. The "-1"
+ * call is not necessary when decoding, but it doesn't hurt, either.
+ * </p>
+ * <p>
+ * Ignores all non-base64 characters. This is how chunked (e.g. 76 character) data is handled, since CR and LF are
+ * silently ignored, but has implications for other bytes, too. This method subscribes to the garbage-in,
+ * garbage-out philosophy: it will not check the provided data for validity.
+ * </p>
+ * <p>
+ * Thanks to "commons" project in ws.apache.org for the bitwise operations, and general approach.
+ * http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/util/
+ * </p>
+ *
+ * @param in
+ * byte[] array of ascii data to base64 decode.
+ * @param inPos
+ * Position to start reading data from.
+ * @param inAvail
+ * Amount of bytes available from input for encoding.
+ */
+ void decode(byte[] in, int inPos, int inAvail) {
+ if (eof) {
+ return;
+ }
+ if (inAvail < 0) {
+ eof = true;
+ }
+ for (int i = 0; i < inAvail; i++) {
+ if (buffer == null || buffer.length - pos < decodeSize) {
+ resizeBuffer();
+ }
+ byte b = in[inPos++];
+ if (b == PAD) {
+ // We're done.
+ eof = true;
+ break;
+ } else {
+ if (b >= 0 && b < DECODE_TABLE.length) {
+ int result = DECODE_TABLE[b];
+ if (result >= 0) {
+ modulus = (++modulus) % 4;
+ x = (x << 6) + result;
+ if (modulus == 0) {
+ buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS);
+ buffer[pos++] = (byte) ((x >> 8) & MASK_8BITS);
+ buffer[pos++] = (byte) (x & MASK_8BITS);
+ }
+ }
+ }
+ }
+ }
+
+ // Two forms of EOF as far as base64 decoder is concerned: actual
+ // EOF (-1) and first time '=' character is encountered in stream.
+ // This approach makes the '=' padding characters completely optional.
+ if (eof && modulus != 0) {
+ x = x << 6;
+ switch (modulus) {
+ case 2 :
+ x = x << 6;
+ buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS);
+ break;
+ case 3 :
+ buffer[pos++] = (byte) ((x >> 16) & MASK_8BITS);
+ buffer[pos++] = (byte) ((x >> 8) & MASK_8BITS);
+ break;
+ default :
+ break;
+ }
+ }
+ }
+
+ /**
+ * Returns whether or not the <code>octet</code> is in the base 64 alphabet.
+ *
+ * @param octet
+ * The value to test
+ * @return <code>true</code> if the value is defined in the the base 64 alphabet, <code>false</code> otherwise.
+ * @since 1.4
+ */
+ public static boolean isBase64(byte octet) {
+ return octet == PAD || octet >= 0 && octet < DECODE_TABLE.length && DECODE_TABLE[octet] != -1;
+ }
+
+ /**
+ * Tests a given byte array to see if it contains only valid characters within the Base64 alphabet. Currently the
+ * method treats whitespace as valid.
+ *
+ * @param arrayOctet
+ * byte array to test
+ * @return <code>true</code> if all bytes are valid characters in the Base64 alphabet or if the byte array is empty;
+ * false, otherwise
+ */
+ public static boolean isArrayByteBase64(byte[] arrayOctet) {
+ for (int i = 0; i < arrayOctet.length; i++) {
+ if (!isBase64(arrayOctet[i]) && !isWhiteSpace(arrayOctet[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Tests a given byte array to see if it contains only valid characters within the Base64 alphabet.
+ *
+ * @param arrayOctet
+ * byte array to test
+ * @return <code>true</code> if any byte is a valid character in the Base64 alphabet; false herwise
+ */
+ private static boolean containsBase64Byte(byte[] arrayOctet) {
+ for (int i = 0; i < arrayOctet.length; i++) {
+ if (isBase64(arrayOctet[i])) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Encodes binary data using the base64 algorithm but does not chunk the output.
+ *
+ * @param binaryData
+ * binary data to encode
+ * @return byte[] containing Base64 characters in their UTF-8 representation.
+ */
+ public static byte[] encodeBase64(byte[] binaryData) {
+ return encodeBase64(binaryData, false);
+ }
+
+ /**
+ * Encodes binary data using the base64 algorithm into 76 character blocks separated by CRLF.
+ *
+ * @param binaryData
+ * binary data to encode
+ * @return String containing Base64 characters.
+ * @since 1.4
+ */
+ public static String encodeBase64String(byte[] binaryData) {
+ return Utf8.toString(encodeBase64(binaryData, true));
+ }
+
+ /**
+ * Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output. The
+ * url-safe variation emits - and _ instead of + and / characters.
+ *
+ * @param binaryData
+ * binary data to encode
+ * @return byte[] containing Base64 characters in their UTF-8 representation.
+ * @since 1.4
+ */
+ public static byte[] encodeBase64URLSafe(byte[] binaryData) {
+ return encodeBase64(binaryData, false, true);
+ }
+
+ /**
+ * Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output. The
+ * url-safe variation emits - and _ instead of + and / characters.
+ *
+ * @param binaryData
+ * binary data to encode
+ * @return String containing Base64 characters
+ * @since 1.4
+ */
+ public static String encodeBase64URLSafeString(byte[] binaryData) {
+ return Utf8.toString(encodeBase64(binaryData, false, true));
+ }
+
+ /**
+ * Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks
+ *
+ * @param binaryData
+ * binary data to encode
+ * @return Base64 characters chunked in 76 character blocks
+ */
+ public static byte[] encodeBase64Chunked(byte[] binaryData) {
+ return encodeBase64(binaryData, true);
+ }
+
+ /**
+ * Decodes an Object using the base64 algorithm. This method is provided in order to satisfy the requirements of the
+ * Decoder interface, and will throw a DecoderException if the supplied object is not of type byte[] or String.
+ *
+ * @param pObject
+ * Object to decode
+ * @return An object (of type byte[]) containing the binary data which corresponds to the byte[] or String supplied.
+ */
+ public Object decode(Object pObject) {
+ if (pObject instanceof byte[]) {
+ return decode((byte[]) pObject);
+ } else if (pObject instanceof String) {
+ return decode((String) pObject);
+ } else {
+ throw new IllegalArgumentException("Parameter supplied to Base64 decode is not a byte[] or a String");
+ }
+ }
+
+ /**
+ * Decodes a String containing containing characters in the Base64 alphabet.
+ *
+ * @param pArray
+ * A String containing Base64 character data
+ * @return a byte array containing binary data
+ * @since 1.4
+ */
+ public byte[] decode(String pArray) {
+ return decode(Utf8.toBytes(pArray));
+ }
+
+ /**
+ * Decodes a byte[] containing containing characters in the Base64 alphabet.
+ *
+ * @param pArray
+ * A byte array containing Base64 character data
+ * @return a byte array containing binary data
+ */
+ public byte[] decode(byte[] pArray) {
+ reset();
+ if (pArray == null || pArray.length == 0) {
+ return pArray;
+ }
+ long len = (pArray.length * 3) / 4;
+ byte[] buf = new byte[(int) len];
+ setInitialBuffer(buf, 0, buf.length);
+ decode(pArray, 0, pArray.length);
+ decode(pArray, 0, -1); // Notify decoder of EOF.
+
+ // Would be nice to just return buf (like we sometimes do in the encode
+ // logic), but we have no idea what the line-length was (could even be
+ // variable). So we cannot determine ahead of time exactly how big an
+ // array is necessary. Hence the need to construct a 2nd byte array to
+ // hold the final result:
+
+ byte[] result = new byte[pos];
+ readResults(result, 0, result.length);
+ return result;
+ }
+
+ /**
+ * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
+ *
+ * @param binaryData
+ * Array containing binary data to encode.
+ * @param isChunked
+ * if <code>true</code> this encoder will chunk the base64 output into 76 character blocks
+ * @return Base64-encoded data.
+ * @throws IllegalArgumentException
+ * Thrown when the input array needs an output array bigger than {@link Integer#MAX_VALUE}
+ */
+ public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
+ return encodeBase64(binaryData, isChunked, false);
+ }
+
+ /**
+ * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
+ *
+ * @param binaryData
+ * Array containing binary data to encode.
+ * @param isChunked
+ * if <code>true</code> this encoder will chunk the base64 output into 76 character blocks
+ * @param urlSafe
+ * if <code>true</code> this encoder will emit - and _ instead of the usual + and / characters.
+ * @return Base64-encoded data.
+ * @throws IllegalArgumentException
+ * Thrown when the input array needs an output array bigger than {@link Integer#MAX_VALUE}
+ * @since 1.4
+ */
+ public static byte[] encodeBase64(byte[] binaryData, boolean isChunked, boolean urlSafe) {
+ return encodeBase64(binaryData, isChunked, urlSafe, Integer.MAX_VALUE);
+ }
+
+ /**
+ * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
+ *
+ * @param binaryData
+ * Array containing binary data to encode.
+ * @param isChunked
+ * if <code>true</code> this encoder will chunk the base64 output into 76 character blocks
+ * @param urlSafe
+ * if <code>true</code> this encoder will emit - and _ instead of the usual + and / characters.
+ * @param maxResultSize
+ * The maximum result size to accept.
+ * @return Base64-encoded data.
+ * @throws IllegalArgumentException
+ * Thrown when the input array needs an output array bigger than maxResultSize
+ * @since 1.4
+ */
+ public static byte[] encodeBase64(byte[] binaryData, boolean isChunked, boolean urlSafe, int maxResultSize) {
+ if (binaryData == null || binaryData.length == 0) {
+ return binaryData;
+ }
+
+ long len = getEncodeLength(binaryData, CHUNK_SIZE, CHUNK_SEPARATOR);
+ if (len > maxResultSize) {
+ throw new IllegalArgumentException("Input array too big, the output array would be bigger ("
+ + len + ") than the specified maxium size of " + maxResultSize);
+ }
+
+ Base64 b64 = isChunked ? new Base64(urlSafe) : new Base64(0, CHUNK_SEPARATOR, urlSafe);
+ return b64.encode(binaryData);
+ }
+
+ /**
+ * Decodes a Base64 String into octets
+ *
+ * @param base64String
+ * String containing Base64 data
+ * @return Array containing decoded data.
+ * @since 1.4
+ */
+ public static byte[] decodeBase64(String base64String) {
+ return new Base64().decode(base64String);
+ }
+
+ /**
+ * Decodes Base64 data into octets
+ *
+ * @param base64Data
+ * Byte array containing Base64 data
+ * @return Array containing decoded data.
+ */
+ public static byte[] decodeBase64(byte[] base64Data) {
+ return new Base64().decode(base64Data);
+ }
+
+ /**
+ * Discards any whitespace from a base-64 encoded block.
+ *
+ * @param data
+ * The base-64 encoded data to discard the whitespace from.
+ * @return The data, less whitespace (see RFC 2045).
+ * @deprecated This method is no longer needed
+ */
+ static byte[] discardWhitespace(byte[] data) {
+ byte[] groomedData = new byte[data.length];
+ int bytesCopied = 0;
+ for (int i = 0; i < data.length; i++) {
+ switch (data[i]) {
+ case ' ' :
+ case '\n' :
+ case '\r' :
+ case '\t' :
+ break;
+ default :
+ groomedData[bytesCopied++] = data[i];
+ }
+ }
+ byte[] packedData = new byte[bytesCopied];
+ System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
+ return packedData;
+ }
+
+ /**
+ * Checks if a byte value is whitespace or not.
+ *
+ * @param byteToCheck
+ * the byte to check
+ * @return true if byte is whitespace, false otherwise
+ */
+ private static boolean isWhiteSpace(byte byteToCheck) {
+ switch (byteToCheck) {
+ case ' ' :
+ case '\n' :
+ case '\r' :
+ case '\t' :
+ return true;
+ default :
+ return false;
+ }
+ }
+
+ // Implementation of the Encoder Interface
+
+ /**
+ * Encodes an Object using the base64 algorithm. This method is provided in order to satisfy the requirements of the
+ * Encoder interface, and will throw an EncoderException if the supplied object is not of type byte[].
+ *
+ * @param pObject
+ * Object to encode
+ * @return An object (of type byte[]) containing the base64 encoded data which corresponds to the byte[] supplied.
+ */
+ public Object encode(Object pObject) {
+ if (!(pObject instanceof byte[])) {
+ throw new IllegalArgumentException("Parameter supplied to Base64 encode is not a byte[]");
+ }
+ return encode((byte[]) pObject);
+ }
+
+ /**
+ * Encodes a byte[] containing binary data, into a String containing characters in the Base64 alphabet.
+ *
+ * @param pArray
+ * a byte array containing binary data
+ * @return A String containing only Base64 character data
+ * @since 1.4
+ */
+ public String encodeToString(byte[] pArray) {
+ return Utf8.toString(encode(pArray));
+ }
+
+ /**
+ * Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 alphabet.
+ *
+ * @param pArray
+ * a byte array containing binary data
+ * @return A byte array containing only Base64 character data
+ */
+ public byte[] encode(byte[] pArray) {
+ reset();
+ if (pArray == null || pArray.length == 0) {
+ return pArray;
+ }
+ long len = getEncodeLength(pArray, lineLength, lineSeparator);
+ byte[] buf = new byte[(int) len];
+ setInitialBuffer(buf, 0, buf.length);
+ encode(pArray, 0, pArray.length);
+ encode(pArray, 0, -1); // Notify encoder of EOF.
+ // Encoder might have resized, even though it was unnecessary.
+ if (buffer != buf) {
+ readResults(buf, 0, buf.length);
+ }
+ // In URL-SAFE mode we skip the padding characters, so sometimes our
+ // final length is a bit smaller.
+ if (isUrlSafe() && pos < buf.length) {
+ byte[] smallerBuf = new byte[pos];
+ System.arraycopy(buf, 0, smallerBuf, 0, pos);
+ buf = smallerBuf;
+ }
+ return buf;
+ }
+
+ /**
+ * Pre-calculates the amount of space needed to base64-encode the supplied array.
+ *
+ * @param pArray byte[] array which will later be encoded
+ * @param chunkSize line-length of the output (<= 0 means no chunking) between each
+ * chunkSeparator (e.g. CRLF).
+ * @param chunkSeparator the sequence of bytes used to separate chunks of output (e.g. CRLF).
+ *
+ * @return amount of space needed to encoded the supplied array. Returns
+ * a long since a max-len array will require Integer.MAX_VALUE + 33%.
+ */
+ private static long getEncodeLength(byte[] pArray, int chunkSize, byte[] chunkSeparator) {
+ // base64 always encodes to multiples of 4.
+ chunkSize = (chunkSize / 4) * 4;
+
+ long len = (pArray.length * 4) / 3;
+ long mod = len % 4;
+ if (mod != 0) {
+ len += 4 - mod;
+ }
+ if (chunkSize > 0) {
+ boolean lenChunksPerfectly = len % chunkSize == 0;
+ len += (len / chunkSize) * chunkSeparator.length;
+ if (!lenChunksPerfectly) {
+ len += chunkSeparator.length;
+ }
+ }
+ return len;
+ }
+
+ // Implementation of integer encoding used for crypto
+ /**
+ * Decodes a byte64-encoded integer according to crypto standards such as W3C's XML-Signature
+ *
+ * @param pArray
+ * a byte array containing base64 character data
+ * @return A BigInteger
+ * @since 1.4
+ */
+ public static BigInteger decodeInteger(byte[] pArray) {
+ return new BigInteger(1, decodeBase64(pArray));
+ }
+
+ /**
+ * Encodes to a byte64-encoded integer according to crypto standards such as W3C's XML-Signature
+ *
+ * @param bigInt
+ * a BigInteger
+ * @return A byte array containing base64 character data
+ * @throws NullPointerException
+ * if null is passed in
+ * @since 1.4
+ */
+ public static byte[] encodeInteger(BigInteger bigInt) {
+ if (bigInt == null) {
+ throw new NullPointerException("encodeInteger called with null parameter");
+ }
+ return encodeBase64(toIntegerBytes(bigInt), false);
+ }
+
+ /**
+ * Returns a byte-array representation of a <code>BigInteger</code> without sign bit.
+ *
+ * @param bigInt
+ * <code>BigInteger</code> to be converted
+ * @return a byte array representation of the BigInteger parameter
+ */
+ static byte[] toIntegerBytes(BigInteger bigInt) {
+ int bitlen = bigInt.bitLength();
+ // round bitlen
+ bitlen = ((bitlen + 7) >> 3) << 3;
+ byte[] bigBytes = bigInt.toByteArray();
+
+ if (bigInt.bitLength() % 8 != 0 && (bigInt.bitLength() / 8 + 1) == bitlen / 8) {
+ return bigBytes;
+ }
+ // set up params for copying everything but sign bit
+ int startSrc = 0;
+ int len = bigBytes.length;
+
+ // if bigInt is exactly byte-aligned, just skip signbit in copy
+ if (bigInt.bitLength() % 8 == 0) {
+ startSrc = 1;
+ len--;
+ }
+ int startDst = bitlen / 8 - len; // to pad w/ nulls as per spec
+ byte[] resizedBytes = new byte[bitlen / 8];
+ System.arraycopy(bigBytes, startSrc, resizedBytes, startDst, len);
+ return resizedBytes;
+ }
+
+ /**
+ * Resets this Base64 object to its initial newly constructed state.
+ */
+ private void reset() {
+ buffer = null;
+ pos = 0;
+ readPos = 0;
+ currentLinePos = 0;
+ modulus = 0;
+ eof = false;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/HexUtil.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/HexUtil.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/HexUtil.java
new file mode 100644
index 0000000..66a0ee8
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/HexUtil.java
@@ -0,0 +1,113 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.util;
+
+/**
+ * This is only for test, be careful when use in production codes.
+ */
+public class HexUtil {
+
+ static final String HEX_CHARS_STR = "0123456789ABCDEF";
+ static final char[] HEX_CHARS = HEX_CHARS_STR.toCharArray();
+
+ /**
+ * Convert bytes into friendly format as:
+ * 0x02 02 00 80
+ */
+ public static String bytesToHexFriendly(byte[] bytes) {
+ int len = bytes.length * 2;
+ len += bytes.length; // for ' ' appended for each char
+ len += 2; // for '0x' prefix
+ char[] hexChars = new char[len];
+ hexChars[0] = '0';
+ hexChars[1] = 'x';
+ for (int j = 0; j < bytes.length; j++) {
+ int v = bytes[j] & 0xFF;
+ hexChars[j * 3 + 2] = HEX_CHARS[v >>> 4];
+ hexChars[j * 3 + 3] = HEX_CHARS[v & 0x0F];
+ hexChars[j * 3 + 4] = ' ';
+ }
+
+ return new String(hexChars);
+ }
+
+ /**
+ * Convert friendly hex string like follows into byte array
+ * 0x02 02 00 80
+ */
+ public static byte[] hex2bytesFriendly(String hexString) {
+ hexString = hexString.toUpperCase();
+ String hexStr = hexString;
+ if (hexString.startsWith("0X")) {
+ hexStr = hexString.substring(2);
+ }
+ String[] hexParts = hexStr.split(" ");
+
+ byte[] bytes = new byte[hexParts.length];
+ char[] hexPart;
+ for (int i = 0; i < hexParts.length; ++i) {
+ hexPart = hexParts[i].toCharArray();
+ if (hexPart.length != 2) {
+ throw new IllegalArgumentException("Invalid hex string to convert");
+ }
+ bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexPart[0]) << 4)
+ + HEX_CHARS_STR.indexOf(hexPart[1]));
+ }
+
+ return bytes;
+ }
+
+ /**
+ * Convert bytes into format as:
+ * 02020080
+ * @param bytes The bytes
+ * @return The hex string
+ */
+ public static String bytesToHex(byte[] bytes) {
+ int len = bytes.length * 2;
+ char[] hexChars = new char[len];
+ for (int j = 0; j < bytes.length; j++) {
+ int v = bytes[j] & 0xFF;
+ hexChars[j * 2] = HEX_CHARS[v >>> 4];
+ hexChars[j * 2 + 1] = HEX_CHARS[v & 0x0F];
+ }
+
+ return new String(hexChars);
+ }
+
+ /**
+ * Convert hex string like follows into byte array
+ * 02020080
+ * @param hexString The hex string
+ * @return The bytes
+ */
+ public static byte[] hex2bytes(String hexString) {
+ hexString = hexString.toUpperCase();
+ int len = hexString.length() / 2;
+ byte[] bytes = new byte[len];
+ char[] hexChars = hexString.toCharArray();
+ for (int i = 0, j = 0; i < len; ++i) {
+ bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexChars[j++]) << 4)
+ + HEX_CHARS_STR.indexOf(hexChars[j++]));
+ }
+
+ return bytes;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/IOUtil.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/IOUtil.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/IOUtil.java
new file mode 100644
index 0000000..02d1531
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/IOUtil.java
@@ -0,0 +1,109 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+
+/**
+ * Some IO and file related utilities.
+ */
+public final class IOUtil {
+ private IOUtil() { }
+
+ public static byte[] readInputStream(InputStream in) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] buffer = new byte[1024];
+ int length = 0;
+ while ((length = in.read(buffer)) != -1) {
+ baos.write(buffer, 0, length);
+ }
+ in.close();
+ return baos.toByteArray();
+ }
+
+ public static void readInputStream(InputStream in,
+ byte[] buf) throws IOException {
+ int toRead = buf.length;
+ int off = 0;
+ while (toRead > 0) {
+ int ret = in.read(buf, off, toRead);
+ if (ret < 0) {
+ throw new IOException("Bad inputStream, premature EOF");
+ }
+ toRead -= ret;
+ off += ret;
+ }
+ in.close();
+ }
+
+ /**
+ * Read an input stream and return the content as string assuming UTF8.
+ * @param in The input stream
+ * @return The content
+ * @throws IOException e
+ */
+ public static String readInput(InputStream in) throws IOException {
+ byte[] content = readInputStream(in);
+ return Utf8.toString(content);
+ }
+
+ /**
+ * Read a file and return the content as string assuming UTF8.
+ * @param file The file to read
+ * @return The content
+ * @throws IOException e
+ */
+ public static String readFile(File file) throws IOException {
+ long len = 0;
+ if (file.length() >= Integer.MAX_VALUE) {
+ throw new IOException("Too large file, unexpected!");
+ } else {
+ len = file.length();
+ }
+ byte[] buf = new byte[(int) len];
+
+ InputStream is = new FileInputStream(file);
+ readInputStream(is, buf);
+
+ return Utf8.toString(buf);
+ }
+
+ /**
+ * Write a file with the content assuming UTF8.
+ * @param content The content
+ * @param file The file to write
+ * @throws IOException e
+ */
+ public static void writeFile(String content, File file) throws IOException {
+ FileOutputStream outputStream = new FileOutputStream(file);
+ FileChannel fc = outputStream.getChannel();
+
+ ByteBuffer buffer = ByteBuffer.wrap(Utf8.toBytes(content));
+ fc.write(buffer);
+ outputStream.close();
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Utf8.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Utf8.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Utf8.java
new file mode 100644
index 0000000..d24b12b
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/util/Utf8.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.asn1.util;
+
+import java.nio.charset.StandardCharsets;
+
+public final class Utf8 {
+ private Utf8() { }
+
+ public static String toString(byte[] bytes) {
+ return new String(bytes, StandardCharsets.UTF_8);
+ }
+
+ public static byte[] toBytes(String s) {
+ return s.getBytes(StandardCharsets.UTF_8);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/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 8547cdd..c2d3a08 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
@@ -23,12 +23,21 @@ 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.Asn1TaggingSequence;
import org.apache.kerby.asn1.type.Asn1TaggingSet;
-import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.*;
-import static org.apache.kerby.asn1.PersonnelRecord.ChildInformation.MyEnum.*;
-import static org.apache.kerby.asn1.PersonnelRecord.Name.MyEnum.*;
+import org.apache.kerby.asn1.type.Asn1VisibleString;
+
+import static org.apache.kerby.asn1.PersonnelRecord.ChildInformation.MyEnum.CHILD_NAME;
+import static org.apache.kerby.asn1.PersonnelRecord.ChildInformation.MyEnum.DATEOFBIRTH;
+import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.CHILDREN;
+import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.DATEOFHIRE;
+import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.NAME;
+import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.NAMEOFSPOUSE;
+import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.NUMBER;
+import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.TITLE;
+import static org.apache.kerby.asn1.PersonnelRecord.Name.MyEnum.FAMILYNAME;
+import static org.apache.kerby.asn1.PersonnelRecord.Name.MyEnum.GIVENNAME;
+import static org.apache.kerby.asn1.PersonnelRecord.Name.MyEnum.INITIAL;
/**
* Ref. X.690-0207(http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
index 227579c..2f7dcf4 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Boolean.java
@@ -20,6 +20,7 @@
package org.apache.kerby.asn1;
import org.apache.kerby.asn1.type.Asn1Boolean;
+import org.apache.kerby.asn1.util.HexUtil;
import org.junit.Test;
import java.io.IOException;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
index ad4545c..8300f6e 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
@@ -28,8 +28,8 @@ import org.junit.rules.ExpectedException;
import java.io.IOException;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
public class TestAsn1Flags {
[18/26] directory-kerby git commit: ASN1. Allowing to return a header
Posted by pl...@apache.org.
ASN1. Allowing to return a header
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/4c7a8c44
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/4c7a8c44
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/4c7a8c44
Branch: refs/heads/pkinit-support
Commit: 4c7a8c4411fb1d3d6f619b8379b75ea431e8da6c
Parents: 7c93f2e
Author: Kai Zheng <ka...@intel.com>
Authored: Thu Dec 3 22:00:21 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Thu Dec 3 22:00:21 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kerby/asn1/Asn1Header.java | 54 +++++++++
.../java/org/apache/kerby/asn1/Asn1Reader.java | 111 +++++++++++++++++++
.../java/org/apache/kerby/asn1/Asn1Reader1.java | 47 ++++++++
.../java/org/apache/kerby/asn1/Asn1Reader2.java | 62 +++++++++++
.../java/org/apache/kerby/asn1/Asn1Util.java | 81 --------------
.../main/java/org/apache/kerby/asn1/Tag.java | 9 +-
.../org/apache/kerby/asn1/UniversalTag.java | 4 +-
.../org/apache/kerby/asn1/type/Asn1Eoc.java | 54 +++++++++
.../org/apache/kerby/asn1/type/Asn1Object.java | 58 ++++------
.../apache/kerby/kerberos/kerb/KrbCodec.java | 12 +-
10 files changed, 361 insertions(+), 131 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Header.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Header.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Header.java
new file mode 100644
index 0000000..0fbd047
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Header.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.asn1;
+
+import java.nio.ByteBuffer;
+
+public class Asn1Header {
+ private Tag tag;
+ private int length;
+ private ByteBuffer valueBuffer;
+
+ public Asn1Header(Tag tag, int length, ByteBuffer valueBuffer) {
+ this.tag = tag;
+ this.length = length;
+ this.valueBuffer = valueBuffer;
+ }
+
+ public Tag getTag() {
+ return tag;
+ }
+
+ public int getLength() {
+ return length;
+ }
+
+ public ByteBuffer getValueBuffer() {
+ return valueBuffer;
+ }
+
+ public boolean isEOC() {
+ return length == 0 && tag.isEOC();
+ }
+
+ public boolean isDefinitiveLength() {
+ return length != -1;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader.java
new file mode 100644
index 0000000..9ee9819
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader.java
@@ -0,0 +1,111 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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 java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * ASN1 reader from a byte buffer.
+ */
+public abstract class Asn1Reader {
+ protected ByteBuffer buffer;
+
+ public Asn1Reader(ByteBuffer buffer) {
+ this.buffer = buffer;
+ }
+
+ public ByteBuffer getBuffer() {
+ return buffer;
+ }
+
+ public Asn1Header readHeader() throws IOException {
+ Tag tag = readTag();
+ int valueLength = readLength();
+ Asn1Header header = new Asn1Header(tag, valueLength,
+ getValueBuffer(valueLength));
+ return header;
+ }
+
+ protected abstract ByteBuffer getValueBuffer(int valueLength);
+
+ protected abstract byte readByte() throws IOException;
+
+ private Tag readTag() throws IOException {
+ int tagFlags = readTagFlags();
+ int tagNo = readTagNo(tagFlags);
+ return new Tag(tagFlags, tagNo);
+ }
+
+ private int readTagFlags() throws IOException {
+ int tagFlags = readByte() & 0xff;
+ return tagFlags;
+ }
+
+ private int readTagNo(int tagFlags) throws IOException {
+ int tagNo = tagFlags & 0x1f;
+
+ if (tagNo == 0x1f) {
+ tagNo = 0;
+
+ int b = 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 = readByte();
+ }
+
+ tagNo |= b & 0x7f;
+ }
+
+ return tagNo;
+ }
+
+ private int readLength() throws IOException {
+ int result = readByte() & 0xff;
+ if (result == 0x80) {
+ return -1; // non-definitive length
+ }
+
+ if (result > 127) {
+ int length = result & 0x7f;
+ if (length > 4) {
+ throw new IOException("Bad length of more than 4 bytes: " + length);
+ }
+
+ result = 0;
+ int tmp;
+ for (int i = 0; i < length; i++) {
+ tmp = readByte() & 0xff;
+ result = (result << 8) + tmp;
+ }
+ }
+
+ if (result < 0) {
+ throw new IOException("Invalid length " + result);
+ }
+
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader1.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader1.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader1.java
new file mode 100644
index 0000000..291756d
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader1.java
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.kerby.asn1;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * ASN1 reader for stateful reading.
+ */
+public final class Asn1Reader1 extends Asn1Reader {
+
+ public Asn1Reader1(ByteBuffer buffer) {
+ super(buffer);
+ }
+
+ @Override
+ protected byte readByte() throws IOException {
+ return buffer.get();
+ }
+
+ @Override
+ protected ByteBuffer getValueBuffer(int valueLength) {
+ ByteBuffer result = buffer.duplicate();
+ result.limit(buffer.position() + valueLength);
+ buffer.position(buffer.position() + valueLength);
+
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader2.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader2.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader2.java
new file mode 100644
index 0000000..08e3472
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Reader2.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.asn1;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * ASN1 reader for positional reading.
+ */
+public final class Asn1Reader2 extends Asn1Reader {
+ private int position;
+
+ public Asn1Reader2(ByteBuffer buffer, int position) {
+ super(buffer);
+ this.position = position;
+ }
+
+ public Asn1Reader2(ByteBuffer buffer) {
+ super(buffer);
+ this.position = buffer.position();
+ }
+
+ public int getPosition() {
+ return position;
+ }
+
+ public void setPosition(int position) {
+ this.position = position;
+ }
+
+ public boolean available() {
+ return position < buffer.limit();
+ }
+
+ @Override
+ protected ByteBuffer getValueBuffer(int valueLength) {
+ return buffer;
+ }
+
+ @Override
+ protected byte readByte() throws IOException {
+ return buffer.get(position++);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
index caa50f3..315cf28 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
@@ -19,7 +19,6 @@
*/
package org.apache.kerby.asn1;
-import java.io.IOException;
import java.nio.ByteBuffer;
/**
@@ -110,86 +109,6 @@ public final class Asn1Util {
}
}
- public static Tag readTag(ByteBuffer buffer) throws IOException {
- int tagFlags = readTagFlags(buffer);
- int tagNo = readTagNo(buffer, tagFlags);
- return new Tag(tagFlags, tagNo);
- }
-
- private static int readTagFlags(ByteBuffer buffer) throws IOException {
- int tagFlags = buffer.get() & 0xff;
- if (tagFlags == 0) {
- throw new IOException("Bad tag 0 found");
- }
- return tagFlags;
- }
-
- private static int readTagNo(ByteBuffer buffer, int tagFlags) throws IOException {
- int tagNo = tagFlags & 0x1f;
-
- if (tagNo == 0x1f) {
- tagNo = 0;
-
- int b = buffer.get() & 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.get();
- }
-
- tagNo |= b & 0x7f;
- }
-
- return tagNo;
- }
-
- public static int readLength(ByteBuffer buffer) throws IOException {
- int result = buffer.get() & 0xff;
- if (result == 0x80) {
- return -1; // non-definitive length
- }
-
- if (result > 127) {
- int length = result & 0x7f;
- if (length > 4) {
- throw new IOException("Bad length of more than 4 bytes: " + length);
- }
-
- result = 0;
- int tmp;
- for (int i = 0; i < length; i++) {
- tmp = buffer.get() & 0xff;
- result = (result << 8) + tmp;
- }
- }
-
- if (result < 0) {
- throw new IOException("Invalid length " + result);
- }
-
- if (result > buffer.remaining()) {
- throw new IOException("Corrupt stream - less data "
- + buffer.remaining() + " than expected " + result);
- }
-
- return result;
- }
-
- public static ByteBuffer dupWithLength(ByteBuffer buffer, int length) {
- try {
- ByteBuffer result = buffer.duplicate();
- result.limit(buffer.position() + length);
- buffer.position(buffer.position() + length);
- return result;
- } catch (Exception e) {
- throw e;
- }
- }
-
public static byte[] readAllLeftBytes(ByteBuffer buffer) {
byte[] result = new byte[buffer.remaining()];
buffer.get(result);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.java
index bea843f..2cf5e6b 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.java
@@ -81,6 +81,10 @@ public class Tag {
return UniversalTag.UNKNOWN;
}
+ public boolean isEOC() {
+ return universalTag() == UniversalTag.EOC;
+ }
+
public boolean isUniversal() {
return tagClass().isUniversal();
}
@@ -124,10 +128,7 @@ public class Tag {
@Override
public String toString() {
- return "Tag["
- + "tagFlags=" + tagFlags
- + ", tagNo=" + tagNo
- + ']';
+ return tagNo >= 0x1F ? "N/A" : "" + (tagFlags | tagNo);
}
public static Tag newAppTag(int tagNo) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
index e78b50e..0a2eef7 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
@@ -28,7 +28,7 @@ public enum UniversalTag {
UNKNOWN (-1),
CHOICE (-2), // Only for internal using
ANY (-3), // Only for internal using
- BER_UNDEFINED_LENGTH(0), // Used to encode undefined length with BER
+ EOC (0), // End of content, use by BER
BOOLEAN (0x01),
INTEGER (0x02),
BIT_STRING (0x03),
@@ -87,7 +87,7 @@ public enum UniversalTag {
*/
public static UniversalTag fromValue(int value) {
switch (value) {
- case 0x00 : return BER_UNDEFINED_LENGTH;
+ case 0x00 : return EOC;
case 0x01 : return BOOLEAN;
case 0x02 : return INTEGER;
case 0x03 : return BIT_STRING;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Eoc.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Eoc.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Eoc.java
new file mode 100644
index 0000000..fe80979
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Eoc.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.asn1.type;
+
+import org.apache.kerby.asn1.UniversalTag;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * To represent Asn1 End Of Content type
+ */
+public final class Asn1Eoc extends Asn1Simple<Object> {
+ public static final Asn1Eoc INSTANCE = new Asn1Eoc();
+ private static final byte[] EMPTY_BYTES = new byte[0];
+
+ private Asn1Eoc() {
+ super(UniversalTag.EOC, null);
+ }
+
+ @Override
+ protected byte[] encodeBody() {
+ return EMPTY_BYTES;
+ }
+
+ @Override
+ protected int encodingBodyLength() {
+ return 0;
+ }
+
+ @Override
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ if (content.remaining() != 0) {
+ throw new IOException("Unexpected bytes found for EOC");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/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
index 0a46d37..099bf3f 100644
--- 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
@@ -19,6 +19,8 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.Asn1Header;
+import org.apache.kerby.asn1.Asn1Reader1;
import org.apache.kerby.asn1.Asn1Util;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.TaggingOption;
@@ -198,19 +200,11 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void decode(ByteBuffer content) throws IOException {
- Tag tmpTag = Asn1Util.readTag(content);
- int length = Asn1Util.readLength(content);
+ Asn1Reader1 reader = new Asn1Reader1(content);
+ Asn1Header header = reader.readHeader();
- ByteBuffer valueBuffer;
- if (length == -1) {
- valueBuffer = content;
- useDefinitiveLength(false);
- } else {
- valueBuffer = Asn1Util.dupWithLength(content, length);
- useDefinitiveLength(true);
- }
-
- decode(tmpTag, valueBuffer);
+ useDefinitiveLength(header.isDefinitiveLength());
+ decode(header.getTag(), header.getValueBuffer());
}
public void decode(Tag tag, ByteBuffer content) throws IOException {
@@ -262,19 +256,11 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void taggedDecode(ByteBuffer content,
TaggingOption taggingOption) throws IOException {
- Tag taggingTag = Asn1Util.readTag(content);
- int taggingLength = Asn1Util.readLength(content);
-
- ByteBuffer valueBuffer;
- if (taggingLength == -1) {
- valueBuffer = content;
- useDefinitiveLength(false);
- } else {
- valueBuffer = Asn1Util.dupWithLength(content, taggingLength);
- useDefinitiveLength(true);
- }
+ Asn1Reader1 reader = new Asn1Reader1(content);
+ Asn1Header header = reader.readHeader();
- taggedDecode(taggingTag, valueBuffer, taggingOption);
+ useDefinitiveLength(header.isDefinitiveLength());
+ taggedDecode(header.getTag(), header.getValueBuffer(), taggingOption);
}
protected void taggedDecode(Tag taggingTag, ByteBuffer content,
@@ -292,21 +278,17 @@ public abstract class Asn1Object implements Asn1Type {
}
}
+ public static Asn1Header readHeader(ByteBuffer content) throws IOException {
+ Asn1Reader1 reader = new Asn1Reader1(content);
+ return reader.readHeader();
+ }
+
public static Asn1Item decodeOne(ByteBuffer content) throws IOException {
- Tag tmpTag = Asn1Util.readTag(content);
- int length = Asn1Util.readLength(content);
-
- Asn1Item result;
- ByteBuffer valueBuffer;
- if (length == -1) {
- result = new Asn1Item(tmpTag);
- result.useDefinitiveLength(false);
- result.setBodyContent(content);
- } else {
- valueBuffer = Asn1Util.dupWithLength(content, length);
- result = new Asn1Item(tmpTag, valueBuffer);
- result.useDefinitiveLength(true);
- }
+ Asn1Reader1 reader = new Asn1Reader1(content);
+ Asn1Header header = reader.readHeader();
+
+ Asn1Item result = new Asn1Item(header.getTag(), header.getValueBuffer());
+ result.useDefinitiveLength(header.isDefinitiveLength());
return result;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4c7a8c44/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 5157cdc..96819b8 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
@@ -19,8 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb;
-import org.apache.kerby.asn1.Asn1Util;
+import org.apache.kerby.asn1.Asn1Header;
import org.apache.kerby.asn1.Tag;
+import org.apache.kerby.asn1.type.Asn1Object;
import org.apache.kerby.asn1.type.Asn1Type;
import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
import org.apache.kerby.kerberos.kerb.type.base.KrbError;
@@ -63,10 +64,9 @@ public class KrbCodec {
return (T) implObj;
}
- public static KrbMessage decodeMessage(ByteBuffer byteBuffer) throws IOException {
- Tag tag = Asn1Util.readTag(byteBuffer);
- int length = Asn1Util.readLength(byteBuffer);
- ByteBuffer valueBuffer = Asn1Util.dupWithLength(byteBuffer, length);
+ public static KrbMessage decodeMessage(ByteBuffer buffer) throws IOException {
+ Asn1Header header = Asn1Object.readHeader(buffer);
+ Tag tag = header.getTag();
KrbMessage msg;
KrbMessageType msgType = KrbMessageType.fromValue(tag.tagNo());
@@ -87,7 +87,7 @@ public class KrbCodec {
} else {
throw new IOException("To be supported krb message type with tag: " + tag);
}
- msg.decode(tag, valueBuffer);
+ msg.decode(tag, header.getValueBuffer());
return msg;
}
[06/26] directory-kerby git commit: ASN1. Getting rid of
LimitedByteBuffer, use ByteBuffer directly
Posted by pl...@apache.org.
ASN1. Getting rid of LimitedByteBuffer, use ByteBuffer directly
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/a74ee67a
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/a74ee67a
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/a74ee67a
Branch: refs/heads/pkinit-support
Commit: a74ee67ab49a1d7e4ac922d393ef2c3914bf305e
Parents: 8b0ef71
Author: Kai Zheng <ka...@intel.com>
Authored: Tue Dec 1 14:51:31 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Tue Dec 1 14:51:31 2015 +0800
----------------------------------------------------------------------
.../org/apache/kerby/asn1/Asn1InputBuffer.java | 44 +-----
.../apache/kerby/asn1/LimitedByteBuffer.java | 121 ----------------
.../org/apache/kerby/asn1/type/Asn1Any.java | 44 ++++--
.../apache/kerby/asn1/type/Asn1BmpString.java | 6 +-
.../org/apache/kerby/asn1/type/Asn1Boolean.java | 6 +-
.../org/apache/kerby/asn1/type/Asn1Choice.java | 5 +-
.../apache/kerby/asn1/type/Asn1Collection.java | 25 ++--
.../kerby/asn1/type/Asn1CollectionType.java | 18 ++-
.../org/apache/kerby/asn1/type/Asn1Item.java | 73 +++++-----
.../org/apache/kerby/asn1/type/Asn1Null.java | 6 +-
.../org/apache/kerby/asn1/type/Asn1Object.java | 141 +++++++++++--------
.../apache/kerby/asn1/type/Asn1OctetString.java | 6 +-
.../org/apache/kerby/asn1/type/Asn1Simple.java | 5 +-
.../org/apache/kerby/asn1/type/Asn1Tagging.java | 3 +-
.../kerby/asn1/type/TaggingCollection.java | 3 +-
.../apache/kerby/asn1/TestAsn1Collection.java | 3 +-
.../apache/kerby/kerberos/kerb/KrbCodec.java | 8 +-
.../kerby/kerberos/kerb/type/base/KrbToken.java | 11 +-
18 files changed, 215 insertions(+), 313 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/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 9d90319..62a7d75 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
@@ -32,14 +32,14 @@ import java.nio.ByteBuffer;
* and read until exhausted.
*/
public class Asn1InputBuffer {
- private final LimitedByteBuffer limitedBuffer;
+ private final ByteBuffer decodeBuffer;
/**
* Constructor with bytes.
* @param bytes The bytes
*/
public Asn1InputBuffer(byte[] bytes) {
- this(new LimitedByteBuffer(bytes));
+ this(ByteBuffer.wrap(bytes));
}
/**
@@ -47,15 +47,7 @@ public class Asn1InputBuffer {
* @param byteBuffer The byte buffer
*/
public Asn1InputBuffer(ByteBuffer byteBuffer) {
- this(new LimitedByteBuffer(byteBuffer));
- }
-
- /**
- * Constructor with LimitedByteBuffer.
- * @param limitedByteBuffer The limited byte buffer
- */
- public Asn1InputBuffer(LimitedByteBuffer limitedByteBuffer) {
- this.limitedBuffer = limitedByteBuffer;
+ this.decodeBuffer = byteBuffer;
}
/**
@@ -65,10 +57,10 @@ public class Asn1InputBuffer {
* @throws IOException e
*/
public Asn1Type read() throws IOException {
- if (!limitedBuffer.available()) {
+ if (decodeBuffer.remaining() < 1) {
return null;
}
- Asn1Item one = Asn1Object.decodeOne(limitedBuffer);
+ Asn1Item one = Asn1Object.decodeOne(decodeBuffer);
if (one.isSimple()) {
one.decodeValueAsSimple();
} else if (one.isCollection()) {
@@ -79,30 +71,4 @@ public class Asn1InputBuffer {
}
return one;
}
-
- /**
- * Read from bytes.
- *
- * @param bytes The bytes
- * @throws IOException e
- */
- public void readBytes(byte[] bytes) throws IOException {
- limitedBuffer.readBytes(bytes);
- }
-
- public byte[] readAllLeftBytes() throws IOException {
- return limitedBuffer.readAllLeftBytes();
- }
-
- public void skipNext() throws IOException {
- if (limitedBuffer.available()) {
- Asn1Object.skipOne(limitedBuffer);
- }
- }
-
- public void skipBytes(int len) throws IOException {
- if (limitedBuffer.available()) {
- limitedBuffer.skip(len);
- }
- }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/LimitedByteBuffer.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/LimitedByteBuffer.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/LimitedByteBuffer.java
deleted file mode 100644
index 2cb04ef..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/LimitedByteBuffer.java
+++ /dev/null
@@ -1,121 +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;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class LimitedByteBuffer {
- private final ByteBuffer byteBuffer;
- private final int limit;
- private int startOffset;
-
- public LimitedByteBuffer(byte[] bytes) {
- this.byteBuffer = ByteBuffer.wrap(bytes);
- this.limit = bytes.length;
- this.startOffset = 0;
- }
-
- public LimitedByteBuffer(ByteBuffer byteBuffer) {
- this(byteBuffer, byteBuffer.limit());
- }
-
- public LimitedByteBuffer(ByteBuffer byteBuffer, int limit) {
- this.byteBuffer = byteBuffer;
- this.limit = limit;
- this.startOffset = byteBuffer.position();
- }
-
- public LimitedByteBuffer(LimitedByteBuffer other, int limit) {
- if (limit > other.hasLeft()) {
- throw new IllegalArgumentException("limit is too large, out of bound");
- }
- this.byteBuffer = other.byteBuffer.duplicate();
- this.limit = limit;
- this.startOffset = byteBuffer.position();
- }
-
- public boolean available() {
- return byteBuffer.hasRemaining()
- && byteBuffer.position() - startOffset < limit;
- }
-
- public long hasRead() {
- return byteBuffer.position() - startOffset;
- }
- public long hasLeft() {
- return limit - hasRead();
- }
-
- public byte readByte() throws IOException {
- if (!available()) {
- throw new IOException("Buffer EOF");
- }
- return byteBuffer.get();
- }
-
- public byte[] readAllLeftBytes() throws IOException {
- return readBytes((int) hasLeft());
- }
-
- public void skip(int len) throws IOException {
- checkLen(len);
- int newPos = byteBuffer.position() + len;
- byteBuffer.position(newPos);
- }
-
- public byte[] readBytes(int len) throws IOException {
- checkLen(len);
-
- byte[] bytes = new byte[len];
- if (len > 0) {
- byteBuffer.get(bytes);
- }
- return bytes;
- }
-
- private void checkLen(int len) throws IOException {
- if (len < 0) {
- throw new IllegalArgumentException("Bad argument len: " + len);
- }
- if (len > 0) {
- if (!available()) {
- throw new IOException("Buffer EOF");
- }
- if (hasLeft() < len) {
- throw new IOException("Out of Buffer");
- }
- }
- }
-
- public void readBytes(byte[] bytes) throws IOException {
- if (bytes == null) {
- throw new IllegalArgumentException("Bad argument bytes: null");
- }
- if (!available()) {
- throw new IOException("Buffer EOF");
- }
- if (hasLeft() < bytes.length) {
- throw new IOException("Out of Buffer");
- }
-
- byteBuffer.get(bytes);
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/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 0506edd..617ec12 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
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
+import org.apache.kerby.asn1.Asn1FieldInfo;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
@@ -32,7 +32,8 @@ import java.nio.ByteBuffer;
* Note, this is far from complete, as most of parent methods are to override.
*/
public class Asn1Any extends AbstractAsn1Type<Asn1Type> {
- private Asn1Type field;
+ private Asn1FieldInfo fieldInfo;
+ private Asn1Item field;
public Asn1Any() {
super(UniversalTag.ANY);
@@ -44,9 +45,14 @@ public class Asn1Any extends AbstractAsn1Type<Asn1Type> {
setValue(anyValue);
}
- // For decoding phase, value may be an Asn1Item, not fully decoded.
- public void setItem(Asn1Type value) {
- this.field = value;
+ // For decoding phase, value be an Asn1Item, not fully decoded.
+ public void setField(Asn1Item field) {
+ this.field = field;
+ }
+
+ // For decoding phase.
+ public void setFieldInfo(Asn1FieldInfo fieldInfo) {
+ this.fieldInfo = fieldInfo;
}
// For decoding phase.
@@ -64,15 +70,35 @@ public class Asn1Any extends AbstractAsn1Type<Asn1Type> {
((AbstractAsn1Type<?>) getValue()).encodeBody(buffer);
}
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
+ protected void decodeBody(ByteBuffer content) throws IOException {
// Not used
}
protected <T extends Asn1Type> T getValueAs(Class<T> t) {
Asn1Type value = getValue();
- if (value == null) {
- return null;
+ if (value != null) {
+ return (T) value;
+ }
+
+ T result;
+ try {
+ result = t.newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException("No default constructor?", e);
}
- return (T) value;
+
+ try {
+ if (field.isContextSpecific()) {
+ field.decodeValueWith(result,
+ fieldInfo.getTaggingOption());
+ } else {
+ field.decodeValueWith(result);
+ }
+ } catch (IOException e) {
+ throw new RuntimeException("Fully decoding failed", e);
+ }
+
+ return result;
}
}
+
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java
index 5f1712d..c915e94 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BmpString.java
@@ -19,10 +19,10 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
+import java.nio.ByteBuffer;
public class Asn1BmpString extends Asn1Simple<String> {
public Asn1BmpString() {
@@ -61,8 +61,8 @@ public class Asn1BmpString extends Asn1Simple<String> {
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
- if (content.hasLeft() % 2 != 0) {
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ if (content.remaining() % 2 != 0) {
throw new IOException("Bad stream, BMP string expecting multiple of 2 bytes");
}
super.decodeBody(content);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
index 7b9be41..319011d 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Boolean.java
@@ -19,10 +19,10 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
+import java.nio.ByteBuffer;
/**
* ASN1 Boolean type
@@ -55,8 +55,8 @@ public class Asn1Boolean extends Asn1Simple<Boolean> {
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
- if (content.hasLeft() != 1) {
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ if (content.remaining() != 1) {
throw new IOException("More than 1 byte found for Boolean");
}
super.decodeBody(content);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/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 a2a9504..91fd54e 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
@@ -20,7 +20,6 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.TaggingOption;
import org.apache.kerby.asn1.UniversalTag;
@@ -72,7 +71,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
}
@Override
- protected void decode(LimitedByteBuffer content) throws IOException {
+ public void decode(ByteBuffer content) throws IOException {
int foundPos = -1;
Asn1Item item = decodeOne(content);
for (int i = 0; i < fieldInfos.length; ++i) {
@@ -107,7 +106,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
fields[foundPos] = item.getValue();
}
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
+ protected void decodeBody(ByteBuffer content) throws IOException {
// Not used
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
index 52c46c0..94bd2f5 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
@@ -19,7 +19,6 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.UniversalTag;
@@ -32,6 +31,7 @@ import java.util.List;
* ASN1 complex type, may be better named.
*/
public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
+ private boolean lazy = false;
public Asn1Collection(UniversalTag universalTag) {
super(universalTag);
@@ -39,6 +39,14 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
usePrimitive(false);
}
+ public void setLazy(boolean lazy) {
+ this.lazy = lazy;
+ }
+
+ public boolean isLazy() {
+ return lazy;
+ }
+
public void addItem(Asn1Type value) {
if (value instanceof Asn1Item) {
getValue().add((Asn1Item) value);
@@ -74,13 +82,14 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
- while (content.available()) {
- Asn1Type aValue = decodeOne(content);
- if (aValue != null) {
- addItem(aValue);
- } else {
- throw new RuntimeException("Unexpected running into here");
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ while (content.remaining() > 0) {
+ Asn1Item item = decodeOne(content);
+ if (item != null) {
+ if (item.isSimple() && !isLazy()) {
+ item.decodeValueAsSimple();
+ }
+ addItem(item);
}
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/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 fc45949..bd3040e 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
@@ -20,7 +20,6 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.TaggingOption;
import org.apache.kerby.asn1.UniversalTag;
@@ -76,10 +75,11 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
+ protected void decodeBody(ByteBuffer content) throws IOException {
initFields();
Asn1Collection coll = createCollection();
+ coll.setLazy(true);
coll.decode(tag(), content);
int lastPos = -1, foundPos = -1;
@@ -99,17 +99,21 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
if (foundPos == -1) {
throw new RuntimeException("Unexpected item with tag: " + item.tag());
}
+ lastPos = foundPos;
- if (!item.isFullyDecoded()) {
- AbstractAsn1Type<?> fieldValue = (AbstractAsn1Type<?>) fields[foundPos];
+ AbstractAsn1Type<?> fieldValue = (AbstractAsn1Type<?>) fields[foundPos];
+ if (fieldValue instanceof Asn1Any) {
+ Asn1Any any = (Asn1Any) fieldValue;
+ any.setField(item);
+ any.setFieldInfo(fieldInfos[foundPos]);
+ } else {
if (item.isContextSpecific()) {
- item.decodeValueWith(fieldValue, fieldInfos[foundPos].getTaggingOption());
+ item.decodeValueWith(fieldValue,
+ fieldInfos[foundPos].getTaggingOption());
} else {
item.decodeValueWith(fieldValue);
}
}
- fields[foundPos] = item.getValue();
- lastPos = foundPos;
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
index a7924d8..efd0673 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
@@ -20,7 +20,6 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1Factory;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.TaggingOption;
@@ -30,28 +29,40 @@ import java.nio.ByteBuffer;
/**
* Asn1Item serves two purposes:
* 1. Wrapping an existing Asn1Type value for Asn1Collection;
- * 2. Wrapping a half decoded value whose body content is left to be decoded later when appropriate.
- * Why not fully decoded at once? Lazy and decode on demand for collection, or impossible due to lacking
- * key parameters, like implicit encoded value for tagged value.
+ * 2. Wrapping a half decoded value whose body content is left to be decoded
+ * later when appropriate.
+ * Why not fully decoded at once? Lazy and decode on demand for collection, or
+ * impossible due to lacking key parameters, like implicit encoded value for
+ * tagged value.
*
- * For not fully decoded value, you tell your case using isSimple/isCollection/isTagged/isContextSpecific etc.,
- * then call decodeValueAsSimple/decodeValueAsCollection/decodeValueAsImplicitTagged/decodeValueAsExplicitTagged etc.
- * to decode it fully. Or if you have already derived the value holder or the holder type, you can use decodeValueWith
- * or decodeValueAs with your holder or hodler type.
+ * For not fully decoded value, you tell your case using isSimple/isCollection/
+ * isTagged/isContextSpecific etc., then call decodeValueAsSimple/
+ * decodeValueAsCollection/decodeValueAsImplicitTagged/decodeValueAsExplicitTagged etc.
+ * to decode it fully. Or if you have already derived the value holder or
+ * the holder type, you can use decodeValueWith or decodeValueAs with your
+ * holder or hodler type.
*/
public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
- private LimitedByteBuffer bodyContent;
+ private ByteBuffer bodyContent;
public Asn1Item(Asn1Type value) {
super(value.tag(), value);
}
- public Asn1Item(Tag tag, LimitedByteBuffer bodyContent) {
+ public Asn1Item(Tag tag) {
super(tag);
+ }
+
+ public Asn1Item(Tag tag, ByteBuffer bodyContent) {
+ super(tag);
+ this.bodyContent = bodyContent;
+ }
+
+ public void setBodyContent(ByteBuffer bodyContent) {
this.bodyContent = bodyContent;
}
- public LimitedByteBuffer getBodyContent() {
+ public ByteBuffer getBodyContent() {
return bodyContent;
}
@@ -60,24 +71,18 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
if (getValue() != null) {
return ((AbstractAsn1Type<?>) getValue()).encodingBodyLength();
}
- return (int) bodyContent.hasLeft();
+ return (int) bodyContent.remaining();
}
@Override
protected void encodeBody(ByteBuffer buffer) {
if (getValue() != null) {
- ((AbstractAsn1Type<?>) getValue()).encodeBody(buffer);
- } else {
- try {
- buffer.put(bodyContent.readAllLeftBytes());
- } catch (IOException e) {
- throw new RuntimeException("Failed to read all left bytes from body content", e);
- }
+ ((Asn1Object) getValue()).encodeBody(buffer);
}
}
@Override
- protected void decodeBody(LimitedByteBuffer bodyContent) throws IOException {
+ protected void decodeBody(ByteBuffer bodyContent) throws IOException {
this.bodyContent = bodyContent;
}
@@ -90,10 +95,12 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
return;
}
if (!isSimple()) {
- throw new IllegalArgumentException("Attempting to decode non-simple value as simple");
+ throw new IllegalArgumentException(
+ "Attempting to decode non-simple value as simple");
}
- Asn1Type value = Asn1Factory.create(tagNo());
+ Asn1Object value = (Asn1Object) Asn1Factory.create(tagNo());
+ value.useDefinitiveLength(isDefinitiveLength());
decodeValueWith(value);
}
@@ -102,10 +109,12 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
return;
}
if (!isCollection()) {
- throw new IllegalArgumentException("Attempting to decode non-collection value as collection");
+ throw new IllegalArgumentException(
+ "Attempting to decode non-collection value as collection");
}
Asn1Type value = Asn1Factory.create(tagNo());
+ value.useDefinitiveLength(isDefinitiveLength());
decodeValueWith(value);
}
@@ -114,30 +123,24 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
try {
value = type.newInstance();
} catch (Exception e) {
- throw new RuntimeException("Invalid type: " + type.getCanonicalName(), e);
+ throw new RuntimeException("Invalid type: "
+ + type.getCanonicalName(), e);
}
decodeValueWith(value);
}
public void decodeValueWith(Asn1Type value) throws IOException {
setValue(value);
+ value.useDefinitiveLength(isDefinitiveLength());
((AbstractAsn1Type<?>) value).decode(tag(), bodyContent);
}
- private void decodeValueWith(Asn1Item taggedValue) throws IOException {
- taggedValue.decodeValueAsSimple();
- if (taggedValue.isFullyDecoded()) {
- setValue(taggedValue.getValue());
- } else {
- setValue(taggedValue);
- }
- }
-
public void decodeValueWith(Asn1Type value, TaggingOption taggingOption) throws IOException {
if (!isTagged()) {
- throw new IllegalArgumentException("Attempting to decode non-tagged value using tagging way");
+ throw new IllegalArgumentException(
+ "Attempting to decode non-tagged value using tagging way");
}
- ((AbstractAsn1Type<?>) value).taggedDecode(tag(), getBodyContent(), taggingOption);
+ ((Asn1Object) value).taggedDecode(tag(), getBodyContent(), taggingOption);
setValue(value);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java
index 8574061..371553d 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java
@@ -19,10 +19,10 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
+import java.nio.ByteBuffer;
/**
* The Asn1 Null type
@@ -46,8 +46,8 @@ public class Asn1Null extends Asn1Simple<Object> {
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
- if (content.hasLeft() != 0) {
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ if (content.remaining() != 0) {
throw new IOException("Unexpected bytes found for NULL");
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/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
index aa9ebe2..71d3af0 100644
--- 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
@@ -19,7 +19,6 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.TaggingOption;
import org.apache.kerby.asn1.UniversalTag;
@@ -157,12 +156,7 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void decode(byte[] content) throws IOException {
- decode(new LimitedByteBuffer(content));
- }
-
- @Override
- public void decode(ByteBuffer content) throws IOException {
- decode(new LimitedByteBuffer(content));
+ decode(ByteBuffer.wrap(content));
}
@Override
@@ -201,14 +195,24 @@ public abstract class Asn1Object implements Asn1Type {
protected abstract int encodingBodyLength();
- protected void decode(LimitedByteBuffer content) throws IOException {
+ @Override
+ public void decode(ByteBuffer content) throws IOException {
Tag tmpTag = readTag(content);
int length = readLength(content);
- decode(tmpTag, new LimitedByteBuffer(content, length));
+ ByteBuffer valueBuffer;
+ if (length == -1) {
+ valueBuffer = content;
+ useDefinitiveLength(false);
+ } else {
+ valueBuffer = dupWithLength(content, length);
+ useDefinitiveLength(true);
+ }
+
+ decode(tmpTag, valueBuffer);
}
- public void decode(Tag tag, LimitedByteBuffer content) throws IOException {
+ public void decode(Tag tag, ByteBuffer content) throws IOException {
if (!tag().equals(tag)) {
throw new IOException("Unexpected tag " + tag
+ ", expecting " + tag());
@@ -217,7 +221,7 @@ public abstract class Asn1Object implements Asn1Type {
decodeBody(content);
}
- protected abstract void decodeBody(LimitedByteBuffer content) throws IOException;
+ protected abstract void decodeBody(ByteBuffer content) throws IOException;
protected int taggedEncodingLength(TaggingOption taggingOption) {
int taggingTagNo = taggingOption.getTagNo();
@@ -257,20 +261,22 @@ public abstract class Asn1Object implements Asn1Type {
@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 {
Tag taggingTag = readTag(content);
int taggingLength = readLength(content);
- LimitedByteBuffer newContent = new LimitedByteBuffer(content, taggingLength);
- taggedDecode(taggingTag, newContent, taggingOption);
+ ByteBuffer valueBuffer;
+ if (taggingLength == -1) {
+ valueBuffer = content;
+ useDefinitiveLength(false);
+ } else {
+ valueBuffer = dupWithLength(content, taggingLength);
+ useDefinitiveLength(true);
+ }
+
+ taggedDecode(taggingTag, valueBuffer, taggingOption);
}
- protected void taggedDecode(Tag taggingTag, LimitedByteBuffer content,
+ protected void taggedDecode(Tag taggingTag, ByteBuffer content,
TaggingOption taggingOption) throws IOException {
Tag expectedTaggingTagFlags = taggingOption.getTag(!isPrimitive());
if (!expectedTaggingTagFlags.equals(taggingTag)) {
@@ -285,29 +291,23 @@ public abstract class Asn1Object implements Asn1Type {
}
}
- public static Asn1Item decodeOne(LimitedByteBuffer content) throws IOException {
+ public static Asn1Item decodeOne(ByteBuffer content) throws IOException {
Tag tmpTag = readTag(content);
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(tmpTag, valueContent);
- if (result.isSimple()) {
- result.decodeValueAsSimple();
+ Asn1Item result;
+ ByteBuffer valueBuffer;
+ if (length == -1) {
+ result = new Asn1Item(tmpTag);
+ result.useDefinitiveLength(false);
+ result.setBodyContent(content);
+ } else {
+ valueBuffer = dupWithLength(content, length);
+ result = new Asn1Item(tmpTag, valueBuffer);
+ result.useDefinitiveLength(true);
}
- return result;
- }
- public static void skipOne(LimitedByteBuffer content) throws IOException {
- readTag(content);
- int length = readLength(content);
- if (length < 0) {
- throw new IOException("Unexpected length");
- }
- content.skip(length);
+ return result;
}
public static int lengthOfBodyLength(int bodyLength) {
@@ -389,27 +389,27 @@ public abstract class Asn1Object implements Asn1Type {
}
}
- public static Tag readTag(LimitedByteBuffer buffer) throws IOException {
+ public static Tag readTag(ByteBuffer buffer) throws IOException {
int tagFlags = readTagFlags(buffer);
int tagNo = readTagNo(buffer, tagFlags);
return new Tag(tagFlags, tagNo);
}
- private static int readTagFlags(LimitedByteBuffer buffer) throws IOException {
- int tagFlags = buffer.readByte() & 0xff;
+ private static int readTagFlags(ByteBuffer buffer) throws IOException {
+ int tagFlags = buffer.get() & 0xff;
if (tagFlags == 0) {
throw new IOException("Bad tag 0 found");
}
return tagFlags;
}
- private static int readTagNo(LimitedByteBuffer buffer, int tagFlags) throws IOException {
+ private static int readTagNo(ByteBuffer buffer, int tagFlags) throws IOException {
int tagNo = tagFlags & 0x1f;
if (tagNo == 0x1f) {
tagNo = 0;
- int b = buffer.readByte() & 0xff;
+ int b = buffer.get() & 0xff;
if ((b & 0x7f) == 0) {
throw new IOException("Invalid high tag number found");
}
@@ -417,7 +417,7 @@ public abstract class Asn1Object implements Asn1Type {
while (b >= 0 && (b & 0x80) != 0) {
tagNo |= b & 0x7f;
tagNo <<= 7;
- b = buffer.readByte();
+ b = buffer.get();
}
tagNo |= b & 0x7f;
@@ -426,31 +426,52 @@ public abstract class Asn1Object implements Asn1Type {
return tagNo;
}
- public static int readLength(LimitedByteBuffer buffer) throws IOException {
- int bodyLength = buffer.readByte() & 0xff;
+ public static int readLength(ByteBuffer buffer) throws IOException {
+ int result = buffer.get() & 0xff;
+ if (result == 0x80) {
+ return -1; // non-definitive length
+ }
- if (bodyLength > 127) {
- int length = bodyLength & 0x7f;
+ if (result > 127) {
+ int length = result & 0x7f;
if (length > 4) {
- throw new IOException("Bad bodyLength of more than 4 bytes: " + length);
+ throw new IOException("Bad length of more than 4 bytes: " + length);
}
- bodyLength = 0;
+ result = 0;
int tmp;
for (int i = 0; i < length; i++) {
- tmp = buffer.readByte() & 0xff;
- bodyLength = (bodyLength << 8) + tmp;
+ tmp = buffer.get() & 0xff;
+ result = (result << 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);
- }
+ if (result < 0) {
+ throw new IOException("Invalid length " + result);
}
- return bodyLength;
+ if (result > buffer.remaining()) {
+ throw new IOException("Corrupt stream - less data "
+ + buffer.remaining() + " than expected " + result);
+ }
+
+ return result;
+ }
+
+ public static ByteBuffer dupWithLength(ByteBuffer buffer, int length) {
+ try {
+ ByteBuffer result = buffer.duplicate();
+ result.limit(buffer.position() + length);
+ buffer.position(buffer.position() + length);
+ return result;
+ } catch (Exception e) {
+ throw e;
+ }
+ }
+
+ protected static byte[] readAllLeftBytes(ByteBuffer buffer) {
+ byte[] result = new byte[buffer.remaining()];
+ buffer.get(result);
+ return result;
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
index 72d5c70..9271fea 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
@@ -19,10 +19,10 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
+import java.nio.ByteBuffer;
public class Asn1OctetString extends Asn1Simple<byte[]> {
public Asn1OctetString() {
@@ -44,7 +44,7 @@ public class Asn1OctetString extends Asn1Simple<byte[]> {
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
- setValue(content.readAllLeftBytes());
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ setValue(readAllLeftBytes(content));
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
index 2f15daf..714e230 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
@@ -19,7 +19,6 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.UniversalTag;
@@ -92,8 +91,8 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
- byte[] leftBytes = content.readAllLeftBytes();
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ byte[] leftBytes = readAllLeftBytes(content);
if (leftBytes.length > 0) {
setBytes(leftBytes);
toValue();
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
index b808b3e..b7ad9d4 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
@@ -19,7 +19,6 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.Tag;
import java.io.IOException;
@@ -78,7 +77,7 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
+ protected void decodeBody(ByteBuffer content) throws IOException {
AbstractAsn1Type<?> value = (AbstractAsn1Type<?>) getValue();
if (isImplicit()) {
value.decodeBody(content);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/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 90f95c1..b6086b8 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
@@ -20,7 +20,6 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.Tag;
import java.io.IOException;
@@ -131,7 +130,7 @@ public abstract class TaggingCollection extends AbstractAsn1Type<Asn1CollectionT
}
@Override
- protected void decodeBody(LimitedByteBuffer content) throws IOException {
+ protected void decodeBody(ByteBuffer content) throws IOException {
tagging.decodeBody(content);
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
index d7210fe..f1cd35c 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
@@ -50,7 +50,8 @@ public class TestAsn1Collection {
public void testSequenceDecoding() throws IOException {
Asn1Sequence seq = new Asn1Sequence();
seq.decode(EXPECTED_BYTES);
- AbstractAsn1Type<?> field = (AbstractAsn1Type<?>) seq.getValue().get(0).getValue();
+ AbstractAsn1Type<?> field =
+ (AbstractAsn1Type<?>) seq.getValue().get(0).getValue();
assertThat(field.getValue()).isEqualTo(TEST_STR);
field = (AbstractAsn1Type<?>) seq.getValue().get(1).getValue();
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/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 6db67de..2197a6a 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
@@ -19,7 +19,6 @@
*/
package org.apache.kerby.kerberos.kerb;
-import org.apache.kerby.asn1.LimitedByteBuffer;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.type.Asn1Object;
import org.apache.kerby.asn1.type.Asn1Type;
@@ -65,10 +64,9 @@ public class KrbCodec {
}
public static KrbMessage decodeMessage(ByteBuffer byteBuffer) throws IOException {
- LimitedByteBuffer limitedBuffer = new LimitedByteBuffer(byteBuffer);
- Tag tag = Asn1Object.readTag(limitedBuffer);
- int length = Asn1Object.readLength(limitedBuffer);
- LimitedByteBuffer valueBuffer = new LimitedByteBuffer(limitedBuffer, length);
+ Tag tag = Asn1Object.readTag(byteBuffer);
+ int length = Asn1Object.readLength(byteBuffer);
+ ByteBuffer valueBuffer = Asn1Object.dupWithLength(byteBuffer, length);
KrbMessage msg;
KrbMessageType msgType = KrbMessageType.fromValue(tag.tagNo());
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/a74ee67a/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
index f5910ca..c2b8b76 100644
--- 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
@@ -20,9 +20,9 @@
package org.apache.kerby.kerberos.kerb.type.base;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.ExplicitField;
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;
@@ -30,8 +30,6 @@ 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;
@@ -95,12 +93,13 @@ public class KrbToken extends KrbSequenceType implements AuthToken {
/**
* {@inheritDoc}
*/
+ /*
@Override
public void decode(ByteBuffer content) throws IOException {
super.decode(content);
this.innerToken = getTokenDecoder().decodeFromBytes(getTokenValue());
setTokenType();
- }
+ }*/
/**
* Set token type.
@@ -118,7 +117,7 @@ public class KrbToken extends KrbSequenceType implements AuthToken {
* Get token encoder.
* @return The token encoder
*/
- private static TokenEncoder getTokenEncoder() {
+ protected static TokenEncoder getTokenEncoder() {
if (tokenEncoder == null) {
tokenEncoder = KrbRuntime.getTokenProvider().createTokenEncoder();
}
@@ -129,7 +128,7 @@ public class KrbToken extends KrbSequenceType implements AuthToken {
* Get token decoder.
* @return The token decoder
*/
- private static TokenDecoder getTokenDecoder() {
+ protected static TokenDecoder getTokenDecoder() {
if (tokenDecoder == null) {
tokenDecoder = KrbRuntime.getTokenProvider().createTokenDecoder();
}
[12/26] directory-kerby git commit: DIRKRB-486. Initial work for the
support, introducing toStr() method
Posted by pl...@apache.org.
DIRKRB-486. Initial work for the support, introducing toStr() method
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/e3197ce2
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/e3197ce2
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/e3197ce2
Branch: refs/heads/pkinit-support
Commit: e3197ce25452f6fd34e8cfec1fdf232964c9397f
Parents: 1d93856
Author: Kai Zheng <ka...@intel.com>
Authored: Thu Dec 3 09:11:16 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Thu Dec 3 09:11:16 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kerby/asn1/type/AbstractAsn1Type.java | 5 +++++
.../src/main/java/org/apache/kerby/asn1/type/Asn1Any.java | 5 +++++
.../main/java/org/apache/kerby/asn1/type/Asn1BitString.java | 7 +++++++
.../src/main/java/org/apache/kerby/asn1/type/Asn1Choice.java | 5 +++++
.../java/org/apache/kerby/asn1/type/Asn1CollectionType.java | 5 +++++
.../main/java/org/apache/kerby/asn1/type/Asn1Constructed.java | 5 +++++
.../src/main/java/org/apache/kerby/asn1/type/Asn1Item.java | 5 +++++
.../main/java/org/apache/kerby/asn1/type/Asn1OctetString.java | 7 +++++++
.../src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java | 7 +++++++
.../src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java | 5 +++++
.../src/main/java/org/apache/kerby/asn1/type/Asn1Type.java | 7 +++++++
.../java/org/apache/kerby/asn1/type/TaggingCollection.java | 5 +++++
12 files changed, 68 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/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 b12c67d..df8ceef 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
@@ -75,4 +75,9 @@ public abstract class AbstractAsn1Type<T> extends Asn1Object {
public void setValue(T value) {
this.value = value;
}
+
+ @Override
+ public String toString() {
+ return toStr();
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/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 617ec12..efcd9a1 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
@@ -100,5 +100,10 @@ public class Asn1Any extends AbstractAsn1Type<Asn1Type> {
return result;
}
+
+ @Override
+ public String toStr() {
+ return "any";
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java
index 7d26be3..2ba95b9 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java
@@ -82,4 +82,11 @@ public class Asn1BitString extends Asn1Simple<byte[]> {
throw new IOException("Bad padding number: " + paddingBits + ", should be in [0, 7]");
}
}
+
+ @Override
+ public String toStr() {
+ String valueStr =
+ (getValue() != null ? (getValue().length + " bytes") : "null");
+ return valueStr;
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/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 91fd54e..aecfaf0 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
@@ -167,4 +167,9 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
protected void setFieldAsInt(int index, int value) {
setFieldAs(index, new Asn1Integer(value));
}
+
+ @Override
+ public String toStr() {
+ return "choice";
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/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 3226441..6b5d312 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
@@ -195,4 +195,9 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
setFieldAs(index, new Asn1Any(value));
}
}
+
+ @Override
+ public String toStr() {
+ return "[collection-type]";
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
index 46cb6c6..4a7d904 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
@@ -90,4 +90,9 @@ public class Asn1Constructed extends AbstractAsn1Type<List<Asn1Type>> {
}
}
}
+
+ @Override
+ public String toStr() {
+ return "[constructed]";
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
index efd0673..c011141 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
@@ -143,4 +143,9 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
((Asn1Object) value).taggedDecode(tag(), getBodyContent(), taggingOption);
setValue(value);
}
+
+ @Override
+ public String toStr() {
+ return "item";
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
index 6523cf7..c7b89f9 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
@@ -48,4 +48,11 @@ public class Asn1OctetString extends Asn1Simple<byte[]> {
protected void decodeBody(ByteBuffer content) throws IOException {
setValue(Asn1Util.readAllLeftBytes(content));
}
+
+ @Override
+ public String toStr() {
+ String valueStr =
+ (getValue() != null ? (getValue().length + " octets") : "null");
+ return valueStr;
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
index d55fb7a..81f6e57 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
@@ -201,4 +201,11 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
throw new IllegalArgumentException("Unexpected tag " + tagNo.getValue());
}
}
+
+ @Override
+ public String toStr() {
+ String valueStr =
+ (getValue() != null ? String.valueOf(getValue()) : "null");
+ return valueStr;
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
index b7ad9d4..8dd4511 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
@@ -97,4 +97,9 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
}
setValue((T) value);
}
+
+ @Override
+ public String toStr() {
+ return "tagging";
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
index 4c1c538..c272915 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
@@ -186,4 +186,11 @@ public interface Asn1Type {
* @throws IOException e
*/
void taggedDecode(byte[] content, TaggingOption taggingOption) throws IOException;
+
+ /**
+ * Return a friendly string representation for this object. In primitive
+ * cases, it may be the same with toString().
+ * @return a friendly string representation
+ */
+ String toStr();
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e3197ce2/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 b6086b8..cb721ff 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
@@ -169,4 +169,9 @@ public abstract class TaggingCollection extends AbstractAsn1Type<Asn1CollectionT
protected void setFieldAsOctetBytes(int index, byte[] value) {
tagged.setFieldAsOctets(index, value);
}
+
+ @Override
+ public String toStr() {
+ return "[tagging-collection]";
+ }
}
[11/26] directory-kerby git commit: ASN1. Introduced Asn1Constructed
for support of some primitive types using constructed encoding
Posted by pl...@apache.org.
ASN1. Introduced Asn1Constructed for support of some primitive types using constructed encoding
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/1d938561
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/1d938561
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/1d938561
Branch: refs/heads/pkinit-support
Commit: 1d9385611873e4fd9e6da9296c0fddfdb2a4115a
Parents: 949104f
Author: Kai Zheng <ka...@intel.com>
Authored: Tue Dec 1 21:32:54 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Tue Dec 1 21:32:54 2015 +0800
----------------------------------------------------------------------
.../apache/kerby/asn1/type/Asn1Collection.java | 66 +-------------
.../apache/kerby/asn1/type/Asn1Constructed.java | 93 ++++++++++++++++++++
2 files changed, 95 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d938561/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
index 3bbb770..a4d6560 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
@@ -22,74 +22,13 @@ package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.UniversalTag;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* ASN1 complex type, may be better named.
*/
-public class Asn1Collection extends AbstractAsn1Type<List<Asn1Type>> {
- private boolean lazy = false;
+public class Asn1Collection extends Asn1Constructed {
public Asn1Collection(UniversalTag universalTag) {
- super(universalTag);
- setValue(new ArrayList<Asn1Type>());
- usePrimitive(false);
- }
-
- public void setLazy(boolean lazy) {
- this.lazy = lazy;
- }
-
- public boolean isLazy() {
- return lazy;
- }
-
- public void addItem(Asn1Type value) {
- getValue().add(value);
- }
-
- public void clear() {
- getValue().clear();
- }
-
- @Override
- protected int encodingBodyLength() {
- List<Asn1Type> valueItems = getValue();
- int allLen = 0;
- for (Asn1Type item : valueItems) {
- if (item != null) {
- allLen += item.encodingLength();
- }
- }
- return allLen;
- }
-
- @Override
- protected void encodeBody(ByteBuffer buffer) {
- List<Asn1Type> valueItems = getValue();
- for (Asn1Type item : valueItems) {
- if (item != null) {
- item.encode(buffer);
- }
- }
- }
-
- @Override
- protected void decodeBody(ByteBuffer content) throws IOException {
- while (content.remaining() > 0) {
- Asn1Item item = decodeOne(content);
- if (item != null) {
- if (item.isSimple() && !isLazy()) {
- item.decodeValueAsSimple();
- addItem(item.getValue());
- } else {
- addItem(item);
- }
- }
- }
+ super(new Tag(universalTag));
}
public static boolean isCollection(Tag tag) {
@@ -137,5 +76,4 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Type>> {
throw new IllegalArgumentException("Unexpected tag " + tagNo.getValue());
}
}
-
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d938561/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
new file mode 100644
index 0000000..46cb6c6
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
@@ -0,0 +1,93 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.Tag;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * ASN1 constructed types, mainly structured ones, but also some primitive ones.
+ */
+public class Asn1Constructed extends AbstractAsn1Type<List<Asn1Type>> {
+ private boolean lazy = false;
+
+ public Asn1Constructed(Tag tag) {
+ super(tag);
+ setValue(new ArrayList<Asn1Type>());
+ usePrimitive(false);
+ }
+
+ public void setLazy(boolean lazy) {
+ this.lazy = lazy;
+ }
+
+ public boolean isLazy() {
+ return lazy;
+ }
+
+ public void addItem(Asn1Type value) {
+ getValue().add(value);
+ }
+
+ public void clear() {
+ getValue().clear();
+ }
+
+ @Override
+ protected int encodingBodyLength() {
+ List<Asn1Type> valueItems = getValue();
+ int allLen = 0;
+ for (Asn1Type item : valueItems) {
+ if (item != null) {
+ allLen += item.encodingLength();
+ }
+ }
+ return allLen;
+ }
+
+ @Override
+ protected void encodeBody(ByteBuffer buffer) {
+ List<Asn1Type> valueItems = getValue();
+ for (Asn1Type item : valueItems) {
+ if (item != null) {
+ item.encode(buffer);
+ }
+ }
+ }
+
+ @Override
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ while (content.remaining() > 0) {
+ Asn1Item item = decodeOne(content);
+ if (item != null) {
+ if (item.isSimple() && !isLazy()) {
+ item.decodeValueAsSimple();
+ addItem(item.getValue());
+ } else {
+ addItem(item);
+ }
+ }
+ }
+ }
+}
[13/26] directory-kerby git commit: Renamed Asn1EnumType.
Posted by pl...@apache.org.
Renamed Asn1EnumType.
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/597995d4
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/597995d4
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/597995d4
Branch: refs/heads/pkinit-support
Commit: 597995d427163401710361fe1e1a79e6a06b572b
Parents: e3197ce
Author: Kai Zheng <ka...@intel.com>
Authored: Thu Dec 3 10:20:47 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Thu Dec 3 10:20:47 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kerby/asn1/EnumType.java | 27 ++++++++++++++++++++
.../apache/kerby/asn1/type/Asn1EnumType.java | 27 --------------------
.../apache/kerby/asn1/type/Asn1Enumerated.java | 9 ++++---
.../org/apache/kerby/asn1/type/Asn1Flags.java | 10 +++++---
.../org/apache/kerby/asn1/TestAsn1Flags.java | 3 +--
.../kerby/kerberos/kerb/preauth/PaFlag.java | 6 ++---
.../kerby/kerberos/kerb/KrbErrorCode.java | 6 ++---
.../kerberos/kerb/type/KrbAppSequenceType.java | 4 +--
.../kerberos/kerb/type/KrbSequenceType.java | 4 +--
.../kerb/type/ad/AuthorizationType.java | 6 ++---
.../kerby/kerberos/kerb/type/ap/ApOption.java | 6 ++---
.../kerberos/kerb/type/base/CheckSumType.java | 6 ++---
.../kerberos/kerb/type/base/EncryptionType.java | 6 ++---
.../kerberos/kerb/type/base/HostAddrType.java | 6 ++---
.../kerby/kerberos/kerb/type/base/KeyUsage.java | 6 ++---
.../kerberos/kerb/type/base/KrbMessageType.java | 6 ++---
.../kerberos/kerb/type/base/LastReqType.java | 6 ++---
.../kerby/kerberos/kerb/type/base/NameType.java | 6 ++---
.../kerby/kerberos/kerb/type/base/SamType.java | 4 +--
.../kerberos/kerb/type/base/TokenFormat.java | 6 ++---
.../kerb/type/base/TransitedEncodingType.java | 6 ++---
.../kerberos/kerb/type/fast/ArmorType.java | 6 ++---
.../kerberos/kerb/type/fast/FastOption.java | 6 ++---
.../kerby/kerberos/kerb/type/kdc/KdcOption.java | 6 ++---
.../kerby/kerberos/kerb/type/pa/PaDataType.java | 6 ++---
.../kerberos/kerb/type/pa/token/TokenFlag.java | 6 ++---
.../kerberos/kerb/type/ticket/TicketFlag.java | 6 ++---
.../org/apache/kerby/cms/type/CmsVersion.java | 4 +--
.../org/apache/kerby/x509/type/CRLReason.java | 6 ++---
.../kerby/x509/type/DigestedObjectType.java | 6 ++---
.../org/apache/kerby/x509/type/KeyUsage.java | 4 +--
.../org/apache/kerby/x509/type/ReasonFlags.java | 4 +--
32 files changed, 114 insertions(+), 112 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java
new file mode 100644
index 0000000..ff9cd23
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java
@@ -0,0 +1,27 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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;
+
+/**
+ * A helper interface used by Asn1Enumerated.
+ */
+public interface EnumType {
+ int getValue();
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1EnumType.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1EnumType.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1EnumType.java
deleted file mode 100644
index 7210aee..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1EnumType.java
+++ /dev/null
@@ -1,27 +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;
-
-/**
- * A helper interface used by Asn1Enumerated.
- */
-public interface Asn1EnumType {
- int getValue();
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Enumerated.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Enumerated.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Enumerated.java
index 8dc4b4a..223fc97 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Enumerated.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Enumerated.java
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
@@ -27,7 +28,7 @@ import java.math.BigInteger;
/**
* The ASN1 enumerated type
*/
-public abstract class Asn1Enumerated<T extends Asn1EnumType> extends Asn1Simple<T> {
+public abstract class Asn1Enumerated<T extends EnumType> extends Asn1Simple<T> {
/**
* Default constructor, generally for decoding as a container
@@ -52,13 +53,13 @@ public abstract class Asn1Enumerated<T extends Asn1EnumType> extends Asn1Simple<
protected void toValue() throws IOException {
BigInteger biVal = new BigInteger(getBytes());
int iVal = biVal.intValue();
- Asn1EnumType[] allValues = getAllEnumValues();
- for (Asn1EnumType val : allValues) {
+ EnumType[] allValues = getAllEnumValues();
+ for (EnumType val : allValues) {
if (val.getValue() == iVal) {
setValue((T) val);
}
}
}
- protected abstract Asn1EnumType[] getAllEnumValues();
+ protected abstract EnumType[] getAllEnumValues();
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Flags.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Flags.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Flags.java
index 9c219df..f11d6df 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Flags.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Flags.java
@@ -19,6 +19,8 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.EnumType;
+
import java.io.IOException;
/**
@@ -81,15 +83,15 @@ public class Asn1Flags extends Asn1BitString {
setFlags(0);
}
- public boolean isFlagSet(Asn1EnumType flag) {
+ public boolean isFlagSet(EnumType flag) {
return isFlagSet(flag.getValue());
}
- public void setFlag(Asn1EnumType flag) {
+ public void setFlag(EnumType flag) {
setFlag(flag.getValue());
}
- public void setFlag(Asn1EnumType flag, boolean isSet) {
+ public void setFlag(EnumType flag, boolean isSet) {
if (isSet) {
setFlag(flag.getValue());
} else {
@@ -97,7 +99,7 @@ public class Asn1Flags extends Asn1BitString {
}
}
- public void clearFlag(Asn1EnumType flag) {
+ public void clearFlag(EnumType flag) {
clearFlag(flag.getValue());
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
index ef70a69..1c3ce80 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
@@ -19,7 +19,6 @@
*/
package org.apache.kerby.asn1;
-import org.apache.kerby.asn1.type.Asn1EnumType;
import org.apache.kerby.asn1.type.Asn1Flags;
import org.junit.Before;
import org.junit.Rule;
@@ -41,7 +40,7 @@ public class TestAsn1Flags {
public static final int FLAG_4 = 16;
public static final int FLAG_5 = 32;
- public enum TestEnum implements Asn1EnumType {
+ public enum TestEnum implements EnumType {
FLAG_0(0x00000001),
FLAG_1(0x00000002),
FLAG_2(0x00000004),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java
index f67ab90..4d75546 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.preauth;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum PaFlag implements Asn1EnumType {
+public enum PaFlag implements EnumType {
NONE(-1),
PA_REAL(0x01),
PA_INFO(0x02);
@@ -38,7 +38,7 @@ public enum PaFlag implements Asn1EnumType {
}
public static PaFlag fromValue(int value) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (PaFlag) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java
index 33b0689..3ab9871 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum KrbErrorCode implements Asn1EnumType {
+public enum KrbErrorCode implements EnumType {
KDC_ERR_NONE(0, "No error"),
KDC_ERR_NAME_EXP(1, "Client's entry in database has expired"),
KDC_ERR_SERVICE_EXP(2, "Server's entry in database has expired"),
@@ -108,7 +108,7 @@ public enum KrbErrorCode implements Asn1EnumType {
public static KrbErrorCode fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (KrbErrorCode) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 8de28e0..a4178a3 100644
--- 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
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.kerberos.kerb.type;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.Asn1FieldInfo;
import org.apache.kerby.asn1.type.TaggingSequence;
@@ -51,7 +51,7 @@ public abstract class KrbAppSequenceType extends TaggingSequence {
setFieldAs(index, new KerberosTime(value));
}
- protected void setField(int index, Asn1EnumType krbEnum) {
+ protected void setField(int index, EnumType krbEnum) {
setFieldAsInt(index, krbEnum.getValue());
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 3ff278d..bf655b2 100644
--- 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
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.kerberos.kerb.type;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.Asn1FieldInfo;
import org.apache.kerby.asn1.type.Asn1SequenceType;
@@ -49,7 +49,7 @@ public abstract class KrbSequenceType extends Asn1SequenceType {
setFieldAs(index, new KerberosTime(value));
}
- protected void setField(int index, Asn1EnumType value) {
+ protected void setField(int index, EnumType value) {
setFieldAsInt(index, value.getValue());
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 979fc13..895535f 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.ad;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum AuthorizationType implements Asn1EnumType {
+public enum AuthorizationType implements EnumType {
/**
* Constant for the "null" authorization type.
*/
@@ -131,7 +131,7 @@ public enum AuthorizationType implements Asn1EnumType {
public static AuthorizationType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (AuthorizationType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 9676c2f..8dd61a5 100644
--- 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
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.kerberos.kerb.type.ap;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
/**
APOptions ::= KrbFlags
@@ -27,7 +27,7 @@ import org.apache.kerby.asn1.type.Asn1EnumType;
-- use-session-key(1),
-- mutual-required(2)
*/
-public enum ApOption implements Asn1EnumType {
+public enum ApOption implements EnumType {
NONE(-1),
RESERVED(0x80000000),
USE_SESSION_KEY(0x40000000),
@@ -47,7 +47,7 @@ public enum ApOption implements Asn1EnumType {
}
public static ApOption fromValue(int value) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (ApOption) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index d52093e..1758f1a 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum CheckSumType implements Asn1EnumType {
+public enum CheckSumType implements EnumType {
NONE(0, "none", "None checksum type"),
CRC32(0x0001, "crc32", "CRC-32"),
@@ -80,7 +80,7 @@ public enum CheckSumType implements Asn1EnumType {
public static CheckSumType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (CheckSumType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 0154d55..29c4c23 100644
--- 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
@@ -19,12 +19,12 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
/**
* According to krb5.hin
*/
-public enum EncryptionType implements Asn1EnumType {
+public enum EncryptionType implements EnumType {
NONE(0, "none", "None encryption type"),
@@ -118,7 +118,7 @@ public enum EncryptionType implements Asn1EnumType {
public static EncryptionType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (EncryptionType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index b148bf6..37eb44f 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum HostAddrType implements Asn1EnumType {
+public enum HostAddrType implements EnumType {
/**
* Constant for the "null" host address type.
*/
@@ -88,7 +88,7 @@ public enum HostAddrType implements Asn1EnumType {
public static HostAddrType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (HostAddrType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 055977c..22ea613 100644
--- 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
@@ -19,12 +19,12 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
/**
* From krb5.hin
*/
-public enum KeyUsage implements Asn1EnumType {
+public enum KeyUsage implements EnumType {
UNKNOWN(-1),
NONE(0),
//AS-REQ PA-ENC-TIMESTAMP padata timestamp, encrypted with the client key
@@ -114,7 +114,7 @@ public enum KeyUsage implements Asn1EnumType {
public static KeyUsage fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (KeyUsage) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index d483838..cf3d130 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum KrbMessageType implements Asn1EnumType {
+public enum KrbMessageType implements EnumType {
NONE(-1),
AS_REQ(10),
AS_REP(11),
@@ -47,7 +47,7 @@ public enum KrbMessageType implements Asn1EnumType {
public static KrbMessageType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (KrbMessageType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 0353750..c766d27 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum LastReqType implements Asn1EnumType {
+public enum LastReqType implements EnumType {
NONE(0),
ALL_LAST_TGT(1),
THE_LAST_TGT(-1),
@@ -51,7 +51,7 @@ public enum LastReqType implements Asn1EnumType {
public static LastReqType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (LastReqType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index d85b786..3cbddfe 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum NameType implements Asn1EnumType {
+public enum NameType implements EnumType {
NT_UNKNOWN(0),
NT_PRINCIPAL(1),
NT_SRV_INST(2),
@@ -42,7 +42,7 @@ public enum NameType implements Asn1EnumType {
public static NameType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (NameType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index faa6e18..9f55e6d 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum SamType implements Asn1EnumType {
+public enum SamType implements EnumType {
SAM_NONE(0),
/** safe SAM type enum for Enigma Logic */
SAM_TYPE_ENIGMA(1), // Enigma Logic"
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 15781b7..b2b6e26 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum TokenFormat implements Asn1EnumType {
+public enum TokenFormat implements EnumType {
NONE (0),
JWT (1);
@@ -38,7 +38,7 @@ public enum TokenFormat implements Asn1EnumType {
public static TokenFormat fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (TokenFormat) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 744b643..262ac8c 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.base;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum TransitedEncodingType implements Asn1EnumType {
+public enum TransitedEncodingType implements EnumType {
UNKNOWN(-1),
NULL(0),
DOMAIN_X500_COMPRESS(1);
@@ -39,7 +39,7 @@ public enum TransitedEncodingType implements Asn1EnumType {
public static TransitedEncodingType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (TransitedEncodingType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index 3331088..b6dd972 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.fast;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum ArmorType implements Asn1EnumType {
+public enum ArmorType implements EnumType {
NONE (0),
ARMOR_AP_REQUEST (1);
@@ -38,7 +38,7 @@ public enum ArmorType implements Asn1EnumType {
public static ArmorType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (ArmorType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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
index dc46d83..f97f0ae 100644
--- 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.fast;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum FastOption implements Asn1EnumType {
+public enum FastOption implements EnumType {
NONE(-1),
RESERVED(0),
HIDE_CLIENT_NAMES(1),
@@ -40,7 +40,7 @@ public enum FastOption implements Asn1EnumType {
}
public static FastOption fromValue(int value) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (FastOption) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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 ef6261d..3a5edc6 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.kdc;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum KdcOption implements Asn1EnumType {
+public enum KdcOption implements EnumType {
NONE(-1),
//RESERVED(0x80000000),
FORWARDABLE(0x40000000),
@@ -68,7 +68,7 @@ public enum KdcOption implements Asn1EnumType {
}
public static KdcOption fromValue(int value) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (KdcOption) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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 da3807e..44cb2c5 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
@@ -19,12 +19,12 @@
*/
package org.apache.kerby.kerberos.kerb.type.pa;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
/**
* From krb5.h
*/
-public enum PaDataType implements Asn1EnumType {
+public enum PaDataType implements EnumType {
NONE (0),
TGS_REQ (1),
AP_REQ (1),
@@ -80,7 +80,7 @@ public enum PaDataType implements Asn1EnumType {
public static PaDataType fromValue(Integer value) {
if (value != null) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value.intValue()) {
return (PaDataType) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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 037d7eb..12d8ea6 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.pa.token;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum TokenFlag implements Asn1EnumType {
+public enum TokenFlag implements EnumType {
NONE(-1),
ID_TOKEN_REQUIRED(0x40000000),
AC_TOKEN_REQUIRED(0x20000000),
@@ -40,7 +40,7 @@ public enum TokenFlag implements Asn1EnumType {
}
public static TokenFlag fromValue(int value) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (TokenFlag) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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 e2e99a8..48dd355 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.type.ticket;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
-public enum TicketFlag implements Asn1EnumType {
+public enum TicketFlag implements EnumType {
NONE(-1),
FORWARDABLE(0x40000000),
FORWARDED(0x20000000),
@@ -51,7 +51,7 @@ public enum TicketFlag implements Asn1EnumType {
}
public static TicketFlag fromValue(int value) {
- for (Asn1EnumType e : values()) {
+ for (EnumType e : values()) {
if (e.getValue() == value) {
return (TicketFlag) e;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/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 bde3992..9f120ad 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
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.cms.type;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Integer;
/**
@@ -27,7 +27,7 @@ import org.apache.kerby.asn1.type.Asn1Integer;
* { v0(0), v1(1), v2(2), v3(3), v4(4), v5(5) }
*/
-enum CmsVersionEnum implements Asn1EnumType {
+enum CmsVersionEnum implements EnumType {
V0,
V1,
V2,
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java
index 1596b8a..02558cb 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.x509.type;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Enumerated;
/**
@@ -40,7 +40,7 @@ import org.apache.kerby.asn1.type.Asn1Enumerated;
* </pre>
*/
-enum CRLReasonEnum implements Asn1EnumType {
+enum CRLReasonEnum implements EnumType {
UNSPECIFIED,
KEY_COMPROMISE,
CA_COMPROMISE,
@@ -60,7 +60,7 @@ enum CRLReasonEnum implements Asn1EnumType {
public class CRLReason extends Asn1Enumerated<CRLReasonEnum> {
@Override
- public Asn1EnumType[] getAllEnumValues() {
+ public EnumType[] getAllEnumValues() {
return CRLReasonEnum.values();
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java
index e67c503..c233133 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.x509.type;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Enumerated;
/**
@@ -34,7 +34,7 @@ import org.apache.kerby.asn1.type.Asn1Enumerated;
* </pre>
*
*/
-enum DigestedObjectEnum implements Asn1EnumType {
+enum DigestedObjectEnum implements EnumType {
PUBLIC_KEY,
PUBLIC_KEY_CERT,
OTHER_OBJECT_TYPES;
@@ -47,7 +47,7 @@ enum DigestedObjectEnum implements Asn1EnumType {
public class DigestedObjectType extends Asn1Enumerated<DigestedObjectEnum> {
@Override
- public Asn1EnumType[] getAllEnumValues() {
+ public EnumType[] getAllEnumValues() {
return DigestedObjectEnum.values();
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java
index bbded47..e7dbb06 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.x509.type;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Flags;
/**
@@ -40,7 +40,7 @@ import org.apache.kerby.asn1.type.Asn1Flags;
* </pre>
*/
-enum KeyUsageEnum implements Asn1EnumType {
+enum KeyUsageEnum implements EnumType {
DIGITAL_SIGNATURE,
NON_REPUDIATION,
KEY_ENCIPHERMENT,
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/597995d4/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java
index c397f08..d81798f 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.x509.type;
-import org.apache.kerby.asn1.type.Asn1EnumType;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Flags;
/**
@@ -39,7 +39,7 @@ import org.apache.kerby.asn1.type.Asn1Flags;
* </pre>
*/
-enum ReasonFlagsEnum implements Asn1EnumType {
+enum ReasonFlagsEnum implements EnumType {
UNUSED,
KEY_COMPROMISE,
CA_COMPROMISE,
[02/26] directory-kerby git commit: Fixed two style issues
Posted by pl...@apache.org.
Fixed two style issues
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/27038b87
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/27038b87
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/27038b87
Branch: refs/heads/pkinit-support
Commit: 27038b87f24bba99476e4f0d794f462f3e6da838
Parents: ca1e8c1
Author: Kai Zheng <ka...@intel.com>
Authored: Mon Nov 30 15:12:11 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Mon Nov 30 15:12:11 2015 +0800
----------------------------------------------------------------------
kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/27038b87/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
index a2a167f..b23f960 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
@@ -67,8 +67,8 @@ public class HexUtil {
if (hexPart.length != 2) {
throw new IllegalArgumentException("Invalid hex string to convert");
}
- bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexPart[0]) << 4) +
- HEX_CHARS_STR.indexOf(hexPart[1]));
+ bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexPart[0]) << 4)
+ + HEX_CHARS_STR.indexOf(hexPart[1]));
}
return bytes;
@@ -104,8 +104,8 @@ public class HexUtil {
byte[] bytes = new byte[len];
char[] hexChars = hexString.toCharArray();
for (int i = 0, j = 0; i < len; ++i) {
- bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexChars[j++]) << 4) +
- HEX_CHARS_STR.indexOf(hexChars[j++]));
+ bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexChars[j++]) << 4)
+ + HEX_CHARS_STR.indexOf(hexChars[j++]));
}
return bytes;
[19/26] directory-kerby git commit: DIRKRB-485. An ASN1 dumping
utility
Posted by pl...@apache.org.
DIRKRB-485. An ASN1 dumping utility
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/e1a4c3a3
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/e1a4c3a3
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/e1a4c3a3
Branch: refs/heads/pkinit-support
Commit: e1a4c3a31c50adb86560e573f1a3dcb9177767cc
Parents: 4c7a8c4
Author: Kai Zheng <ka...@intel.com>
Authored: Fri Dec 4 08:43:05 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Fri Dec 4 08:43:05 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kerby/asn1/Asn1Dump.java | 78 ++++++++-----
.../java/org/apache/kerby/asn1/HexUtil.java | 113 +++++++++++++++++++
.../org/apache/kerby/asn1/type/Asn1Item.java | 5 +-
.../java/org/apache/kerby/asn1/HexUtil.java | 113 -------------------
4 files changed, 168 insertions(+), 141 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e1a4c3a3/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
index b9199fe..e2569a8 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
@@ -19,54 +19,78 @@
*/
package org.apache.kerby.asn1;
+import org.apache.kerby.asn1.type.Asn1Constructed;
import org.apache.kerby.asn1.type.Asn1Item;
-import org.apache.kerby.asn1.type.Asn1Simple;
import org.apache.kerby.asn1.type.Asn1Type;
import java.io.IOException;
+import java.nio.ByteBuffer;
public class Asn1Dump {
+ public static void dump(String hexStr) throws IOException {
+ System.out.println("Dumping data:");
+ System.out.println(hexStr);
+ Asn1Dump dumper = new Asn1Dump();
+ byte[] data = HexUtil.hex2bytes(hexStr);
+ dumper.doDump(data);
+ }
+
public static void dump(byte[] content) throws IOException {
- String dumped = dumpAsString(content);
- System.out.println(dumped);
+ String hexStr = HexUtil.bytesToHex(content);
+ System.out.println("Dumping data:");
+ System.out.println(hexStr);
+ Asn1Dump dumper = new Asn1Dump();
+ dumper.doDump(content);
}
- public static String dumpAsString(byte[] content) throws IOException {
- StringBuilder sb = new StringBuilder();
+ public static void dump(ByteBuffer content) throws IOException {
+ byte[] bytes = new byte[content.remaining()];
+ content.get(bytes);
+ dump(bytes);
+ }
+
+ private StringBuilder builder = new StringBuilder();
+
+ private void doDump(byte[] content) throws IOException {
+ doDump(ByteBuffer.wrap(content));
+ }
+ private void doDump(ByteBuffer content) throws IOException {
Asn1InputBuffer buffer = new Asn1InputBuffer(content);
- Asn1Type value;
- while (true) {
- value = buffer.read();
- if (value == null) {
- break;
- }
- dump(value, sb);
+ Asn1Type value = buffer.read();
+ if (value == null) {
+ return;
}
- return sb.toString();
+ dumpType(0, value);
+
+ System.out.println(builder.toString());
}
- public static String dumpAsString(Asn1Type value) {
- StringBuilder sb = new StringBuilder();
- dump(value, sb);
- return sb.toString();
+ private void dumpType(int numSpaces, Asn1Type value) {
+ if (value instanceof Asn1Item) {
+ dumpItem(numSpaces, (Asn1Item) value);
+ } else if (value instanceof Asn1Constructed) {
+ dumpCollection(numSpaces, (Asn1Constructed) value);
+ }
}
- private static void dump(Asn1Type value, StringBuilder buffer) {
- if (value instanceof Asn1Simple) {
- buffer.append(((Asn1Simple<?>) value).getValue().toString());
- } else if (value instanceof Asn1Item) {
- dump((Asn1Item) value, buffer);
+ private void dumpCollection(int numSpaces, Asn1Constructed coll) {
+ prefixSpaces(numSpaces).append(coll).append("\n");
+ for (Asn1Type aObj : coll.getValue()) {
+ dumpType(numSpaces + 4, aObj);
}
}
- private static void dump(Asn1Item value, StringBuilder buffer) {
- if (value.isFullyDecoded()) {
- dump(value.getValue(), buffer);
- } else {
- buffer.append("Asn1Item");
+ private void dumpItem(int numSpaces, Asn1Item value) {
+ prefixSpaces(numSpaces).append(value).append("\n");
+ }
+
+ private StringBuilder prefixSpaces(int numSpaces) {
+ for (int i = 0; i < numSpaces; i++) {
+ builder.append(' ');
}
+ return builder;
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e1a4c3a3/kerby-asn1/src/main/java/org/apache/kerby/asn1/HexUtil.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/HexUtil.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/HexUtil.java
new file mode 100644
index 0000000..b23f960
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/HexUtil.java
@@ -0,0 +1,113 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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;
+
+/**
+ * This is only for test, be careful when use in production codes.
+ */
+public class HexUtil {
+
+ static final String HEX_CHARS_STR = "0123456789ABCDEF";
+ static final char[] HEX_CHARS = HEX_CHARS_STR.toCharArray();
+
+ /**
+ * Convert bytes into friendly format as:
+ * 0x02 02 00 80
+ */
+ public static String bytesToHexFriendly(byte[] bytes) {
+ int len = bytes.length * 2;
+ len += bytes.length; // for ' ' appended for each char
+ len += 2; // for '0x' prefix
+ char[] hexChars = new char[len];
+ hexChars[0] = '0';
+ hexChars[1] = 'x';
+ for (int j = 0; j < bytes.length; j++) {
+ int v = bytes[j] & 0xFF;
+ hexChars[j * 3 + 2] = HEX_CHARS[v >>> 4];
+ hexChars[j * 3 + 3] = HEX_CHARS[v & 0x0F];
+ hexChars[j * 3 + 4] = ' ';
+ }
+
+ return new String(hexChars);
+ }
+
+ /**
+ * Convert friendly hex string like follows into byte array
+ * 0x02 02 00 80
+ */
+ public static byte[] hex2bytesFriendly(String hexString) {
+ hexString = hexString.toUpperCase();
+ String hexStr = hexString;
+ if (hexString.startsWith("0X")) {
+ hexStr = hexString.substring(2);
+ }
+ String[] hexParts = hexStr.split(" ");
+
+ byte[] bytes = new byte[hexParts.length];
+ char[] hexPart;
+ for (int i = 0; i < hexParts.length; ++i) {
+ hexPart = hexParts[i].toCharArray();
+ if (hexPart.length != 2) {
+ throw new IllegalArgumentException("Invalid hex string to convert");
+ }
+ bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexPart[0]) << 4)
+ + HEX_CHARS_STR.indexOf(hexPart[1]));
+ }
+
+ return bytes;
+ }
+
+ /**
+ * Convert bytes into format as:
+ * 02020080
+ * @param bytes The bytes
+ * @return The hex string
+ */
+ public static String bytesToHex(byte[] bytes) {
+ int len = bytes.length * 2;
+ char[] hexChars = new char[len];
+ for (int j = 0; j < bytes.length; j++) {
+ int v = bytes[j] & 0xFF;
+ hexChars[j * 2] = HEX_CHARS[v >>> 4];
+ hexChars[j * 2 + 1] = HEX_CHARS[v & 0x0F];
+ }
+
+ return new String(hexChars);
+ }
+
+ /**
+ * Convert hex string like follows into byte array
+ * 02020080
+ * @param hexString The hex string
+ * @return The bytes
+ */
+ public static byte[] hex2bytes(String hexString) {
+ hexString = hexString.toUpperCase();
+ int len = hexString.length() / 2;
+ byte[] bytes = new byte[len];
+ char[] hexChars = hexString.toCharArray();
+ for (int i = 0, j = 0; i < len; ++i) {
+ bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexChars[j++]) << 4)
+ + HEX_CHARS_STR.indexOf(hexChars[j++]));
+ }
+
+ return bytes;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e1a4c3a3/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
index aa37d41..7fbcd05 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
@@ -146,6 +146,9 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
@Override
public String toStr() {
- return getValue().toStr();
+ if (getValue() != null) {
+ return getValue().toStr();
+ }
+ return "undecoded";
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/e1a4c3a3/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
deleted file mode 100644
index b23f960..0000000
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/HexUtil.java
+++ /dev/null
@@ -1,113 +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;
-
-/**
- * This is only for test, be careful when use in production codes.
- */
-public class HexUtil {
-
- static final String HEX_CHARS_STR = "0123456789ABCDEF";
- static final char[] HEX_CHARS = HEX_CHARS_STR.toCharArray();
-
- /**
- * Convert bytes into friendly format as:
- * 0x02 02 00 80
- */
- public static String bytesToHexFriendly(byte[] bytes) {
- int len = bytes.length * 2;
- len += bytes.length; // for ' ' appended for each char
- len += 2; // for '0x' prefix
- char[] hexChars = new char[len];
- hexChars[0] = '0';
- hexChars[1] = 'x';
- for (int j = 0; j < bytes.length; j++) {
- int v = bytes[j] & 0xFF;
- hexChars[j * 3 + 2] = HEX_CHARS[v >>> 4];
- hexChars[j * 3 + 3] = HEX_CHARS[v & 0x0F];
- hexChars[j * 3 + 4] = ' ';
- }
-
- return new String(hexChars);
- }
-
- /**
- * Convert friendly hex string like follows into byte array
- * 0x02 02 00 80
- */
- public static byte[] hex2bytesFriendly(String hexString) {
- hexString = hexString.toUpperCase();
- String hexStr = hexString;
- if (hexString.startsWith("0X")) {
- hexStr = hexString.substring(2);
- }
- String[] hexParts = hexStr.split(" ");
-
- byte[] bytes = new byte[hexParts.length];
- char[] hexPart;
- for (int i = 0; i < hexParts.length; ++i) {
- hexPart = hexParts[i].toCharArray();
- if (hexPart.length != 2) {
- throw new IllegalArgumentException("Invalid hex string to convert");
- }
- bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexPart[0]) << 4)
- + HEX_CHARS_STR.indexOf(hexPart[1]));
- }
-
- return bytes;
- }
-
- /**
- * Convert bytes into format as:
- * 02020080
- * @param bytes The bytes
- * @return The hex string
- */
- public static String bytesToHex(byte[] bytes) {
- int len = bytes.length * 2;
- char[] hexChars = new char[len];
- for (int j = 0; j < bytes.length; j++) {
- int v = bytes[j] & 0xFF;
- hexChars[j * 2] = HEX_CHARS[v >>> 4];
- hexChars[j * 2 + 1] = HEX_CHARS[v & 0x0F];
- }
-
- return new String(hexChars);
- }
-
- /**
- * Convert hex string like follows into byte array
- * 02020080
- * @param hexString The hex string
- * @return The bytes
- */
- public static byte[] hex2bytes(String hexString) {
- hexString = hexString.toUpperCase();
- int len = hexString.length() / 2;
- byte[] bytes = new byte[len];
- char[] hexChars = hexString.toCharArray();
- for (int i = 0, j = 0; i < len; ++i) {
- bytes[i] = (byte) ((HEX_CHARS_STR.indexOf(hexChars[j++]) << 4)
- + HEX_CHARS_STR.indexOf(hexChars[j++]));
- }
-
- return bytes;
- }
-}
[16/26] directory-kerby git commit: DIRKRB-486 Dumping support for
built-in ASN1 types and user defined types.
Posted by pl...@apache.org.
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),
[17/26] directory-kerby git commit: DIRKRB-486 Dumping support for
built-in ASN1 types and user defined types.
Posted by pl...@apache.org.
DIRKRB-486 Dumping support for built-in ASN1 types and user defined types.
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/7c93f2e3
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/7c93f2e3
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/7c93f2e3
Branch: refs/heads/pkinit-support
Commit: 7c93f2e3a6086dede94dee5d09fed25281650c56
Parents: 597995d
Author: plusplusjiajia <ji...@intel.com>
Authored: Thu Dec 3 16:06:21 2015 +0800
Committer: plusplusjiajia <ji...@intel.com>
Committed: Thu Dec 3 16:06:21 2015 +0800
----------------------------------------------------------------------
docs/kerby-checkstyle.xml | 2 +-
.../org/apache/kerby/asn1/Asn1FieldInfo.java | 12 ++--
.../java/org/apache/kerby/asn1/EnumType.java | 1 +
.../org/apache/kerby/asn1/ExplicitField.java | 6 +-
.../org/apache/kerby/asn1/ImplicitField.java | 6 +-
.../org/apache/kerby/asn1/type/Asn1Choice.java | 17 ++---
.../kerby/asn1/type/Asn1CollectionType.java | 38 +++++++----
.../org/apache/kerby/asn1/type/Asn1Item.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Tagging.java | 2 +-
.../kerby/asn1/type/TaggingCollection.java | 21 +++---
.../org/apache/kerby/asn1/PersonnelRecord.java | 68 ++++++++++++++++----
.../org/apache/kerby/asn1/TestAsn1Flags.java | 6 ++
.../kerby/kerberos/kerb/preauth/PaFlag.java | 5 ++
.../kerby/kerberos/kerb/KrbErrorCode.java | 5 ++
.../kerberos/kerb/type/KrbAppSequenceType.java | 10 +--
.../kerberos/kerb/type/KrbSequenceType.java | 10 +--
.../kerby/kerberos/kerb/type/ad/AdToken.java | 16 ++++-
.../kerb/type/ad/AuthorizationDataEntry.java | 18 +++++-
.../kerb/type/ad/AuthorizationType.java | 5 ++
.../kerby/kerberos/kerb/type/ap/ApOption.java | 5 ++
.../kerby/kerberos/kerb/type/ap/ApRep.java | 18 +++++-
.../kerby/kerberos/kerb/type/ap/ApReq.java | 22 ++++++-
.../kerberos/kerb/type/ap/Authenticator.java | 33 +++++++---
.../kerberos/kerb/type/ap/EncAPRepPart.java | 23 +++++--
.../kerby/kerberos/kerb/type/base/CheckSum.java | 18 +++++-
.../kerberos/kerb/type/base/CheckSumType.java | 1 +
.../kerberos/kerb/type/base/EncryptedData.java | 20 +++++-
.../kerberos/kerb/type/base/EncryptionKey.java | 18 +++++-
.../kerb/type/base/EtypeInfo2Entry.java | 20 +++++-
.../kerberos/kerb/type/base/EtypeInfoEntry.java | 18 +++++-
.../kerberos/kerb/type/base/HostAddrType.java | 5 ++
.../kerberos/kerb/type/base/HostAddress.java | 18 +++++-
.../kerby/kerberos/kerb/type/base/KeyUsage.java | 5 ++
.../kerby/kerberos/kerb/type/base/KrbError.java | 38 +++++++----
.../kerberos/kerb/type/base/KrbMessage.java | 20 +++++-
.../kerberos/kerb/type/base/KrbMessageType.java | 5 ++
.../kerby/kerberos/kerb/type/base/KrbToken.java | 18 +++++-
.../kerberos/kerb/type/base/LastReqEntry.java | 18 +++++-
.../kerberos/kerb/type/base/LastReqType.java | 5 ++
.../kerby/kerberos/kerb/type/base/NameType.java | 5 ++
.../kerberos/kerb/type/base/PrincipalName.java | 19 +++++-
.../kerby/kerberos/kerb/type/base/SamType.java | 5 ++
.../kerberos/kerb/type/base/TokenFormat.java | 5 ++
.../kerb/type/base/TransitedEncoding.java | 18 +++++-
.../kerb/type/base/TransitedEncodingType.java | 5 ++
.../kerberos/kerb/type/fast/ArmorType.java | 5 ++
.../kerberos/kerb/type/fast/FastOption.java | 5 ++
.../kerberos/kerb/type/fast/KrbFastArmor.java | 18 +++++-
.../kerb/type/fast/KrbFastArmoredRep.java | 16 ++++-
.../kerb/type/fast/KrbFastArmoredReq.java | 20 +++++-
.../kerb/type/fast/KrbFastFinished.java | 20 +++++-
.../kerberos/kerb/type/fast/KrbFastReq.java | 20 +++++-
.../kerb/type/fast/KrbFastResponse.java | 22 +++++--
.../kerberos/kerb/type/fast/PaAuthnEntry.java | 20 +++++-
.../kerberos/kerb/type/fast/PaFxFastReply.java | 16 ++++-
.../kerb/type/fast/PaFxFastRequest.java | 16 ++++-
.../kerberos/kerb/type/kdc/EncKdcRepPart.java | 38 +++++++----
.../kerby/kerberos/kerb/type/kdc/KdcOption.java | 5 ++
.../kerby/kerberos/kerb/type/kdc/KdcRep.java | 26 ++++++--
.../kerby/kerberos/kerb/type/kdc/KdcReq.java | 20 +++++-
.../kerberos/kerb/type/kdc/KdcReqBody.java | 38 +++++++----
.../kerb/type/pa/PaAuthenticationSetElem.java | 20 +++++-
.../kerberos/kerb/type/pa/PaDataEntry.java | 18 +++++-
.../kerby/kerberos/kerb/type/pa/PaDataType.java | 5 ++
.../kerby/kerberos/kerb/type/pa/PaEncTsEnc.java | 18 +++++-
.../kerberos/kerb/type/pa/otp/OtpTokenInfo.java | 32 ++++++---
.../kerb/type/pa/otp/PaOtpChallenge.java | 24 +++++--
.../kerberos/kerb/type/pa/pkinit/AuthPack.java | 22 +++++--
.../kerberos/kerb/type/pa/pkinit/DHRepInfo.java | 18 +++++-
.../pa/pkinit/ExternalPrincipalIdentifier.java | 20 +++++-
.../kerb/type/pa/pkinit/KdcDHKeyInfo.java | 20 +++++-
.../kerb/type/pa/pkinit/Krb5PrincipalName.java | 18 +++++-
.../kerberos/kerb/type/pa/pkinit/PaPkAsRep.java | 18 +++++-
.../kerberos/kerb/type/pa/pkinit/PaPkAsReq.java | 20 +++++-
.../kerb/type/pa/pkinit/PkAuthenticator.java | 22 +++++--
.../kerb/type/pa/pkinit/ReplyKeyPack.java | 18 +++++-
.../kerb/type/pa/token/PaTokenChallenge.java | 16 ++++-
.../kerb/type/pa/token/PaTokenRequest.java | 18 +++++-
.../kerberos/kerb/type/pa/token/TokenFlag.java | 5 ++
.../kerberos/kerb/type/pa/token/TokenInfo.java | 18 +++++-
.../kerb/type/ticket/EncTicketPart.java | 36 +++++++----
.../kerby/kerberos/kerb/type/ticket/Ticket.java | 22 +++++--
.../kerberos/kerb/type/ticket/TicketFlag.java | 5 ++
.../org/apache/kerby/cms/type/Attribute.java | 18 +++++-
.../cms/type/AttributeCertificateInfoV1.java | 33 +++++++---
.../kerby/cms/type/AttributeCertificateV1.java | 20 +++++-
.../org/apache/kerby/cms/type/Certificate.java | 19 +++++-
.../kerby/cms/type/CertificateChoices.java | 23 +++++--
.../apache/kerby/cms/type/CertificateList.java | 20 +++++-
.../org/apache/kerby/cms/type/CmsVersion.java | 5 ++
.../apache/kerby/cms/type/CompressedData.java | 19 +++++-
.../org/apache/kerby/cms/type/ContentInfo.java | 18 +++++-
.../kerby/cms/type/EncapsulatedContentInfo.java | 18 +++++-
.../kerby/cms/type/ExtendedCertificate.java | 20 +++++-
.../kerby/cms/type/ExtendedCertificateInfo.java | 20 +++++-
.../kerby/cms/type/IssuerAndSerialNumber.java | 18 +++++-
.../kerby/cms/type/OtherCertificateFormat.java | 17 ++++-
.../cms/type/OtherRevocationInfoFormat.java | 18 +++++-
.../kerby/cms/type/RevocationInfoChoice.java | 18 +++++-
.../org/apache/kerby/cms/type/SignedData.java | 26 ++++++--
.../apache/kerby/cms/type/SignerIdentifier.java | 18 +++++-
.../org/apache/kerby/cms/type/SignerInfo.java | 28 ++++++--
.../java/org/apache/kerby/cms/type/Subject.java | 18 +++++-
.../kerby/x500/type/AttributeTypeAndValue.java | 17 ++++-
.../java/org/apache/kerby/x500/type/Name.java | 16 ++++-
.../kerby/x509/type/AccessDescription.java | 18 +++++-
.../kerby/x509/type/AlgorithmIdentifier.java | 18 +++++-
.../apache/kerby/x509/type/AttCertIssuer.java | 18 +++++-
.../kerby/x509/type/AttCertValidityPeriod.java | 18 +++++-
.../org/apache/kerby/x509/type/Attribute.java | 18 +++++-
.../kerby/x509/type/AttributeCertificate.java | 20 +++++-
.../x509/type/AttributeCertificateInfo.java | 32 ++++++---
.../kerby/x509/type/AuthorityKeyIdentifier.java | 19 +++++-
.../kerby/x509/type/BasicConstraints.java | 18 +++++-
.../org/apache/kerby/x509/type/CRLReason.java | 5 ++
.../org/apache/kerby/x509/type/Certificate.java | 20 +++++-
.../apache/kerby/x509/type/CertificateList.java | 20 +++++-
.../apache/kerby/x509/type/CertificatePair.java | 18 +++++-
.../apache/kerby/x509/type/DSAParameter.java | 20 +++++-
.../org/apache/kerby/x509/type/DigestInfo.java | 18 +++++-
.../kerby/x509/type/DigestedObjectType.java | 5 ++
.../apache/kerby/x509/type/DirectoryString.java | 23 +++++--
.../org/apache/kerby/x509/type/DisplayText.java | 22 +++++--
.../kerby/x509/type/DistributionPoint.java | 20 +++++-
.../kerby/x509/type/DistributionPointName.java | 18 +++++-
.../apache/kerby/x509/type/EDIPartyName.java | 18 +++++-
.../org/apache/kerby/x509/type/Extension.java | 20 +++++-
.../org/apache/kerby/x509/type/GeneralName.java | 33 +++++++---
.../apache/kerby/x509/type/GeneralSubtree.java | 20 +++++-
.../java/org/apache/kerby/x509/type/Holder.java | 20 +++++-
.../apache/kerby/x509/type/IetfAttrSyntax.java | 18 +++++-
.../kerby/x509/type/IetfAttrSyntaxChoice.java | 20 +++++-
.../apache/kerby/x509/type/IssuerSerial.java | 20 +++++-
.../x509/type/IssuingDistributionPoint.java | 25 +++++--
.../org/apache/kerby/x509/type/KeyUsage.java | 5 ++
.../apache/kerby/x509/type/NameConstraints.java | 18 +++++-
.../apache/kerby/x509/type/NoticeReference.java | 18 +++++-
.../kerby/x509/type/ObjectDigestInfo.java | 22 +++++--
.../org/apache/kerby/x509/type/OtherName.java | 18 +++++-
.../kerby/x509/type/PolicyConstraints.java | 18 +++++-
.../kerby/x509/type/PolicyInformation.java | 18 +++++-
.../apache/kerby/x509/type/PolicyMapping.java | 18 +++++-
.../kerby/x509/type/PolicyQualifierInfo.java | 18 +++++-
.../kerby/x509/type/PrivateKeyUsagePeriod.java | 18 +++++-
.../org/apache/kerby/x509/type/ReasonFlags.java | 5 ++
.../kerby/x509/type/RevokedCertificate.java | 20 +++++-
.../org/apache/kerby/x509/type/RoleSyntax.java | 18 +++++-
.../kerby/x509/type/SubjectPublicKeyInfo.java | 18 +++++-
.../org/apache/kerby/x509/type/TBSCertList.java | 29 ++++++---
.../apache/kerby/x509/type/TBSCertificate.java | 36 +++++++----
.../java/org/apache/kerby/x509/type/Target.java | 20 +++++-
.../org/apache/kerby/x509/type/TargetCert.java | 20 +++++-
.../java/org/apache/kerby/x509/type/Time.java | 18 +++++-
.../org/apache/kerby/x509/type/UserNotice.java | 18 +++++-
.../java/org/apache/kerby/x509/type/V2Form.java | 20 +++++-
155 files changed, 2275 insertions(+), 460 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/docs/kerby-checkstyle.xml
----------------------------------------------------------------------
diff --git a/docs/kerby-checkstyle.xml b/docs/kerby-checkstyle.xml
index 3538cd6..72388df 100644
--- a/docs/kerby-checkstyle.xml
+++ b/docs/kerby-checkstyle.xml
@@ -66,7 +66,7 @@
<!-- Checks for imports -->
<!-- See http://checkstyle.sf.net/config_import.html -->
- <module name="AvoidStarImport"/>
+ <!--module name="AvoidStarImport"/-->
<module name="IllegalImport"/> <!-- defaults to sun.* packages -->
<module name="RedundantImport"/>
<module name="UnusedImports"/>
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 9efa6a5..89fc2f6 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1FieldInfo.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1FieldInfo.java
@@ -25,7 +25,7 @@ import org.apache.kerby.asn1.type.Asn1Type;
* Representing a field in a ASN1 collection or choice.
*/
public class Asn1FieldInfo {
- private int index;
+ private EnumType index;
private int tagNo = -1; // Indicate a non-tagged field
private boolean isImplicit;
private Class<? extends Asn1Type> type;
@@ -36,9 +36,9 @@ public class Asn1FieldInfo {
* @param type
* @param isImplicit
*/
- public Asn1FieldInfo(int index, Class<? extends Asn1Type> type,
+ public Asn1FieldInfo(EnumType index, Class<? extends Asn1Type> type,
boolean isImplicit) {
- this(index, index, type, isImplicit);
+ this(index, index.getValue(), type, isImplicit);
}
/**
@@ -48,7 +48,7 @@ public class Asn1FieldInfo {
* @param type
* @param isImplicit
*/
- public Asn1FieldInfo(int index, int tagNo, Class<? extends Asn1Type> type,
+ public Asn1FieldInfo(EnumType index, int tagNo, Class<? extends Asn1Type> type,
boolean isImplicit) {
this.index = index;
this.tagNo = tagNo;
@@ -61,7 +61,7 @@ public class Asn1FieldInfo {
* @param index
* @param type
*/
- public Asn1FieldInfo(int index, Class<? extends Asn1Type> type) {
+ public Asn1FieldInfo(EnumType index, Class<? extends Asn1Type> type) {
this.index = index;
this.type = type;
this.tagNo = -1; // Indicate a non-tagged field
@@ -83,7 +83,7 @@ public class Asn1FieldInfo {
return tagNo;
}
- public int getIndex() {
+ public EnumType getIndex() {
return index;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java
index ff9cd23..9b59f70 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/EnumType.java
@@ -24,4 +24,5 @@ package org.apache.kerby.asn1;
*/
public interface EnumType {
int getValue();
+ String getName();
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index 85fded1..7142dc0 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/ExplicitField.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/ExplicitField.java
@@ -31,7 +31,7 @@ public class ExplicitField extends Asn1FieldInfo {
* @param index
* @param type
*/
- public ExplicitField(int index, int tagNo, Class<? extends Asn1Type> type) {
+ public ExplicitField(EnumType index, int tagNo, Class<? extends Asn1Type> type) {
super(index, tagNo, type, false);
}
@@ -40,7 +40,7 @@ public class ExplicitField extends Asn1FieldInfo {
* @param index
* @param type
*/
- public ExplicitField(int index, Class<? extends Asn1Type> type) {
- super(index, index, type, false);
+ public ExplicitField(EnumType index, Class<? extends Asn1Type> type) {
+ super(index, index.getValue(), type, false);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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
index a0e7acb..f488847 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/ImplicitField.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/ImplicitField.java
@@ -31,7 +31,7 @@ public class ImplicitField extends Asn1FieldInfo {
* @param index
* @param type
*/
- public ImplicitField(int index, int tagNo, Class<? extends Asn1Type> type) {
+ public ImplicitField(EnumType index, int tagNo, Class<? extends Asn1Type> type) {
super(index, tagNo, type, true);
}
@@ -40,7 +40,7 @@ public class ImplicitField extends Asn1FieldInfo {
* @param index
* @param type
*/
- public ImplicitField(int index, Class<? extends Asn1Type> type) {
- super(index, index, type, true);
+ public ImplicitField(EnumType index, Class<? extends Asn1Type> type) {
+ super(index, index.getValue(), type, true);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 aecfaf0..9393886 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
@@ -20,6 +20,7 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.TaggingOption;
import org.apache.kerby.asn1.UniversalTag;
@@ -118,16 +119,16 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
}
}
- protected <T extends Asn1Type> T getFieldAs(int index, Class<T> t) {
- Asn1Type value = fields[index];
+ protected <T extends Asn1Type> T getFieldAs(EnumType index, Class<T> t) {
+ Asn1Type value = fields[index.getValue()];
if (value == null) {
return null;
}
return (T) value;
}
- protected void setFieldAs(int index, Asn1Type value) {
- fields[index] = value;
+ protected void setFieldAs(EnumType index, Asn1Type value) {
+ fields[index.getValue()] = value;
}
protected String getFieldAsString(int index) {
@@ -143,7 +144,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
throw new RuntimeException("The targeted field type isn't of string");
}
- protected byte[] getFieldAsOctets(int index) {
+ protected byte[] getFieldAsOctets(EnumType index) {
Asn1OctetString value = getFieldAs(index, Asn1OctetString.class);
if (value != null) {
return value.getValue();
@@ -151,12 +152,12 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
return null;
}
- protected void setFieldAsOctets(int index, byte[] bytes) {
+ protected void setFieldAsOctets(EnumType index, byte[] bytes) {
Asn1OctetString value = new Asn1OctetString(bytes);
setFieldAs(index, value);
}
- protected Integer getFieldAsInteger(int index) {
+ protected Integer getFieldAsInteger(EnumType index) {
Asn1Integer value = getFieldAs(index, Asn1Integer.class);
if (value != null) {
return value.getValue().intValue();
@@ -164,7 +165,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
return null;
}
- protected void setFieldAsInt(int index, int value) {
+ protected void setFieldAsInt(EnumType index, int value) {
setFieldAs(index, new Asn1Integer(value));
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 6b5d312..63092a3 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
@@ -20,6 +20,7 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.TaggingOption;
import org.apache.kerby.asn1.UniversalTag;
@@ -130,20 +131,20 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
protected abstract Asn1Collection createCollection();
- protected <T extends Asn1Type> T getFieldAs(int index, Class<T> t) {
- Asn1Type value = fields[index];
+ protected <T extends Asn1Type> T getFieldAs(EnumType index, Class<T> t) {
+ Asn1Type value = fields[index.getValue()];
if (value == null) {
return null;
}
return (T) value;
}
- protected void setFieldAs(int index, Asn1Type value) {
- fields[index] = value;
+ protected void setFieldAs(EnumType index, Asn1Type value) {
+ fields[index.getValue()] = value;
}
- protected String getFieldAsString(int index) {
- Asn1Type value = fields[index];
+ protected String getFieldAsString(EnumType index) {
+ Asn1Type value = fields[index.getValue()];
if (value == null) {
return null;
}
@@ -155,7 +156,7 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
throw new RuntimeException("The targeted field type isn't of string");
}
- protected byte[] getFieldAsOctets(int index) {
+ protected byte[] getFieldAsOctets(EnumType index) {
Asn1OctetString value = getFieldAs(index, Asn1OctetString.class);
if (value != null) {
return value.getValue();
@@ -163,12 +164,12 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
return null;
}
- protected void setFieldAsOctets(int index, byte[] bytes) {
+ protected void setFieldAsOctets(EnumType index, byte[] bytes) {
Asn1OctetString value = new Asn1OctetString(bytes);
setFieldAs(index, value);
}
- protected Integer getFieldAsInteger(int index) {
+ protected Integer getFieldAsInteger(EnumType index) {
Asn1Integer value = getFieldAs(index, Asn1Integer.class);
if (value != null && value.getValue() != null) {
return value.getValue().intValue();
@@ -176,12 +177,12 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
return null;
}
- protected void setFieldAsInt(int index, int value) {
+ protected void setFieldAsInt(EnumType index, int value) {
setFieldAs(index, new Asn1Integer(value));
}
- protected <T extends Asn1Type> T getFieldAsAny(int index, Class<T> t) {
- Asn1Type value = fields[index];
+ protected <T extends Asn1Type> T getFieldAsAny(EnumType index, Class<T> t) {
+ Asn1Type value = fields[index.getValue()];
if (value != null && value instanceof Asn1Any) {
Asn1Any any = (Asn1Any) value;
return any.getValueAs(t);
@@ -190,7 +191,7 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
return null;
}
- protected void setFieldAsAny(int index, Asn1Type value) {
+ protected void setFieldAsAny(EnumType index, Asn1Type value) {
if (value != null) {
setFieldAs(index, new Asn1Any(value));
}
@@ -198,6 +199,15 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
@Override
public String toStr() {
- return "[collection-type]";
+ StringBuffer str = new StringBuffer();
+ str.append(this.getClass().getSimpleName() + "\n");
+ for (int i = 0; i < fieldInfos.length; i++) {
+ str.append("Field name: ");
+ str.append(fieldInfos[i].getIndex().getName().replace("_", "-").toLowerCase() + " ");
+ str.append("Field value: ");
+ str.append(fields[i].toStr() + "\n");
+ }
+
+ return str.toString();
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
index c011141..aa37d41 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
@@ -146,6 +146,6 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
@Override
public String toStr() {
- return "item";
+ return getValue().toStr();
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
index 8dd4511..f0e03e3 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
@@ -100,6 +100,6 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
@Override
public String toStr() {
- return "tagging";
+ return getValue().toStr();
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 cb721ff..e5787d1 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
@@ -20,6 +20,7 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.Tag;
import java.io.IOException;
@@ -134,44 +135,44 @@ public abstract class TaggingCollection extends AbstractAsn1Type<Asn1CollectionT
tagging.decodeBody(content);
}
- protected <T extends Asn1Type> T getFieldAs(int index, Class<T> t) {
+ protected <T extends Asn1Type> T getFieldAs(EnumType index, Class<T> t) {
return tagged.getFieldAs(index, t);
}
- protected void setFieldAs(int index, Asn1Type value) {
+ protected void setFieldAs(EnumType index, Asn1Type value) {
tagged.setFieldAs(index, value);
}
- protected String getFieldAsString(int index) {
+ protected String getFieldAsString(EnumType index) {
return tagged.getFieldAsString(index);
}
- protected byte[] getFieldAsOctets(int index) {
+ protected byte[] getFieldAsOctets(EnumType index) {
return tagged.getFieldAsOctets(index);
}
- protected void setFieldAsOctets(int index, byte[] bytes) {
+ protected void setFieldAsOctets(EnumType index, byte[] bytes) {
tagged.setFieldAsOctets(index, bytes);
}
- protected Integer getFieldAsInteger(int index) {
+ protected Integer getFieldAsInteger(EnumType index) {
return tagged.getFieldAsInteger(index);
}
- protected void setFieldAsInt(int index, int value) {
+ protected void setFieldAsInt(EnumType index, int value) {
tagged.setFieldAsInt(index, value);
}
- protected byte[] getFieldAsOctetBytes(int index) {
+ protected byte[] getFieldAsOctetBytes(EnumType index) {
return tagged.getFieldAsOctets(index);
}
- protected void setFieldAsOctetBytes(int index, byte[] value) {
+ protected void setFieldAsOctetBytes(EnumType index, byte[] value) {
tagged.setFieldAsOctets(index, value);
}
@Override
public String toStr() {
- return "[tagging-collection]";
+ return tagging.toStr();
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 ee4c96e..1752046 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
@@ -26,18 +26,33 @@ import org.apache.kerby.asn1.type.Asn1Tagging;
import org.apache.kerby.asn1.type.Asn1VisibleString;
import org.apache.kerby.asn1.type.TaggingSequence;
import org.apache.kerby.asn1.type.TaggingSet;
+import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.*;
+import static org.apache.kerby.asn1.PersonnelRecord.ChildInformation.MyEnum.*;
+import static org.apache.kerby.asn1.PersonnelRecord.Name.MyEnum.*;
/**
* Ref. X.690-0207(http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf),
* Annex A, A.1 ASN.1 description of the record structure
*/
public class PersonnelRecord extends TaggingSet {
- private static final int NAME = 0;
- private static final int TITLE = 1;
- private static final int NUMBER = 2;
- private static final int DATEOFHIRE = 3;
- private static final int NAMEOFSPOUSE = 4;
- private static final int CHILDREN = 5;
+ protected static enum MyEnum implements EnumType {
+ NAME,
+ TITLE,
+ NUMBER,
+ DATEOFHIRE,
+ NAMEOFSPOUSE,
+ CHILDREN;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(NAME, -1, Name.class),
@@ -114,11 +129,23 @@ public class PersonnelRecord extends TaggingSet {
}
public static class ChildInformation extends Asn1SetType {
- private static final int NAME = 0;
- private static final int DATEOFBIRTH = 1;
+ protected static enum MyEnum implements EnumType {
+ CHILD_NAME,
+ DATEOFBIRTH;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] tags = new Asn1FieldInfo[] {
- new ExplicitField(NAME, -1, Name.class),
+ new ExplicitField(CHILD_NAME, -1, Name.class),
new ExplicitField(DATEOFBIRTH, 0, Date.class)
};
@@ -127,11 +154,11 @@ public class PersonnelRecord extends TaggingSet {
}
public void setName(Name name) {
- setFieldAs(NAME, name);
+ setFieldAs(CHILD_NAME, name);
}
public Name getName() {
- return getFieldAs(NAME, Name.class);
+ return getFieldAs(CHILD_NAME, Name.class);
}
public void setDateOfBirth(Date date) {
@@ -144,9 +171,22 @@ public class PersonnelRecord extends TaggingSet {
}
public static class Name extends TaggingSequence {
- private static final int GIVENNAME = 0;
- private static final int INITIAL = 1;
- private static final int FAMILYNAME = 2;
+
+ protected static enum MyEnum implements EnumType {
+ GIVENNAME,
+ INITIAL,
+ FAMILYNAME;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] tags = new Asn1FieldInfo[] {
new ExplicitField(GIVENNAME, -1, Asn1VisibleString.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
index 1c3ce80..ad4545c 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Flags.java
@@ -58,6 +58,12 @@ public class TestAsn1Flags {
public int getValue() {
return value;
}
+
+
+ @Override
+ public String getName() {
+ return name();
+ }
}
@Rule
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java
index 4d75546..f29d088 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/PaFlag.java
@@ -37,6 +37,11 @@ public enum PaFlag implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static PaFlag 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/KrbErrorCode.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java
index 3ab9871..708c188 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/KrbErrorCode.java
@@ -122,6 +122,11 @@ public enum KrbErrorCode implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public String getMessage() {
return message;
}
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/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
index a4178a3..b2469e2 100644
--- 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
@@ -31,7 +31,7 @@ public abstract class KrbAppSequenceType extends TaggingSequence {
super(tagNo, fieldInfos, true, false); // Kerberos favors explicit
}
- protected int getFieldAsInt(int index) {
+ protected int getFieldAsInt(EnumType index) {
Integer value = getFieldAsInteger(index);
if (value != null) {
return value.intValue();
@@ -39,19 +39,19 @@ public abstract class KrbAppSequenceType extends TaggingSequence {
return -1;
}
- protected void setFieldAsString(int index, String value) {
+ protected void setFieldAsString(EnumType index, String value) {
setFieldAs(index, new KerberosString(value));
}
- protected KerberosTime getFieldAsTime(int index) {
+ protected KerberosTime getFieldAsTime(EnumType index) {
return getFieldAs(index, KerberosTime.class);
}
- protected void setFieldAsTime(int index, long value) {
+ protected void setFieldAsTime(EnumType index, long value) {
setFieldAs(index, new KerberosTime(value));
}
- protected void setField(int index, EnumType krbEnum) {
+ protected void setField(EnumType index, EnumType krbEnum) {
setFieldAsInt(index, krbEnum.getValue());
}
}
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/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
index bf655b2..6f2ec5f 100644
--- 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
@@ -29,7 +29,7 @@ public abstract class KrbSequenceType extends Asn1SequenceType {
super(fieldInfos);
}
- protected int getFieldAsInt(int index) {
+ protected int getFieldAsInt(EnumType index) {
Integer value = getFieldAsInteger(index);
if (value != null) {
return value.intValue();
@@ -37,19 +37,19 @@ public abstract class KrbSequenceType extends Asn1SequenceType {
return -1;
}
- protected void setFieldAsString(int index, String value) {
+ protected void setFieldAsString(EnumType index, String value) {
setFieldAs(index, new KerberosString(value));
}
- protected KerberosTime getFieldAsTime(int index) {
+ protected KerberosTime getFieldAsTime(EnumType index) {
return getFieldAs(index, KerberosTime.class);
}
- protected void setFieldAsTime(int index, long value) {
+ protected void setFieldAsTime(EnumType index, long value) {
setFieldAs(index, new KerberosTime(value));
}
- protected void setField(int index, EnumType value) {
+ protected void setField(EnumType index, EnumType value) {
setFieldAsInt(index, value.getValue());
}
}
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/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
index 690af6b..ab96dea 100644
--- 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
@@ -20,9 +20,11 @@
package org.apache.kerby.kerberos.kerb.type.ad;
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.ad.AdToken.MyEnum.*;
/**
AD-TOKEN ::= SEQUENCE {
@@ -30,7 +32,19 @@ import org.apache.kerby.kerberos.kerb.type.base.KrbToken;
}
*/
public class AdToken extends KrbSequenceType {
- private static final int TOKEN = 0;
+ protected static enum MyEnum implements EnumType {
+ TOKEN;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(TOKEN, KrbToken.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/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
index c2750a4..651c7ab 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.ad;
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.ad.AuthorizationDataEntry.MyEnum.*;
/**
AuthorizationData ::= SEQUENCE OF SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
}
*/
public class AuthorizationDataEntry extends KrbSequenceType {
- private static final int AD_TYPE = 0;
- private static final int AD_DATA = 1;
+ protected static enum MyEnum implements EnumType {
+ AD_TYPE,
+ AD_DATA;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(AD_TYPE, 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/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
index 895535f..8f4f6ee 100644
--- 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
@@ -129,6 +129,11 @@ public enum AuthorizationType implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static AuthorizationType 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/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
index 8dd61a5..caf83a1 100644
--- 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
@@ -46,6 +46,11 @@ public enum ApOption implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static ApOption 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/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
index fab60b6..cb05d57 100644
--- 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
@@ -20,11 +20,13 @@
package org.apache.kerby.kerberos.kerb.type.ap;
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.EncryptedData;
import org.apache.kerby.kerberos.kerb.type.base.KrbMessage;
import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
+import static org.apache.kerby.kerberos.kerb.type.ap.ApRep.MyEnum.*;
/**
AP-REP ::= [APPLICATION 15] SEQUENCE {
@@ -34,7 +36,21 @@ import org.apache.kerby.kerberos.kerb.type.base.KrbMessageType;
}
*/
public class ApRep extends KrbMessage {
- private static final int ENC_PART = 2;
+ protected static enum MyEnum implements EnumType {
+ PVNO,
+ MSG_TYPE,
+ ENC_PART;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(PVNO, 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/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
index c6ea848..576c2bc 100644
--- 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
@@ -20,12 +20,14 @@
package org.apache.kerby.kerberos.kerb.type.ap;
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.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;
+import static org.apache.kerby.kerberos.kerb.type.ap.ApReq.MyEnum.*;
/**
AP-REQ ::= [APPLICATION 14] SEQUENCE {
@@ -37,9 +39,23 @@ import org.apache.kerby.kerberos.kerb.type.ticket.Ticket;
}
*/
public class ApReq extends KrbMessage {
- private static final int AP_OPTIONS = 2;
- private static final int TICKET = 3;
- private static final int AUTHENTICATOR = 4;
+ protected static enum MyEnum implements EnumType {
+ PVNO,
+ MSG_TYPE,
+ AP_OPTIONS,
+ TICKET,
+ AUTHENTICATOR;
+
+ @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/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
index 8fae5d3..2643b65 100644
--- 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
@@ -20,6 +20,7 @@
package org.apache.kerby.kerberos.kerb.type.ap;
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.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;
+import static org.apache.kerby.kerberos.kerb.type.ap.Authenticator.MyEnum.*;
/**
Authenticator ::= [APPLICATION 2] SEQUENCE {
@@ -45,15 +47,28 @@ import org.apache.kerby.kerberos.kerb.type.base.PrincipalName;
*/
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;
+
+ protected static enum MyEnum implements EnumType {
+ AUTHENTICATOR_VNO,
+ CREALM,
+ CNAME,
+ CKSUM,
+ CUSEC,
+ CTIME,
+ SUBKEY,
+ SEQ_NUMBER,
+ AUTHORIZATION_DATA;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(AUTHENTICATOR_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/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
index 4a0f589..0e33dbf 100644
--- 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
@@ -20,11 +20,13 @@
package org.apache.kerby.kerberos.kerb.type.ap;
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.KrbAppSequenceType;
import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
+import static org.apache.kerby.kerberos.kerb.type.ap.EncAPRepPart.MyEnum.*;
/**
EncAPRepPart ::= [APPLICATION 27] SEQUENCE {
@@ -36,10 +38,23 @@ import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
*/
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;
+
+ protected static enum MyEnum implements EnumType {
+ CTIME,
+ CUSEC,
+ SUBKEY,
+ SEQ_NUMBER;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(CTIME, 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/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
index f70c426..e8526a7 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.base.CheckSum.MyEnum.*;
import java.util.Arrays;
@@ -34,8 +36,20 @@ import java.util.Arrays;
}
*/
public class CheckSum extends KrbSequenceType {
- private static final int CKSUM_TYPE = 0;
- private static final int CHECK_SUM = 1;
+ protected static enum MyEnum implements EnumType {
+ CKSUM_TYPE,
+ CHECK_SUM;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(CKSUM_TYPE, 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/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
index 1758f1a..c566f76 100644
--- 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
@@ -105,6 +105,7 @@ public enum CheckSumType implements EnumType {
return value;
}
+ @Override
public String getName() {
return name;
}
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/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
index 57a5d2d..6e2f0d1 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.base.EncryptedData.MyEnum.*;
import java.util.Arrays;
@@ -35,9 +37,21 @@ import java.util.Arrays;
}
*/
public class EncryptedData extends KrbSequenceType {
- private static final int ETYPE = 0;
- private static final int KVNO = 1;
- private static final int CIPHER = 2;
+ protected static enum MyEnum implements EnumType {
+ ETYPE,
+ KVNO,
+ CIPHER;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(ETYPE, 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/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
index 044c5c5..2b1bc1c 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.base.EncryptionKey.MyEnum.*;
import java.util.Arrays;
@@ -34,8 +36,20 @@ import java.util.Arrays;
}
*/
public class EncryptionKey extends KrbSequenceType {
- private static final int KEY_TYPE = 0;
- private static final int KEY_VALUE = 1;
+ protected static enum MyEnum implements EnumType {
+ KEY_TYPE,
+ KEY_VALUE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
private int kvno = -1;
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/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
index 464f1b2..a367fd8 100644
--- 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
@@ -20,11 +20,13 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.KerberosString;
import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import static org.apache.kerby.kerberos.kerb.type.base.EtypeInfo2Entry.MyEnum.*;
/**
ETYPE-INFO2-ENTRY ::= SEQUENCE {
@@ -34,9 +36,21 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
}
*/
public class EtypeInfo2Entry extends KrbSequenceType {
- private static final int ETYPE = 0;
- private static final int SALT = 1;
- private static final int S2KPARAMS = 2;
+ protected static enum MyEnum implements EnumType {
+ ETYPE,
+ SALT,
+ S2KPARAMS;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(ETYPE, 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/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
index 9c8d4ea..3b4a876 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.base.EtypeInfoEntry.MyEnum.*;
/**
ETYPE-INFO-ENTRY ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
}
*/
public class EtypeInfoEntry extends KrbSequenceType {
- private static final int ETYPE = 0;
- private static final int SALT = 1;
+ protected static enum MyEnum implements EnumType {
+ ETYPE,
+ SALT;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(ETYPE, 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/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
index 37eb44f..8315690 100644
--- 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
@@ -86,6 +86,11 @@ public enum HostAddrType implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static HostAddrType 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/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
index 948bcc4..8a63911 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.base.HostAddress.MyEnum.*;
import java.net.InetAddress;
import java.util.Arrays;
@@ -35,8 +37,20 @@ HostAddress ::= SEQUENCE {
}
*/
public class HostAddress extends KrbSequenceType {
- private static final int ADDR_TYPE = 0;
- private static final int ADDRESS = 1;
+ protected static enum MyEnum implements EnumType {
+ ADDR_TYPE,
+ ADDRESS;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(ADDR_TYPE, 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/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
index 22ea613..bf77407 100644
--- 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
@@ -112,6 +112,11 @@ public enum KeyUsage implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static KeyUsage 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/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
index 73b3e01..9bc1164 100644
--- 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
@@ -20,12 +20,14 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.KrbErrorCode;
import org.apache.kerby.kerberos.kerb.type.KerberosString;
import org.apache.kerby.kerberos.kerb.type.KerberosTime;
+import static org.apache.kerby.kerberos.kerb.type.base.KrbError.MyEnum.*;
/**
KRB-ERROR ::= [APPLICATION 30] SEQUENCE {
@@ -45,17 +47,31 @@ import org.apache.kerby.kerberos.kerb.type.KerberosTime;
}
*/
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;
+ protected static enum MyEnum implements EnumType {
+ PVNO,
+ MSG_TYPE,
+ CTIME,
+ CUSEC,
+ STIME,
+ SUSEC,
+ ERROR_CODE,
+ CREALM,
+ CNAME,
+ REALM,
+ SNAME,
+ ETEXT,
+ EDATA;
+
+ @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/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
index ffcccfb..b911088 100644
--- 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
@@ -20,12 +20,26 @@
package org.apache.kerby.kerberos.kerb.type.base;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.kerberos.kerb.KrbConstant;
import org.apache.kerby.kerberos.kerb.type.KrbAppSequenceType;
+import static org.apache.kerby.kerberos.kerb.type.base.KrbMessage.MyEnum.*;
public abstract class KrbMessage extends KrbAppSequenceType {
- protected static final int PVNO = 0;
- protected static final int MSG_TYPE = 1;
+ protected static enum MyEnum implements EnumType {
+ PVNO,
+ MSG_TYPE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
private final int pvno = KrbConstant.KRB_V5;
@@ -40,7 +54,7 @@ public abstract class KrbMessage extends KrbAppSequenceType {
}
protected void setPvno(int pvno) {
- setFieldAsInt(0, pvno);
+ setFieldAsInt(PVNO, pvno);
}
public KrbMessageType getMsgType() {
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/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
index cf3d130..b6f14d8 100644
--- 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
@@ -45,6 +45,11 @@ public enum KrbMessageType implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static KrbMessageType 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/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
index c2b8b76..72f8103 100644
--- 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
@@ -20,6 +20,7 @@
package org.apache.kerby.kerberos.kerb.type.base;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.ExplicitField;
import org.apache.kerby.asn1.type.Asn1Integer;
import org.apache.kerby.asn1.type.Asn1OctetString;
@@ -29,6 +30,7 @@ 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 static org.apache.kerby.kerberos.kerb.type.base.KrbToken.MyEnum.*;
import java.util.Date;
import java.util.List;
@@ -44,8 +46,20 @@ 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;
+ protected static enum MyEnum implements EnumType {
+ TOKEN_FORMAT,
+ TOKEN_VALUE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
private AuthToken innerToken = null;
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/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
index 4b1fff4..daaf66b 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.base.LastReqEntry.MyEnum.*;
/**
LastReq ::= SEQUENCE OF SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
}
*/
public class LastReqEntry extends KrbSequenceType {
- private static final int LR_TYPE = 0;
- private static final int LR_VALUE = 1;
+ protected static enum MyEnum implements EnumType {
+ LR_TYPE,
+ LR_VALUE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(LR_TYPE, 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/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
index c766d27..c68ea8c 100644
--- 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
@@ -49,6 +49,11 @@ public enum LastReqType implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static LastReqType 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/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
index 3cbddfe..48c7755 100644
--- 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
@@ -40,6 +40,11 @@ public enum NameType implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static NameType 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/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
index 1c94adc..d1c3162 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.KerberosStrings;
import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
+import static org.apache.kerby.kerberos.kerb.type.base.PrincipalName.MyEnum.*;
import java.util.Arrays;
import java.util.Collections;
@@ -36,8 +38,21 @@ import java.util.List;
}
*/
public class PrincipalName extends KrbSequenceType {
- private static final int NAME_TYPE = 0;
- private static final int NAME_STRING = 1;
+ protected static enum MyEnum implements EnumType {
+ NAME_TYPE,
+ NAME_STRING;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
+
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(NAME_TYPE, Asn1Integer.class),
new ExplicitField(NAME_STRING, KerberosStrings.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/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
index 9f55e6d..f9146f5 100644
--- 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
@@ -52,6 +52,11 @@ public enum SamType implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static SamType fromValue(Integer value) {
if (value != null) {
for (SamType st : SamType.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/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
index b2b6e26..477b5be 100644
--- 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
@@ -36,6 +36,11 @@ public enum TokenFormat implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static TokenFormat 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/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
index 3b38ff9..b9c9e57 100644
--- 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
@@ -20,10 +20,12 @@
package org.apache.kerby.kerberos.kerb.type.base;
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.base.TransitedEncoding.MyEnum.*;
/**
TransitedEncoding ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
}
*/
public class TransitedEncoding extends KrbSequenceType {
- private static final int TR_TYPE = 0;
- private static final int CONTENTS = 1;
+ protected static enum MyEnum implements EnumType {
+ TR_TYPE,
+ CONTENTS;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(TR_TYPE, 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/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
index 262ac8c..ed988eb 100644
--- 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
@@ -37,6 +37,11 @@ public enum TransitedEncodingType implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static TransitedEncodingType 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/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
index b6dd972..ac6129d 100644
--- 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
@@ -36,6 +36,11 @@ public enum ArmorType implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static ArmorType 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/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
index f97f0ae..8330922 100644
--- 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
@@ -39,6 +39,11 @@ public enum FastOption implements EnumType {
return value;
}
+ @Override
+ public String getName() {
+ return name();
+ }
+
public static FastOption 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/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
index 0cde5f6..c111ae9 100644
--- 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
@@ -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.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.fast.KrbFastArmor.MyEnum.*;
/**
KrbFastArmor ::= SEQUENCE {
@@ -34,8 +36,20 @@ import org.apache.kerby.kerberos.kerb.type.KrbSequenceType;
}
*/
public class KrbFastArmor extends KrbSequenceType {
- private static final int ARMOR_TYPE = 0;
- private static final int ARMOR_VALUE = 1;
+ protected static enum MyEnum implements EnumType {
+ ARMOR_TYPE,
+ ARMOR_VALUE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(ARMOR_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/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
index 0615a30..996f33d 100644
--- 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
@@ -20,9 +20,11 @@
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.EncryptedData;
+import static org.apache.kerby.kerberos.kerb.type.fast.KrbFastArmoredRep.MyEnum.*;
/**
KrbFastArmoredRep ::= SEQUENCE {
@@ -32,7 +34,19 @@ import org.apache.kerby.kerberos.kerb.type.base.EncryptedData;
}
*/
public class KrbFastArmoredRep extends KrbSequenceType {
- private static final int ENC_FAST_REP = 0;
+ protected static enum MyEnum implements EnumType {
+ ENC_FAST_REP;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
//private
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
[20/26] directory-kerby git commit: ASN1. Avoiding the clone of field
info array
Posted by pl...@apache.org.
ASN1. Avoiding the clone of field info array
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/0a7853dc
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/0a7853dc
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/0a7853dc
Branch: refs/heads/pkinit-support
Commit: 0a7853dc9158ace1b00b9a6d876e11ca630ac5a6
Parents: e1a4c3a
Author: Kai Zheng <ka...@intel.com>
Authored: Fri Dec 4 18:43:49 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Fri Dec 4 18:43:49 2015 +0800
----------------------------------------------------------------------
.../org/apache/kerby/asn1/type/Asn1CollectionType.java | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0a7853dc/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 63092a3..a295a59 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
@@ -30,15 +30,17 @@ import java.nio.ByteBuffer;
/**
* For collection type that may consist of tagged fields
*/
-public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1CollectionType> {
- private Asn1FieldInfo[] fieldInfos;
- private Asn1Type[] fields;
+public abstract class Asn1CollectionType
+ extends AbstractAsn1Type<Asn1CollectionType> {
+ private final Asn1FieldInfo[] fieldInfos;
+ private final Asn1Type[] fields;
- public Asn1CollectionType(UniversalTag universalTag, Asn1FieldInfo[] fieldInfos) {
+ public Asn1CollectionType(UniversalTag universalTag,
+ final Asn1FieldInfo[] fieldInfos) {
super(universalTag);
setValue(this);
- this.fieldInfos = fieldInfos.clone();
+ this.fieldInfos = fieldInfos;
this.fields = new Asn1Type[fieldInfos.length];
usePrimitive(false);
}
[22/26] directory-kerby git commit: ASN1. Renamed some classes to be
consistent
Posted by pl...@apache.org.
ASN1. Renamed some classes to be consistent
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/75c64833
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/75c64833
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/75c64833
Branch: refs/heads/pkinit-support
Commit: 75c648331941543b075220923183f4dee2db3179
Parents: 885cff3
Author: Kai Zheng <ka...@intel.com>
Authored: Sat Dec 5 06:27:31 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sat Dec 5 06:27:31 2015 +0800
----------------------------------------------------------------------
.../kerby/asn1/type/Asn1TaggingCollection.java | 183 +++++++++++++++++++
.../kerby/asn1/type/Asn1TaggingSequence.java | 38 ++++
.../apache/kerby/asn1/type/Asn1TaggingSet.java | 39 ++++
.../kerby/asn1/type/TaggingCollection.java | 183 -------------------
.../apache/kerby/asn1/type/TaggingSequence.java | 38 ----
.../org/apache/kerby/asn1/type/TaggingSet.java | 39 ----
.../org/apache/kerby/asn1/PersonnelRecord.java | 8 +-
.../kerberos/kerb/type/KrbAppSequenceType.java | 4 +-
8 files changed, 266 insertions(+), 266 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/75c64833/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingCollection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingCollection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingCollection.java
new file mode 100644
index 0000000..25dfbf3
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingCollection.java
@@ -0,0 +1,183 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.kerby.asn1.type;
+
+import org.apache.kerby.asn1.Asn1Dumpable;
+import org.apache.kerby.asn1.Asn1Dumper;
+import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
+import org.apache.kerby.asn1.Tag;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * For tagging a collection type with tagNo, either application specific or
+ * context specific class
+ */
+public abstract class Asn1TaggingCollection
+ extends AbstractAsn1Type<Asn1CollectionType> implements Asn1Dumpable {
+
+ private Asn1Tagging<Asn1CollectionType> tagging;
+ private Asn1CollectionType tagged;
+
+ public Asn1TaggingCollection(int taggingTagNo, Asn1FieldInfo[] tags,
+ boolean isAppSpecific, boolean isImplicit) {
+ super(makeTag(isAppSpecific, taggingTagNo));
+ this.tagged = createTaggedCollection(tags);
+ setValue(tagged);
+ this.tagging = new Asn1Tagging<Asn1CollectionType>(taggingTagNo,
+ tagged, isAppSpecific, isImplicit);
+ }
+
+ private static Tag makeTag(boolean isAppSpecific, int tagNo) {
+ return isAppSpecific ? Tag.newAppTag(tagNo) : Tag.newCtxTag(tagNo);
+ }
+
+ protected abstract Asn1CollectionType createTaggedCollection(Asn1FieldInfo[] tags);
+
+ @Override
+ public Tag tag() {
+ return tagging.tag();
+ }
+
+ @Override
+ public int tagNo() {
+ return tagging.tagNo();
+ }
+
+ @Override
+ public void usePrimitive(boolean isPrimitive) {
+ tagging.usePrimitive(isPrimitive);
+ }
+
+ @Override
+ public boolean isPrimitive() {
+ return tagging.isPrimitive();
+ }
+
+ @Override
+ public void useDefinitiveLength(boolean isDefinitiveLength) {
+ tagging.useDefinitiveLength(isDefinitiveLength);
+ }
+
+ @Override
+ public boolean isDefinitiveLength() {
+ return tagging.isDefinitiveLength();
+ }
+
+ @Override
+ public void useImplicit(boolean isImplicit) {
+ tagging.useImplicit(isImplicit);
+ }
+
+ @Override
+ public boolean isImplicit() {
+ return tagging.isImplicit();
+ }
+
+ @Override
+ public void useDER() {
+ tagging.useDER();
+ }
+
+ @Override
+ public boolean isDER() {
+ return tagging.isDER();
+ }
+
+ @Override
+ public void useBER() {
+ tagging.useBER();
+ }
+
+ @Override
+ public boolean isBER() {
+ return tagging.isBER();
+ }
+
+ @Override
+ public void useCER() {
+ tagging.useCER();
+ }
+
+ @Override
+ public boolean isCER() {
+ return tagging.isCER();
+ }
+
+
+ @Override
+ protected int encodingBodyLength() {
+ return tagging.encodingBodyLength();
+ }
+
+ @Override
+ protected void encodeBody(ByteBuffer buffer) {
+ tagging.encodeBody(buffer);
+ }
+
+ @Override
+ protected void decodeBody(ByteBuffer content) throws IOException {
+ tagging.decodeBody(content);
+ }
+
+ protected <T extends Asn1Type> T getFieldAs(EnumType index, Class<T> t) {
+ return tagged.getFieldAs(index, t);
+ }
+
+ protected void setFieldAs(EnumType index, Asn1Type value) {
+ tagged.setFieldAs(index, value);
+ }
+
+ protected String getFieldAsString(EnumType index) {
+ return tagged.getFieldAsString(index);
+ }
+
+ protected byte[] getFieldAsOctets(EnumType index) {
+ return tagged.getFieldAsOctets(index);
+ }
+
+ protected void setFieldAsOctets(EnumType index, byte[] bytes) {
+ tagged.setFieldAsOctets(index, bytes);
+ }
+
+ protected Integer getFieldAsInteger(EnumType index) {
+ return tagged.getFieldAsInteger(index);
+ }
+
+ protected void setFieldAsInt(EnumType index, int value) {
+ tagged.setFieldAsInt(index, value);
+ }
+
+ protected byte[] getFieldAsOctetBytes(EnumType index) {
+ return tagged.getFieldAsOctets(index);
+ }
+
+ protected void setFieldAsOctetBytes(EnumType index, byte[] value) {
+ tagged.setFieldAsOctets(index, value);
+ }
+
+ @Override
+ public void dumpWith(Asn1Dumper dumper, int indents) {
+ Asn1Type taggedValue = getValue();
+ dumper.dumpType(indents, taggedValue);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/75c64833/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingSequence.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingSequence.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingSequence.java
new file mode 100644
index 0000000..61128de
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingSequence.java
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.Asn1FieldInfo;
+
+/**
+ * For tagging a sequence type with tagNo, either application specific or context specific class
+ */
+public class Asn1TaggingSequence extends Asn1TaggingCollection {
+
+ public Asn1TaggingSequence(int taggingTagNo, Asn1FieldInfo[] tags,
+ boolean isAppSpecific, boolean isImplicit) {
+ super(taggingTagNo, tags, isAppSpecific, isImplicit);
+ }
+
+ @Override
+ protected Asn1CollectionType createTaggedCollection(Asn1FieldInfo[] tags) {
+ return new Asn1SequenceType(tags);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/75c64833/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingSet.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingSet.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingSet.java
new file mode 100644
index 0000000..e9eb17f
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1TaggingSet.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.asn1.type;
+
+import org.apache.kerby.asn1.Asn1FieldInfo;
+
+/**
+ * For tagging a sequence type with tagNo, either application specific or
+ * context specific class
+ */
+public class Asn1TaggingSet extends Asn1TaggingCollection {
+
+ public Asn1TaggingSet(int taggingTagNo, Asn1FieldInfo[] tags,
+ boolean isAppSpecific, boolean isImplicit) {
+ super(taggingTagNo, tags, isAppSpecific, isImplicit);
+ }
+
+ @Override
+ protected Asn1CollectionType createTaggedCollection(Asn1FieldInfo[] tags) {
+ return new Asn1SetType(tags);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/75c64833/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
deleted file mode 100644
index 459c07b..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingCollection.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.kerby.asn1.type;
-
-import org.apache.kerby.asn1.Asn1Dumpable;
-import org.apache.kerby.asn1.Asn1Dumper;
-import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.EnumType;
-import org.apache.kerby.asn1.Tag;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * For tagging a collection type with tagNo, either application specific or
- * context specific class
- */
-public abstract class TaggingCollection
- extends AbstractAsn1Type<Asn1CollectionType> implements Asn1Dumpable {
-
- private Asn1Tagging<Asn1CollectionType> tagging;
- private Asn1CollectionType tagged;
-
- public TaggingCollection(int taggingTagNo, Asn1FieldInfo[] tags,
- boolean isAppSpecific, boolean isImplicit) {
- super(makeTag(isAppSpecific, taggingTagNo));
- this.tagged = createTaggedCollection(tags);
- setValue(tagged);
- this.tagging = new Asn1Tagging<Asn1CollectionType>(taggingTagNo,
- tagged, isAppSpecific, isImplicit);
- }
-
- private static Tag makeTag(boolean isAppSpecific, int tagNo) {
- return isAppSpecific ? Tag.newAppTag(tagNo) : Tag.newCtxTag(tagNo);
- }
-
- protected abstract Asn1CollectionType createTaggedCollection(Asn1FieldInfo[] tags);
-
- @Override
- public Tag tag() {
- return tagging.tag();
- }
-
- @Override
- public int tagNo() {
- return tagging.tagNo();
- }
-
- @Override
- public void usePrimitive(boolean isPrimitive) {
- tagging.usePrimitive(isPrimitive);
- }
-
- @Override
- public boolean isPrimitive() {
- return tagging.isPrimitive();
- }
-
- @Override
- public void useDefinitiveLength(boolean isDefinitiveLength) {
- tagging.useDefinitiveLength(isDefinitiveLength);
- }
-
- @Override
- public boolean isDefinitiveLength() {
- return tagging.isDefinitiveLength();
- }
-
- @Override
- public void useImplicit(boolean isImplicit) {
- tagging.useImplicit(isImplicit);
- }
-
- @Override
- public boolean isImplicit() {
- return tagging.isImplicit();
- }
-
- @Override
- public void useDER() {
- tagging.useDER();
- }
-
- @Override
- public boolean isDER() {
- return tagging.isDER();
- }
-
- @Override
- public void useBER() {
- tagging.useBER();
- }
-
- @Override
- public boolean isBER() {
- return tagging.isBER();
- }
-
- @Override
- public void useCER() {
- tagging.useCER();
- }
-
- @Override
- public boolean isCER() {
- return tagging.isCER();
- }
-
-
- @Override
- protected int encodingBodyLength() {
- return tagging.encodingBodyLength();
- }
-
- @Override
- protected void encodeBody(ByteBuffer buffer) {
- tagging.encodeBody(buffer);
- }
-
- @Override
- protected void decodeBody(ByteBuffer content) throws IOException {
- tagging.decodeBody(content);
- }
-
- protected <T extends Asn1Type> T getFieldAs(EnumType index, Class<T> t) {
- return tagged.getFieldAs(index, t);
- }
-
- protected void setFieldAs(EnumType index, Asn1Type value) {
- tagged.setFieldAs(index, value);
- }
-
- protected String getFieldAsString(EnumType index) {
- return tagged.getFieldAsString(index);
- }
-
- protected byte[] getFieldAsOctets(EnumType index) {
- return tagged.getFieldAsOctets(index);
- }
-
- protected void setFieldAsOctets(EnumType index, byte[] bytes) {
- tagged.setFieldAsOctets(index, bytes);
- }
-
- protected Integer getFieldAsInteger(EnumType index) {
- return tagged.getFieldAsInteger(index);
- }
-
- protected void setFieldAsInt(EnumType index, int value) {
- tagged.setFieldAsInt(index, value);
- }
-
- protected byte[] getFieldAsOctetBytes(EnumType index) {
- return tagged.getFieldAsOctets(index);
- }
-
- protected void setFieldAsOctetBytes(EnumType index, byte[] value) {
- tagged.setFieldAsOctets(index, value);
- }
-
- @Override
- public void dumpWith(Asn1Dumper dumper, int indents) {
- Asn1Type taggedValue = getValue();
- dumper.dumpType(indents, taggedValue);
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/75c64833/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
deleted file mode 100644
index 0bd9fbb..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSequence.java
+++ /dev/null
@@ -1,38 +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.Asn1FieldInfo;
-
-/**
- * For tagging a sequence type with tagNo, either application specific or context specific class
- */
-public class TaggingSequence extends TaggingCollection {
-
- public TaggingSequence(int taggingTagNo, Asn1FieldInfo[] tags,
- boolean isAppSpecific, boolean isImplicit) {
- super(taggingTagNo, tags, isAppSpecific, isImplicit);
- }
-
- @Override
- protected Asn1CollectionType createTaggedCollection(Asn1FieldInfo[] tags) {
- return new Asn1SequenceType(tags);
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/75c64833/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
deleted file mode 100644
index e13d5f0..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/TaggingSet.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.asn1.type;
-
-import org.apache.kerby.asn1.Asn1FieldInfo;
-
-/**
- * For tagging a sequence type with tagNo, either application specific or
- * context specific class
- */
-public class TaggingSet extends TaggingCollection {
-
- public TaggingSet(int taggingTagNo, Asn1FieldInfo[] tags,
- boolean isAppSpecific, boolean isImplicit) {
- super(taggingTagNo, tags, isAppSpecific, isImplicit);
- }
-
- @Override
- protected Asn1CollectionType createTaggedCollection(Asn1FieldInfo[] tags) {
- return new Asn1SetType(tags);
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/75c64833/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 1752046..8547cdd 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
@@ -24,8 +24,8 @@ 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.TaggingSequence;
-import org.apache.kerby.asn1.type.TaggingSet;
+import org.apache.kerby.asn1.type.Asn1TaggingSequence;
+import org.apache.kerby.asn1.type.Asn1TaggingSet;
import static org.apache.kerby.asn1.PersonnelRecord.MyEnum.*;
import static org.apache.kerby.asn1.PersonnelRecord.ChildInformation.MyEnum.*;
import static org.apache.kerby.asn1.PersonnelRecord.Name.MyEnum.*;
@@ -34,7 +34,7 @@ import static org.apache.kerby.asn1.PersonnelRecord.Name.MyEnum.*;
* Ref. X.690-0207(http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf),
* Annex A, A.1 ASN.1 description of the record structure
*/
-public class PersonnelRecord extends TaggingSet {
+public class PersonnelRecord extends Asn1TaggingSet {
protected static enum MyEnum implements EnumType {
NAME,
TITLE,
@@ -170,7 +170,7 @@ public class PersonnelRecord extends TaggingSet {
}
}
- public static class Name extends TaggingSequence {
+ public static class Name extends Asn1TaggingSequence {
protected static enum MyEnum implements EnumType {
GIVENNAME,
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/75c64833/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
index b2469e2..de9a644 100644
--- 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
@@ -21,12 +21,12 @@ package org.apache.kerby.kerberos.kerb.type;
import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.Asn1FieldInfo;
-import org.apache.kerby.asn1.type.TaggingSequence;
+import org.apache.kerby.asn1.type.Asn1TaggingSequence;
/**
* This is for application specific sequence tagged with a number.
*/
-public abstract class KrbAppSequenceType extends TaggingSequence {
+public abstract class KrbAppSequenceType extends Asn1TaggingSequence {
public KrbAppSequenceType(int tagNo, Asn1FieldInfo[] fieldInfos) {
super(tagNo, fieldInfos, true, false); // Kerberos favors explicit
}
[14/26] directory-kerby git commit: DIRKRB-486 Dumping support for
built-in ASN1 types and user defined types.
Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 3c1c879..97f7b03 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
@@ -20,7 +20,9 @@
package org.apache.kerby.x509.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.x509.type.UserNotice.MyEnum.*;
/**
*
@@ -33,8 +35,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
*
*/
public class UserNotice extends Asn1SequenceType {
- private static final int NOTICE_REF = 0;
- private static final int EXPLICIT_TEXT = 1;
+ protected static enum MyEnum implements EnumType {
+ NOTICE_REF,
+ EXPLICIT_TEXT;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(NOTICE_REF, NoticeReference.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 4964d29..e156206 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.V2Form.MyEnum.*;
/**
* Produce an object suitable for an ASN1OutputStream.
@@ -37,9 +39,21 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class V2Form extends Asn1SequenceType {
- private static final int ISSUER_NAME = 0;
- private static final int BASE_CERTIFICATE_ID = 1;
- private static final int OBJECT_DIGEST_INFO = 2;
+ protected static enum MyEnum implements EnumType {
+ ISSUER_NAME,
+ BASE_CERTIFICATE_ID,
+ OBJECT_DIGEST_INFO;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(ISSUER_NAME, GeneralNames.class),
[09/26] directory-kerby git commit: Remove logging output from
console during build
Posted by pl...@apache.org.
Remove logging output from console during build
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/0138b2a7
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/0138b2a7
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/0138b2a7
Branch: refs/heads/pkinit-support
Commit: 0138b2a75c489437d8a8e4e61f0c62f358ae13b7
Parents: 54c10a3
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Tue Dec 1 11:14:46 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Tue Dec 1 11:14:46 2015 +0000
----------------------------------------------------------------------
.../src/test/resources/log4j.properties | 30 ++++++++++++++++++++
kerby-kerb/integration-test/run/login.conf | 2 +-
.../kerb/integration/test/AppClient.java | 2 +-
.../kerb/integration/test/AppServer.java | 4 +--
.../kerb/integration/test/gss/GssAppClient.java | 16 +++++------
.../kerb/integration/test/gss/GssAppServer.java | 30 +++++++++-----------
.../integration/test/sasl/SaslAppClient.java | 4 +--
.../integration/test/sasl/SaslAppServer.java | 18 ++++++------
.../integration/test/TokenLoginTestBase.java | 2 +-
.../src/test/resources/log4j.properties | 30 ++++++++++++++++++++
.../kerby/kerberos/kerb/client/JaasKrbUtil.java | 2 +-
pom.xml | 1 +
12 files changed, 100 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kdc-test/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/resources/log4j.properties b/kerby-kdc-test/src/test/resources/log4j.properties
new file mode 100644
index 0000000..a42f39a
--- /dev/null
+++ b/kerby-kdc-test/src/test/resources/log4j.properties
@@ -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.
+#############################################################################
+log4j.rootLogger=ERROR, LOGFILE
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+log4j.appender.LOGFILE=org.apache.log4j.FileAppender
+log4j.appender.LOGFILE.File=target/kerby.log
+log4j.appender.LOGFILE.Append=false
+log4j.appender.LOGFILE.Threshold=DEBUG
+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/integration-test/run/login.conf
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/run/login.conf b/kerby-kerb/integration-test/run/login.conf
index 0e2facb..8932d38 100644
--- a/kerby-kerb/integration-test/run/login.conf
+++ b/kerby-kerb/integration-test/run/login.conf
@@ -24,7 +24,7 @@
com.sun.security.jgss.initiate {
kerb.token.login.Krb5TokenAuthnLoginModule required
- debug=true
+ debug=false
principal="drankye@SH.INTEL.COM"
useTicketCache=true
doNotPrompt=false;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppClient.java b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppClient.java
index 264fab6..c0a636a 100644
--- a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppClient.java
+++ b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppClient.java
@@ -43,7 +43,7 @@ public abstract class AppClient {
}
public void run() {
- System.out.println("Connected to server");
+ // System.out.println("Connected to server");
try {
withConnection(conn);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppServer.java b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppServer.java
index 337507c..77abc65 100644
--- a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppServer.java
+++ b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/AppServer.java
@@ -65,10 +65,10 @@ public abstract class AppServer implements Runnable {
}
private void runOnce() {
- System.out.println("Waiting for incoming connection...");
+ // System.out.println("Waiting for incoming connection...");
Transport.Connection conn = acceptor.accept();
- System.out.println("Got connection from client");
+ // System.out.println("Got connection from client");
try {
onConnection(conn);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppClient.java b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppClient.java
index 278f294..32fdf5c 100644
--- a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppClient.java
+++ b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppClient.java
@@ -86,18 +86,18 @@ public class GssAppClient extends AppClient {
}
}
- System.out.println("Context Established! ");
- System.out.println("Client is " + context.getSrcName());
- System.out.println("Server is " + context.getTargName());
+ //System.out.println("Context Established! ");
+ //System.out.println("Client is " + context.getSrcName());
+ //System.out.println("Server is " + context.getTargName());
- if (context.getMutualAuthState()) {
- System.out.println("Mutual authentication took place!");
- }
+ //if (context.getMutualAuthState()) {
+ //System.out.println("Mutual authentication took place!");
+ //}
byte[] messageBytes = "Hello There!\0".getBytes(StandardCharsets.UTF_8);
MessageProp prop = new MessageProp(0, true);
token = context.wrap(messageBytes, 0, messageBytes.length, prop);
- System.out.println("Will send wrap token of size " + token.length);
+ //System.out.println("Will send wrap token of size " + token.length);
conn.sendToken(token);
token = conn.recvToken();
@@ -105,7 +105,7 @@ public class GssAppClient extends AppClient {
messageBytes, 0, messageBytes.length, prop);
setTestOK(true);
- System.out.println("Verified received MIC for message.");
+ //System.out.println("Verified received MIC for message.");
context.dispose();
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppServer.java b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppServer.java
index 84ffff2..3e5d3cf 100644
--- a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppServer.java
+++ b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/gss/GssAppServer.java
@@ -29,8 +29,6 @@ import org.ietf.jgss.GSSName;
import org.ietf.jgss.MessageProp;
import org.ietf.jgss.Oid;
-import java.nio.charset.StandardCharsets;
-
public class GssAppServer extends AppServer {
private String serverPrincipal;
private GSSManager manager;
@@ -67,7 +65,7 @@ public class GssAppServer extends AppServer {
protected void onConnection(Transport.Connection conn) throws Exception {
byte[] token;
- System.out.print("Starting negotiating security context");
+ // System.out.print("Starting negotiating security context");
while (!context.isEstablished()) {
token = conn.recvToken();
token = context.acceptSecContext(token, 0, token.length);
@@ -76,9 +74,9 @@ public class GssAppServer extends AppServer {
}
}
- System.out.print("Context Established! ");
- System.out.println("Client is " + context.getSrcName());
- System.out.println("Server is " + context.getTargName());
+ // System.out.print("Context Established! ");
+ // System.out.println("Client is " + context.getSrcName());
+ // System.out.println("Server is " + context.getTargName());
doWith(context, conn);
@@ -87,24 +85,24 @@ public class GssAppServer extends AppServer {
protected void doWith(GSSContext context,
Transport.Connection conn) throws Exception {
- if (context.getMutualAuthState()) {
- System.out.println("Mutual authentication took place!");
- }
+ //if (context.getMutualAuthState()) {
+ // System.out.println("Mutual authentication took place!");
+ //}
MessageProp prop = new MessageProp(0, false);
byte[] token = conn.recvToken();
byte[] bytes = context.unwrap(token, 0, token.length, prop);
- String str = new String(bytes, StandardCharsets.UTF_8);
- System.out.println("Received data \""
- + str + "\" of length " + str.length());
+ //String str = new String(bytes, StandardCharsets.UTF_8);
+ // System.out.println("Received data \""
+ // + str + "\" of length " + str.length());
- System.out.println("Confidentiality applied: "
- + prop.getPrivacy());
+ //System.out.println("Confidentiality applied: "
+ // + prop.getPrivacy());
prop.setQOP(0);
token = context.getMIC(bytes, 0, bytes.length, prop);
- System.out.println("Will send MIC token of size "
- + token.length);
+ //System.out.println("Will send MIC token of size "
+ //+ token.length);
conn.sendToken(token);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppClient.java b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppClient.java
index 2509df9..b928e01 100644
--- a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppClient.java
+++ b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppClient.java
@@ -79,10 +79,10 @@ public class SaslAppClient extends AppClient {
}
}
- System.out.println("Context Established! ");
+ //System.out.println("Context Established! ");
token = "Hello There!\0".getBytes(StandardCharsets.UTF_8);
- System.out.println("Will send wrap token of size " + token.length);
+ //System.out.println("Will send wrap token of size " + token.length);
conn.sendToken(token);
setTestOK(true);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppServer.java b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppServer.java
index f769d5e..a681dae 100644
--- a/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppServer.java
+++ b/kerby-kerb/integration-test/src/main/java/org/apache/kerby/kerberos/kerb/integration/test/sasl/SaslAppServer.java
@@ -30,7 +30,6 @@ import javax.security.sasl.Sasl;
import javax.security.sasl.SaslException;
import javax.security.sasl.SaslServer;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
@@ -63,7 +62,7 @@ public class SaslAppServer extends AppServer {
@Override
protected void onConnection(Transport.Connection conn) throws Exception {
- System.out.print("Starting negotiating security context");
+ // System.out.print("Starting negotiating security context");
//mechanism, protocol, serverId, saslProperties, callback
CallbackHandler callbackHandler = new SaslGssCallbackHandler();
@@ -90,7 +89,7 @@ public class SaslAppServer extends AppServer {
}
}
- System.out.print("Context Established! ");
+ // System.out.print("Context Established! ");
doWith(ss, props, conn);
@@ -99,10 +98,11 @@ public class SaslAppServer extends AppServer {
protected void doWith(SaslServer ss, Map<String, Object> props,
Transport.Connection conn) throws IOException, Exception {
- byte[] token = conn.recvToken();
- String str = new String(token, StandardCharsets.UTF_8);
- System.out.println("Received data \""
- + str + "\" of length " + str.length());
+ conn.recvToken();
+ //byte[] token = conn.recvToken();
+ //String str = new String(token, StandardCharsets.UTF_8);
+ // System.out.println("Received data \""
+ // + str + "\" of length " + str.length());
}
public static class SaslGssCallbackHandler implements CallbackHandler {
@@ -128,8 +128,8 @@ public class SaslAppServer extends AppServer {
ac.setAuthorized(false);
}
if (ac.isAuthorized()) {
- System.out.println("SASL server GSSAPI callback: setting "
- + "canonicalized client ID: " + authzid);
+ // System.out.println("SASL server GSSAPI callback: setting "
+ //+ "canonicalized client ID: " + authzid);
ac.setAuthorizedID(authzid);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/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 025a9fa..4741372 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
@@ -86,7 +86,7 @@ public class TokenLoginTestBase extends LoginTestBase {
AuthToken token = issueToken(getClientPrincipal());
String tokenStr = tokenEncoder.encodeAsString(token);
TokenCache.writeToken(tokenStr);
- System.out.println("Issued token: " + tokenStr);
+ // System.out.println("Issued token: " + tokenStr);
tokenCache = TokenCache.getDefaultTokenCache();
TgtTicket tgt = getKrbClient().requestTgt(getClientPrincipal(),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/integration-test/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/kerby-kerb/integration-test/src/test/resources/log4j.properties b/kerby-kerb/integration-test/src/test/resources/log4j.properties
new file mode 100644
index 0000000..a42f39a
--- /dev/null
+++ b/kerby-kerb/integration-test/src/test/resources/log4j.properties
@@ -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.
+#############################################################################
+log4j.rootLogger=ERROR, LOGFILE
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+log4j.appender.LOGFILE=org.apache.log4j.FileAppender
+log4j.appender.LOGFILE.File=target/kerby.log
+log4j.appender.LOGFILE.Append=false
+log4j.appender.LOGFILE.Threshold=DEBUG
+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/kerby-kerb/kerb-simplekdc/src/main/java/org/apache/kerby/kerberos/kerb/client/JaasKrbUtil.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-simplekdc/src/main/java/org/apache/kerby/kerberos/kerb/client/JaasKrbUtil.java b/kerby-kerb/kerb-simplekdc/src/main/java/org/apache/kerby/kerberos/kerb/client/JaasKrbUtil.java
index c5f10bc..0d6f366 100644
--- a/kerby-kerb/kerb-simplekdc/src/main/java/org/apache/kerby/kerberos/kerb/client/JaasKrbUtil.java
+++ b/kerby-kerb/kerb-simplekdc/src/main/java/org/apache/kerby/kerberos/kerb/client/JaasKrbUtil.java
@@ -42,7 +42,7 @@ import java.util.Set;
*/
public final class JaasKrbUtil {
- public static final boolean ENABLE_DEBUG = true;
+ public static final boolean ENABLE_DEBUG = false;
private JaasKrbUtil() { }
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/0138b2a7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 90be760..bdbc5df 100644
--- a/pom.xml
+++ b/pom.xml
@@ -177,6 +177,7 @@
<skipTests>${skipTests}</skipTests>
<reuseForks>false</reuseForks>
<systemPropertyVariables>
+ <log4j.configuration>log4j.properties</log4j.configuration>
</systemPropertyVariables>
<failIfNoTests>false</failIfNoTests>
</configuration>
[15/26] directory-kerby git commit: DIRKRB-486 Dumping support for
built-in ASN1 types and user defined types.
Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 e1c0451..de59a30 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
@@ -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.RevocationInfoChoice.MyEnum.*;
/**
* RevocationInfoChoice ::= CHOICE {
@@ -30,8 +32,20 @@ import org.apache.kerby.asn1.ImplicitField;
* }
*/
public class RevocationInfoChoice extends Asn1Choice {
- private static final int CRL = 0;
- private static final int OTHER = 1;
+ protected static enum MyEnum implements EnumType {
+ CRL,
+ OTHER;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(CRL, CertificateList.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 0d23bbc..39e5a25 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
@@ -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.asn1.ImplicitField;
+import static org.apache.kerby.cms.type.SignedData.MyEnum.*;
/**
* Ref. RFC 5652
@@ -38,12 +40,24 @@ import org.apache.kerby.asn1.ImplicitField;
*
*/
public class SignedData extends Asn1SequenceType {
- private static final int CMS_VERSION = 0;
- private static final int DIGEST_ALGORITHMS = 1;
- private static final int ENCAP_CONTENT_INFO = 2;
- private static final int CERTIFICATES = 3;
- private static final int CRLS = 4;
- private static final int SIGNER_INFOS = 5;
+ protected static enum MyEnum implements EnumType {
+ CMS_VERSION,
+ DIGEST_ALGORITHMS,
+ ENCAP_CONTENT_INFO,
+ CERTIFICATES,
+ CRLS,
+ SIGNER_INFOS;
+
+ @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/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 9cd618b..3c6c3a1 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
@@ -19,10 +19,12 @@
*/
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.ExplicitField;
import org.apache.kerby.x509.type.SubjectKeyIdentifier;
+import static org.apache.kerby.cms.type.SignerIdentifier.MyEnum.*;
/**
* Ref. RFC 5652
@@ -36,8 +38,20 @@ import org.apache.kerby.x509.type.SubjectKeyIdentifier;
* </pre>
*/
public class SignerIdentifier extends Asn1Choice {
- private static final int ISSUER_AND_SERIAL_NUMBER = 0;
- private static final int SUBJECT_KEY_IDENTIFIER = 1;
+ protected static enum MyEnum implements EnumType {
+ 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 Asn1FieldInfo(ISSUER_AND_SERIAL_NUMBER, IssuerAndSerialNumber.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 342d965..211bc55 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
@@ -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.asn1.ImplicitField;
+import static org.apache.kerby.cms.type.SignerInfo.MyEnum.*;
/**
* Ref. RFC 5652
@@ -39,13 +41,25 @@ import org.apache.kerby.asn1.ImplicitField;
* </pre>
*/
public class SignerInfo extends Asn1SequenceType {
- private static final int CMS_VERSION = 0;
- private static final int SID = 1;
- private static final int DIGEST_ALGORITHM = 2;
- private static final int SIGNED_ATTRS = 3;
- private static final int SIGNATURE_ALGORITHMS = 4;
- private static final int SIGNATURE = 5;
- private static final int UNSIGNED_ATTRS = 6;
+ protected static enum MyEnum implements EnumType {
+ CMS_VERSION,
+ SID,
+ DIGEST_ALGORITHM,
+ SIGNED_ATTRS,
+ SIGNATURE_ALGORITHMS,
+ SIGNATURE,
+ UNSIGNED_ATTRS;
+
+ @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/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 5c0bc88..cdd3b7e 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
@@ -19,11 +19,13 @@
*/
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.ExplicitField;
import org.apache.kerby.x509.type.GeneralNames;
import org.apache.kerby.x509.type.IssuerSerial;
+import static org.apache.kerby.cms.type.Subject.MyEnum.*;
/**
* subject CHOICE {
@@ -35,8 +37,20 @@ import org.apache.kerby.x509.type.IssuerSerial;
*
*/
public class Subject extends Asn1Choice {
- private static final int BASE_CERTIFICATE_ID = 0;
- private static final int SUBJECT_NAME = 1;
+ protected static enum MyEnum implements EnumType {
+ BASE_CERTIFICATE_ID,
+ SUBJECT_NAME;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
new ExplicitField(BASE_CERTIFICATE_ID, IssuerSerial.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 fd4d40c..790334f 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
@@ -19,11 +19,13 @@
*/
package org.apache.kerby.x500.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.x500.type.AttributeTypeAndValue.MyEnum.*;
/**
* AttributeTypeAndValue ::= SEQUENCE {
@@ -32,9 +34,20 @@ import org.apache.kerby.asn1.type.Asn1Type;
* }
*/
public class AttributeTypeAndValue extends Asn1SequenceType {
+ protected static enum MyEnum implements EnumType {
+ TYPE,
+ VALUE;
- private static final int TYPE = 0;
- private static final int VALUE = 1;
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
new Asn1FieldInfo(TYPE, Asn1ObjectIdentifier.class, true),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 0e56095..b8ef0f5 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
@@ -19,8 +19,10 @@
*/
package org.apache.kerby.x500.type;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Choice;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import static org.apache.kerby.x500.type.Name.MyEnum.*;
/**
*
@@ -29,7 +31,19 @@ import org.apache.kerby.asn1.Asn1FieldInfo;
* </pre>
*/
public class Name extends Asn1Choice {
- private static final int RDN_SEQUENCE = 0;
+ protected static enum MyEnum implements EnumType {
+ RDN_SEQUENCE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
new Asn1FieldInfo(RDN_SEQUENCE, RDNSequence.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 4f88e22..9f177f0 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.AccessDescription.MyEnum.*;
/**
*
@@ -33,8 +35,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class AccessDescription extends Asn1SequenceType {
- private static final int ACCESS_METHOD = 0;
- private static final int ACCESS_LOCATION = 1;
+ protected static enum MyEnum implements EnumType {
+ ACCESS_METHOD,
+ ACCESS_LOCATION;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(ACCESS_METHOD, Asn1ObjectIdentifier.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 8fd4db2..c934f34 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
@@ -19,11 +19,13 @@
*/
package org.apache.kerby.x509.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.x509.type.AlgorithmIdentifier.MyEnum.*;
/**
* AlgorithmIdentifier ::= SEQUENCE {
@@ -32,8 +34,20 @@ import org.apache.kerby.asn1.type.Asn1Type;
* }
*/
public class AlgorithmIdentifier extends Asn1SequenceType {
- private static final int ALGORITHM = 0;
- private static final int PARAMETERS = 1;
+ protected static enum MyEnum implements EnumType {
+ ALGORITHM,
+ PARAMETERS;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(ALGORITHM, Asn1ObjectIdentifier.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 5665c07..977dcaa 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
@@ -19,9 +19,11 @@
*/
package org.apache.kerby.x509.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.ExplicitField;
+import static org.apache.kerby.x509.type.AttCertIssuer.MyEnum.*;
/**
*
@@ -33,8 +35,20 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class AttCertIssuer extends Asn1Choice {
- private static final int V1_FORM = 0;
- private static final int V2_FORM = 1;
+ protected static enum MyEnum implements EnumType {
+ V1_FORM,
+ V2_FORM;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(V1_FORM, GeneralNames.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 777cc91..25939dc 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
import org.apache.kerby.asn1.type.Asn1SequenceType;
+import static org.apache.kerby.x509.type.AttCertValidityPeriod.MyEnum.*;
/**
* <pre>
@@ -32,8 +34,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class AttCertValidityPeriod extends Asn1SequenceType {
- private static final int NOT_BEFORE = 0;
- private static final int NOT_AFTER = 1;
+ protected static enum MyEnum implements EnumType {
+ NOT_BEFORE,
+ NOT_AFTER;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(NOT_BEFORE, Asn1GeneralizedTime.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 77d8f6b..4e56cb1 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.Attribute.MyEnum.*;
/**
* <pre>
@@ -32,8 +34,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </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/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 8e7a308..f24c383 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
@@ -19,9 +19,11 @@
*/
package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.AttributeCertificate.MyEnum.*;
/**
* <pre>
@@ -33,9 +35,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class AttributeCertificate extends Asn1SequenceType {
- private static final int ACI_INFO = 0;
- private static final int SIGNATURE_ALGORITHM = 1;
- private static final int SIGNATURE_VALUE = 2;
+ protected static enum MyEnum implements EnumType {
+ ACI_INFO,
+ SIGNATURE_ALGORITHM,
+ SIGNATURE_VALUE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(ACI_INFO, AttributeCertificateInfo.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 e38ff47..6d671c1 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
@@ -19,10 +19,12 @@
*/
package org.apache.kerby.x509.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;
import org.apache.kerby.asn1.type.Asn1SequenceType;
+import static org.apache.kerby.x509.type.AttributeCertificateInfo.MyEnum.*;
/**
*
@@ -45,15 +47,27 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class AttributeCertificateInfo extends Asn1SequenceType {
- private static final int VERSION = 0;
- private static final int HOLDER = 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,
+ HOLDER,
+ 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/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 3ac11b3..8861394 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ImplicitField;
+import static org.apache.kerby.x509.type.AuthorityKeyIdentifier.MyEnum.*;
/**
*
@@ -39,10 +41,21 @@ import org.apache.kerby.asn1.ImplicitField;
*
*/
public class AuthorityKeyIdentifier extends Asn1SequenceType {
- private static final int KEY_IDENTIFIER = 0;
- private static final int AUTHORITY_CERT_ISSUER = 1;
- private static final int AUTHORITY_CERT_SERIAL_NUMBER = 2;
+ protected static enum MyEnum implements EnumType {
+ KEY_IDENTIFIER,
+ AUTHORITY_CERT_ISSUER,
+ AUTHORITY_CERT_SERIAL_NUMBER;
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ImplicitField(KEY_IDENTIFIER, KeyIdentifier.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 bece3bd..fc860e8 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
@@ -19,10 +19,12 @@
*/
package org.apache.kerby.x509.type;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Boolean;
import org.apache.kerby.asn1.Asn1FieldInfo;
import org.apache.kerby.asn1.type.Asn1Integer;
import org.apache.kerby.asn1.type.Asn1SequenceType;
+import static org.apache.kerby.x509.type.BasicConstraints.MyEnum.*;
import java.math.BigInteger;
@@ -35,8 +37,20 @@ import java.math.BigInteger;
* </pre>
*/
public class BasicConstraints extends Asn1SequenceType {
- private static final int CA = 0;
- private static final int PATH_LEN_CONSTRAINT = 1;
+ protected static enum MyEnum implements EnumType {
+ CA,
+ PATH_LEN_CONSTRAINT;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(CA, Asn1Boolean.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java
index 02558cb..6ec021d 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/CRLReason.java
@@ -56,6 +56,11 @@ enum CRLReasonEnum implements EnumType {
public int getValue() {
return ordinal();
}
+
+ @Override
+ public String getName() {
+ return name();
+ }
}
public class CRLReason extends Asn1Enumerated<CRLReasonEnum> {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 fbb5567..a14cae4 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
@@ -19,9 +19,11 @@
*/
package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.Certificate.MyEnum.*;
/**
* <pre>
@@ -33,9 +35,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class Certificate extends Asn1SequenceType {
- private static final int TBS_CERTIFICATE = 0;
- private static final int SIGNATURE_ALGORITHM = 1;
- private static final int SIGNATURE = 2;
+ protected static enum MyEnum implements EnumType {
+ TBS_CERTIFICATE,
+ SIGNATURE_ALGORITHM,
+ SIGNATURE;
+
+ @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/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 60b8d85..5ab01e7 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
@@ -19,9 +19,11 @@
*/
package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.CertificateList.MyEnum.*;
/**
*
@@ -35,9 +37,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </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/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 35f27f0..c2ea503 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.CertificatePair.MyEnum.*;
/**
*
@@ -34,8 +36,20 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class CertificatePair extends Asn1SequenceType {
- private static final int FORWARD = 0;
- private static final int REVERSE = 1;
+ protected static enum MyEnum implements EnumType {
+ FORWARD,
+ REVERSE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(FORWARD, Certificate.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 d97db4c..c97b70f 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
@@ -20,15 +20,29 @@
package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.DSAParameter.MyEnum.*;
import java.math.BigInteger;
public class DSAParameter extends Asn1SequenceType {
- private static final int P = 0;
- private static final int Q = 1;
- private static final int G = 2;
+ protected static enum MyEnum implements EnumType {
+ P,
+ Q,
+ G;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(P, Asn1Integer.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 6df3743..293d079 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
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.Asn1SequenceType;
+import static org.apache.kerby.x509.type.DigestInfo.MyEnum.*;
/**
* <pre>
@@ -32,8 +34,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class DigestInfo extends Asn1SequenceType {
- private static final int DIGEST_ALGORITHM = 0;
- private static final int DIGEST = 1;
+ protected static enum MyEnum implements EnumType {
+ DIGEST_ALGORITHM,
+ DIGEST;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(DIGEST_ALGORITHM, AlgorithmIdentifier.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java
index c233133..5c9ccc7 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DigestedObjectType.java
@@ -43,6 +43,11 @@ enum DigestedObjectEnum implements EnumType {
public int getValue() {
return ordinal();
}
+
+ @Override
+ public String getName() {
+ return name();
+ }
}
public class DigestedObjectType extends Asn1Enumerated<DigestedObjectEnum> {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 f2c5cd9..637215b 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
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.x509.type;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1BmpString;
import org.apache.kerby.asn1.type.Asn1Choice;
import org.apache.kerby.asn1.Asn1FieldInfo;
@@ -26,6 +27,7 @@ import org.apache.kerby.asn1.type.Asn1PrintableString;
import org.apache.kerby.asn1.type.Asn1T61String;
import org.apache.kerby.asn1.type.Asn1UniversalString;
import org.apache.kerby.asn1.type.Asn1Utf8String;
+import static org.apache.kerby.x509.type.DirectoryString.MyEnum.*;
/**
* <pre>
@@ -39,12 +41,23 @@ import org.apache.kerby.asn1.type.Asn1Utf8String;
* </pre>
*/
public class DirectoryString extends Asn1Choice {
+ protected static enum MyEnum implements EnumType {
+ TELETEX_STRING,
+ PRINTABLE_STRING,
+ UNIVERSAL_STRING,
+ UTF8_STRING,
+ BMP_STRING;
- private static final int TELETEX_STRING = 0;
- private static final int PRINTABLE_STRING = 1;
- private static final int UNIVERSAL_STRING = 2;
- private static final int UTF8_STRING = 3;
- private static final int BMP_STRING = 4;
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
new Asn1FieldInfo(TELETEX_STRING, Asn1T61String.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 9162f03..68de432 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
@@ -19,12 +19,14 @@
*/
package org.apache.kerby.x509.type;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1BmpString;
import org.apache.kerby.asn1.type.Asn1Choice;
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;
+import static org.apache.kerby.x509.type.DisplayText.MyEnum.*;
/**
* <pre>
@@ -37,10 +39,22 @@ import org.apache.kerby.asn1.type.Asn1VisibleString;
* </pre>
*/
public class DisplayText extends Asn1Choice {
- private static final int IA5_STRING = 0;
- private static final int VISIBLE_STRING = 1;
- private static final int BMP_STRING = 2;
- private static final int UTF8_STRING = 3;
+ protected static enum MyEnum implements EnumType {
+ IA5_STRING,
+ VISIBLE_STRING,
+ BMP_STRING,
+ UTF8_STRING;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
new Asn1FieldInfo(IA5_STRING, Asn1IA5String.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 6bdd897..8d7471b 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.DistributionPoint.MyEnum.*;
/**
*
@@ -34,9 +36,21 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class DistributionPoint extends Asn1SequenceType {
- private static final int DISTRIBUTION_POINT = 0;
- private static final int REASONS = 1;
- private static final int CRL_ISSUER = 2;
+ protected static enum MyEnum implements EnumType {
+ DISTRIBUTION_POINT,
+ REASONS,
+ CRL_ISSUER;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(DISTRIBUTION_POINT, DistributionPointName.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 2c83ee5..8fa3e51 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
@@ -19,10 +19,12 @@
*/
package org.apache.kerby.x509.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.ExplicitField;
import org.apache.kerby.x500.type.RelativeDistinguishedName;
+import static org.apache.kerby.x509.type.DistributionPointName.MyEnum.*;
/**
*
@@ -34,8 +36,20 @@ import org.apache.kerby.x500.type.RelativeDistinguishedName;
* </pre>
*/
public class DistributionPointName extends Asn1Choice {
- private static final int FULL_NAME = 0;
- private static final int NAME_RELATIVE_TO_CRL_ISSUER = 1;
+ protected static enum MyEnum implements EnumType {
+ FULL_NAME,
+ NAME_RELATIVE_TO_CRL_ISSUER;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(FULL_NAME, GeneralNames.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 45eeb66..ee790fb 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
@@ -19,9 +19,11 @@
*/
package org.apache.kerby.x509.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.ExplicitField;
+import static org.apache.kerby.x509.type.EDIPartyName.MyEnum.*;
/**
* <pre>
@@ -32,8 +34,20 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class EDIPartyName extends Asn1Choice {
- private static final int NAME_ASSIGNER = 0;
- private static final int PARTY_NAME = 1;
+ protected static enum MyEnum implements EnumType {
+ NAME_ASSIGNER,
+ PARTY_NAME;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[]{
new ExplicitField(NAME_ASSIGNER, DirectoryString.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 da44646..fc625f4 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
@@ -19,11 +19,13 @@
*/
package org.apache.kerby.x509.type;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Boolean;
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 static org.apache.kerby.x509.type.Extension.MyEnum.*;
/**
* Ref. X.509 V3 extension
@@ -37,9 +39,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class Extension extends Asn1SequenceType {
- private static final int EXTN_ID = 0;
- private static final int CRITICAL = 1;
- private static final int EXTN_VALUE = 2;
+ protected static enum MyEnum implements EnumType {
+ EXTN_ID,
+ CRITICAL,
+ EXTN_VALUE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(EXTN_ID, Asn1ObjectIdentifier.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 dcf6286..c1b79cf 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
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.x509.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.type.Asn1IA5String;
@@ -27,6 +28,7 @@ import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
import org.apache.kerby.asn1.type.Asn1OctetString;
import org.apache.kerby.asn1.ExplicitField;
import org.apache.kerby.x500.type.Name;
+import static org.apache.kerby.x509.type.GeneralName.MyEnum.*;
/**
*
@@ -45,16 +47,27 @@ import org.apache.kerby.x500.type.Name;
* </pre>
*/
public class GeneralName extends Asn1Choice {
-
- private static final int OTHER_NAME = 0;
- private static final int RFC822_NAME = 1;
- private static final int DNS_NAME = 2;
- private static final int X400_ADDRESS = 3;
- private static final int DIRECTORY_NAME = 4;
- private static final int EDI_PARTY_NAME = 5;
- private static final int UNIFORM_RESOURCE_IDENTIFIER = 6;
- private static final int IP_ADDRESS = 7;
- private static final int REGISTERED_ID = 8;
+ protected static enum MyEnum implements EnumType {
+ OTHER_NAME,
+ RFC822_NAME,
+ DNS_NAME,
+ X400_ADDRESS,
+ DIRECTORY_NAME,
+ EDI_PARTY_NAME,
+ UNIFORM_RESOURCE_IDENTIFIER,
+ IP_ADDRESS,
+ REGISTERED_ID;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(OTHER_NAME, OtherName.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 84c8109..34ad9fc 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
@@ -20,9 +20,11 @@
package org.apache.kerby.x509.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.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.GeneralSubtree.MyEnum.*;
/**
*
@@ -37,9 +39,21 @@ import org.apache.kerby.asn1.ExplicitField;
*
*/
public class GeneralSubtree extends Asn1SequenceType {
- private static final int BASE = 0;
- private static final int MINIMUM = 1;
- private static final int MAXMUM = 2;
+ protected static enum MyEnum implements EnumType {
+ BASE,
+ MINIMUM,
+ MAXMUM;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(BASE, GeneralName.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 44319fd..e4aa59b 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.Holder.MyEnum.*;
/**
* <pre>
@@ -38,9 +40,21 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class Holder extends Asn1SequenceType {
- private static final int BASE_CERTIFICATE_ID = 0;
- private static final int ENTITY_NAME = 1;
- private static final int OBJECT_DIGEST_INFO = 2;
+ protected static enum MyEnum implements EnumType {
+ BASE_CERTIFICATE_ID,
+ ENTITY_NAME,
+ OBJECT_DIGEST_INFO;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(BASE_CERTIFICATE_ID, IssuerSerial.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 b7363dc..9a46084 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.IetfAttrSyntax.MyEnum.*;
/**
* Ref. RFC3281
@@ -39,8 +41,20 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class IetfAttrSyntax extends Asn1SequenceType {
- public static final int POLICY_AUTHORITY = 0;
- public static final int VALUES = 1;
+ protected static enum MyEnum implements EnumType {
+ POLICY_AUTHORITY,
+ VALUES;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(POLICY_AUTHORITY, GeneralNames.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 8149e51..86d7606 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
@@ -19,10 +19,12 @@
*/
package org.apache.kerby.x509.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.type.Asn1ObjectIdentifier;
import org.apache.kerby.asn1.type.Asn1OctetString;
+import static org.apache.kerby.x509.type.IetfAttrSyntaxChoice.MyEnum.*;
/**
* Ref. RFC3281
@@ -38,9 +40,21 @@ import org.apache.kerby.asn1.type.Asn1OctetString;
* </pre>
*/
public class IetfAttrSyntaxChoice extends Asn1Choice {
- public static final int OCTETS = 1;
- public static final int OID = 2;
- public static final int UTF8 = 3;
+ protected static enum MyEnum implements EnumType {
+ OCTETS,
+ OID,
+ UTF8;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(OCTETS, Asn1OctetString.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 34e8fd8..e8f5416 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
@@ -19,9 +19,11 @@
*/
package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.IssuerSerial.MyEnum.*;
/**
* <pre>
@@ -33,9 +35,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class IssuerSerial extends Asn1SequenceType {
- private static final int ISSUER = 0;
- private static final int SERIAL = 1;
- private static final int ISSUER_UID = 2;
+ protected static enum MyEnum implements EnumType {
+ ISSUER,
+ SERIAL,
+ ISSUER_UID;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(ISSUER, GeneralNames.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 a725b5a..0970947 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
@@ -19,10 +19,12 @@
*/
package org.apache.kerby.x509.type;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1Boolean;
import org.apache.kerby.asn1.Asn1FieldInfo;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.IssuingDistributionPoint.MyEnum.*;
/**
* <pre>
@@ -37,12 +39,23 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class IssuingDistributionPoint extends Asn1SequenceType {
- private static final int DISTRIBUTION_POINT = 0;
- private static final int ONLY_CONTAINS_USER_CERTS = 1;
- private static final int ONLY_CONTAINS_CA_CERTS = 2;
- private static final int ONLY_SOME_REASONS = 3;
- private static final int INDIRECT_CRL = 4;
- private static final int ONLY_CONTAINS_ATTRIBUTE_CERTS = 5;
+ protected static enum MyEnum implements EnumType {
+ DISTRIBUTION_POINT,
+ ONLY_CONTAINS_USER_CERTS,
+ ONLY_CONTAINS_CA_CERTS,
+ ONLY_SOME_REASONS,
+ INDIRECT_CRL,
+ ONLY_CONTAINS_ATTRIBUTE_CERTS;
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(DISTRIBUTION_POINT, DistributionPointName.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java
index e7dbb06..cde64dd 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/KeyUsage.java
@@ -55,6 +55,11 @@ enum KeyUsageEnum implements EnumType {
public int getValue() {
return ordinal();
}
+
+ @Override
+ public String getName() {
+ return name();
+ }
}
public class KeyUsage extends Asn1Flags {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 96babc9..49e9f2c 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.NameConstraints.MyEnum.*;
/*
* NameConstraints ::= SEQUENCE {
@@ -30,8 +32,20 @@ import org.apache.kerby.asn1.ExplicitField;
* }
*/
public class NameConstraints extends Asn1SequenceType {
- private static final int PERMITTED_SUBTREES = 0;
- private static final int EXCLUDED_SUBTREES = 1;
+ protected static enum MyEnum implements EnumType {
+ PERMITTED_SUBTREES,
+ EXCLUDED_SUBTREES;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(PERMITTED_SUBTREES, GeneralSubtrees.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 436fbc2..f23a4bd 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
@@ -20,7 +20,9 @@
package org.apache.kerby.x509.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.x509.type.NoticeReference.MyEnum.*;
/**
* <pre>
@@ -33,8 +35,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
*
*/
public class NoticeReference extends Asn1SequenceType {
- private static final int ORGANIZATION = 0;
- private static final int NOTICE_NUMBERS = 1;
+ protected static enum MyEnum implements EnumType {
+ ORGANIZATION,
+ NOTICE_NUMBERS;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(ORGANIZATION, DisplayText.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 c6489a8..a18f63e 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
@@ -19,10 +19,12 @@
*/
package org.apache.kerby.x509.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.Asn1ObjectIdentifier;
import org.apache.kerby.asn1.type.Asn1SequenceType;
+import static org.apache.kerby.x509.type.ObjectDigestInfo.MyEnum.*;
/**
*
@@ -43,10 +45,22 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
*
*/
public class ObjectDigestInfo extends Asn1SequenceType {
- private static final int DIGESTED_OBJECT_TYPE = 0;
- private static final int OTHER_OBJECT_TYPE_ID = 1;
- private static final int DIGEST_ALGORITHM = 2;
- private static final int OBJECT_DIGEST = 3;
+ protected static enum MyEnum implements EnumType {
+ DIGESTED_OBJECT_TYPE,
+ OTHER_OBJECT_TYPE_ID,
+ DIGEST_ALGORITHM,
+ OBJECT_DIGEST;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(DIGESTED_OBJECT_TYPE, DigestedObjectType.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 de21159..0995a4b 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
@@ -19,12 +19,14 @@
*/
package org.apache.kerby.x509.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.x509.type.OtherName.MyEnum.*;
/**
* <pre>
@@ -36,8 +38,20 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class OtherName extends Asn1SequenceType {
- private static final int TYPE_ID = 0;
- private static final int VALUE = 1;
+ protected static enum MyEnum implements EnumType {
+ TYPE_ID,
+ VALUE;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(TYPE_ID, Asn1ObjectIdentifier.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 ded02b5..ed7eba5 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
@@ -20,9 +20,11 @@
package org.apache.kerby.x509.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.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.PolicyConstraints.MyEnum.*;
/**
* Ref. RFC 5280
@@ -37,8 +39,20 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class PolicyConstraints extends Asn1SequenceType {
- private static final int REQUIRE_EXPLICIT_POLICY = 0;
- private static final int INHIBIT_POLICY_MAPPING = 1;
+ protected static enum MyEnum implements EnumType {
+ REQUIRE_EXPLICIT_POLICY,
+ INHIBIT_POLICY_MAPPING;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(REQUIRE_EXPLICIT_POLICY, Asn1Integer.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 5b5f06f..81793cc 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
@@ -20,7 +20,9 @@
package org.apache.kerby.x509.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.x509.type.PolicyInformation.MyEnum.*;
/*
* <pre>
@@ -31,8 +33,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class PolicyInformation extends Asn1SequenceType {
- private static final int POLICY_IDENTIFIER = 0;
- private static final int POLICY_QUALIFIERS = 1;
+ protected static enum MyEnum implements EnumType {
+ POLICY_IDENTIFIER,
+ POLICY_QUALIFIERS;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(POLICY_IDENTIFIER, CertPolicyId.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 56f5e68..f6d9797 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
@@ -20,7 +20,9 @@
package org.apache.kerby.x509.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.x509.type.PolicyMapping.MyEnum.*;
/**
* Ref. RFC3280
@@ -32,8 +34,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
*
*/
public class PolicyMapping extends Asn1SequenceType {
- private static final int ISSUER_DOMAIN_POLICY = 0;
- private static final int SUBJECT_DOMAIN_POLICY = 1;
+ protected static enum MyEnum implements EnumType {
+ ISSUER_DOMAIN_POLICY,
+ SUBJECT_DOMAIN_POLICY;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(ISSUER_DOMAIN_POLICY, CertPolicyId.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 0f9434c..4b401f8 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
@@ -19,10 +19,12 @@
*/
package org.apache.kerby.x509.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.Asn1SequenceType;
import org.apache.kerby.asn1.type.Asn1Type;
+import static org.apache.kerby.x509.type.PolicyQualifierInfo.MyEnum.*;
/**
*
@@ -36,8 +38,20 @@ import org.apache.kerby.asn1.type.Asn1Type;
* </pre>
*/
public class PolicyQualifierInfo extends Asn1SequenceType {
- private static final int POLICY_QUALIFIER_ID = 0;
- private static final int QUALIFIER = 1;
+ protected static enum MyEnum implements EnumType {
+ POLICY_QUALIFIER_ID,
+ QUALIFIER;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(POLICY_QUALIFIER_ID, PolicyQualifierId.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 1645d8f..2b365d0 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
@@ -20,9 +20,11 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1GeneralizedTime;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.PrivateKeyUsagePeriod.MyEnum.*;
/**
* <pre>
@@ -33,8 +35,20 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class PrivateKeyUsagePeriod extends Asn1SequenceType {
- private static final int NOT_BEFORE = 0;
- private static final int NOT_AFTER = 1;
+ protected static enum MyEnum implements EnumType {
+ NOT_BEFORE,
+ NOT_AFTER;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(NOT_BEFORE, Asn1GeneralizedTime.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java
----------------------------------------------------------------------
diff --git a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java
index d81798f..0df6b8e 100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/ReasonFlags.java
@@ -54,6 +54,11 @@ enum ReasonFlagsEnum implements EnumType {
public int getValue() {
return ordinal();
}
+
+ @Override
+ public String getName() {
+ return name();
+ }
}
public class ReasonFlags extends Asn1Flags {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 48a347a..c53c323 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
@@ -20,7 +20,9 @@
package org.apache.kerby.x509.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.x509.type.RevokedCertificate.MyEnum.*;
/**
* Ref. RFC 2459
@@ -35,9 +37,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* </pre>
*/
public class RevokedCertificate extends Asn1SequenceType {
- private static final int USER_CERTIFICATE = 0;
- private static final int REVOCATION_DATA = 1;
- private static final int CRL_ENTRY_EXTENSIONS = 2;
+ protected static enum MyEnum implements EnumType {
+ USER_CERTIFICATE,
+ REVOCATION_DATA,
+ CRL_ENTRY_EXTENSIONS;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(USER_CERTIFICATE, CertificateSerialNumber.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 d9c27d1..7495a1a 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
@@ -20,8 +20,10 @@
package org.apache.kerby.x509.type;
import org.apache.kerby.asn1.Asn1FieldInfo;
+import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
+import static org.apache.kerby.x509.type.RoleSyntax.MyEnum.*;
/**
*Ref. RFC3281
@@ -33,8 +35,20 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class RoleSyntax extends Asn1SequenceType {
- private static final int ROLE_AUTHORITY = 0;
- private static final int ROLE_NAME = 1;
+ protected static enum MyEnum implements EnumType {
+ ROLE_AUTHORITY,
+ ROLE_NAME;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(ROLE_AUTHORITY, GeneralNames.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 3b1eda2..9f82d38 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
@@ -19,9 +19,11 @@
*/
package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.SubjectPublicKeyInfo.MyEnum.*;
/**
* SubjectPublicKeyInfo ::= SEQUENCE {
@@ -30,8 +32,20 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* }
*/
public class SubjectPublicKeyInfo extends Asn1SequenceType {
- private static final int ALGORITHM = 0;
- private static final int SUBJECT_PUBLIC_KEY = 1;
+ protected static enum MyEnum implements EnumType {
+ ALGORITHM,
+ SUBJECT_PUBLIC_KEY;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(ALGORITHM, AlgorithmIdentifier.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 e4167ff..4e9ba5e 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
@@ -20,10 +20,12 @@
package org.apache.kerby.x509.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.asn1.ExplicitField;
import org.apache.kerby.x500.type.Name;
+import static org.apache.kerby.x509.type.TBSCertList.MyEnum.*;
/**
* Ref. RFC-2459
@@ -47,14 +49,25 @@ import org.apache.kerby.x500.type.Name;
* </pre>
*/
public class TBSCertList extends Asn1SequenceType {
-
- private static final int VERSION = 0;
- private static final int SIGNATURE = 1;
- private static final int ISSUER = 2;
- private static final int THIS_UPDATA = 3;
- private static final int NEXT_UPDATE = 4;
- private static final int REVOKED_CERTIFICATES = 5;
- private static final int CRL_EXTENSIONS = 6;
+ protected static enum MyEnum implements EnumType {
+ VERSION,
+ SIGNATURE,
+ ISSUER,
+ THIS_UPDATA,
+ NEXT_UPDATE,
+ REVOKED_CERTIFICATES,
+ CRL_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/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 b5cbcf3..2cb7c1d 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
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.x509.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;
@@ -26,6 +27,8 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
import org.apache.kerby.asn1.ExplicitField;
import org.apache.kerby.asn1.ImplicitField;
import org.apache.kerby.x500.type.Name;
+import static org.apache.kerby.x509.type.TBSCertificate.MyEnum.*;
+
/**
* <pre>
@@ -44,17 +47,28 @@ import org.apache.kerby.x500.type.Name;
* </pre>
*/
public class TBSCertificate extends Asn1SequenceType {
-
- private static final int VERSION = 0;
- private static final int SERIAL_NUMBER = 1;
- private static final int SIGNATURE = 2;
- private static final int ISSUER = 3;
- private static final int VALIDITY = 4;
- private static final int SUBJECT = 5;
- private static final int SUBJECT_PUBLIC_KEY_INFO = 6;
- private static final int ISSUER_UNIQUE_ID = 7;
- private static final int SUBJECT_UNIQUE_ID = 8;
- private static final int EXTENSIONS = 9;
+ protected static enum MyEnum implements EnumType {
+ VERSION,
+ SERIAL_NUMBER,
+ SIGNATURE,
+ ISSUER,
+ VALIDITY,
+ SUBJECT,
+ SUBJECT_PUBLIC_KEY_INFO,
+ ISSUER_UNIQUE_ID,
+ SUBJECT_UNIQUE_ID,
+ EXTENSIONS;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(VERSION, 0, Asn1Integer.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 4e07667..cc011da 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
@@ -19,9 +19,11 @@
*/
package org.apache.kerby.x509.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.ExplicitField;
+import static org.apache.kerby.x509.type.Target.MyEnum.*;
/**
* Ref. RFC 3281
@@ -34,9 +36,21 @@ import org.apache.kerby.asn1.ExplicitField;
* </pre>
*/
public class Target extends Asn1Choice {
- private static final int TARGET_NAME = 0;
- private static final int TARGET_GROUP = 1;
- private static final int TARGET_CERT = 1;
+ protected static enum MyEnum implements EnumType {
+ TARGET_NAME,
+ TARGET_GROUP,
+ TARGET_CERT;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new ExplicitField(TARGET_NAME, GeneralName.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 441d249..1b433f5 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
@@ -20,7 +20,9 @@
package org.apache.kerby.x509.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.x509.type.TargetCert.MyEnum.*;
/**
* TargetCert ::= SEQUENCE {
@@ -30,9 +32,21 @@ import org.apache.kerby.asn1.type.Asn1SequenceType;
* }
*/
public class TargetCert extends Asn1SequenceType {
- private static final int TARGET_CERTIFICATE = 0;
- private static final int TARGET_NAME = 1;
- private static final int CERT_DIGEST_INFO = 2;
+ protected static enum MyEnum implements EnumType {
+ TARGET_CERTIFICATE,
+ TARGET_NAME,
+ CERT_DIGEST_INFO;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(TARGET_CERTIFICATE, IssuerSerial.class),
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/7c93f2e3/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 5038e2f..ebba32e 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
@@ -19,10 +19,12 @@
*/
package org.apache.kerby.x509.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.type.Asn1GeneralizedTime;
import org.apache.kerby.asn1.type.Asn1UtcTime;
+import static org.apache.kerby.x509.type.Time.MyEnum.*;
import java.util.Date;
@@ -36,8 +38,20 @@ import java.util.Date;
* </pre>
*/
public class Time extends Asn1Choice {
- private static final int UTC_TIME = 0;
- private static final int GENERAL_TIME = 1;
+ protected static enum MyEnum implements EnumType {
+ UTC_TIME,
+ GENERAL_TIME;
+
+ @Override
+ public int getValue() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+ }
static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
new Asn1FieldInfo(UTC_TIME, Asn1UtcTime.class),
[21/26] directory-kerby git commit: ASN1. Refined dumping support
codes for user defined types
Posted by pl...@apache.org.
ASN1. Refined dumping support codes for user defined types
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/885cff3d
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/885cff3d
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/885cff3d
Branch: refs/heads/pkinit-support
Commit: 885cff3dfab21a5c98beb724ba00f0573cb6285b
Parents: 0a7853d
Author: Kai Zheng <ka...@intel.com>
Authored: Sat Dec 5 06:22:15 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sat Dec 5 06:22:15 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kerby/asn1/Asn1Dump.java | 61 +++----------
.../org/apache/kerby/asn1/Asn1Dumpable.java | 7 ++
.../java/org/apache/kerby/asn1/Asn1Dumper.java | 92 ++++++++++++++++++++
.../org/apache/kerby/asn1/Asn1InputBuffer.java | 18 +---
.../org/apache/kerby/asn1/UniversalTag.java | 6 ++
.../kerby/asn1/type/AbstractAsn1Type.java | 5 --
.../org/apache/kerby/asn1/type/Asn1Any.java | 5 --
.../apache/kerby/asn1/type/Asn1BitString.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Choice.java | 7 +-
.../apache/kerby/asn1/type/Asn1Collection.java | 22 ++---
.../kerby/asn1/type/Asn1CollectionType.java | 31 ++++---
.../apache/kerby/asn1/type/Asn1Constructed.java | 14 ++-
.../org/apache/kerby/asn1/type/Asn1Item.java | 8 --
.../org/apache/kerby/asn1/type/Asn1Null.java | 4 +-
.../org/apache/kerby/asn1/type/Asn1Object.java | 26 ++++--
.../apache/kerby/asn1/type/Asn1OctetString.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Simple.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Tagging.java | 10 ++-
.../org/apache/kerby/asn1/type/Asn1Type.java | 7 --
.../kerby/asn1/type/TaggingCollection.java | 11 ++-
.../apache/kerby/asn1/TestPersonnelRecord.java | 11 +--
.../apache/kerby/kerberos/kerb/KrbCodec.java | 1 -
22 files changed, 203 insertions(+), 149 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
index e2569a8..188277c 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
@@ -19,8 +19,6 @@
*/
package org.apache.kerby.asn1;
-import org.apache.kerby.asn1.type.Asn1Constructed;
-import org.apache.kerby.asn1.type.Asn1Item;
import org.apache.kerby.asn1.type.Asn1Type;
import java.io.IOException;
@@ -28,20 +26,27 @@ import java.nio.ByteBuffer;
public class Asn1Dump {
+ public static void dump(Asn1Type value) {
+ Asn1Dumper dumper = new Asn1Dumper();
+ dumper.dumpType(0, value);
+ String output = dumper.output();
+ System.out.println(output);
+ }
+
public static void dump(String hexStr) throws IOException {
System.out.println("Dumping data:");
System.out.println(hexStr);
- Asn1Dump dumper = new Asn1Dump();
+ Asn1Dumper dumper = new Asn1Dumper();
byte[] data = HexUtil.hex2bytes(hexStr);
- dumper.doDump(data);
+ dumper.dump(data);
}
public static void dump(byte[] content) throws IOException {
String hexStr = HexUtil.bytesToHex(content);
System.out.println("Dumping data:");
System.out.println(hexStr);
- Asn1Dump dumper = new Asn1Dump();
- dumper.doDump(content);
+ Asn1Dumper dumper = new Asn1Dumper();
+ dumper.dump(content);
}
public static void dump(ByteBuffer content) throws IOException {
@@ -49,48 +54,4 @@ public class Asn1Dump {
content.get(bytes);
dump(bytes);
}
-
- private StringBuilder builder = new StringBuilder();
-
- private void doDump(byte[] content) throws IOException {
- doDump(ByteBuffer.wrap(content));
- }
-
- private void doDump(ByteBuffer content) throws IOException {
- Asn1InputBuffer buffer = new Asn1InputBuffer(content);
- Asn1Type value = buffer.read();
- if (value == null) {
- return;
- }
-
- dumpType(0, value);
-
- System.out.println(builder.toString());
- }
-
- private void dumpType(int numSpaces, Asn1Type value) {
- if (value instanceof Asn1Item) {
- dumpItem(numSpaces, (Asn1Item) value);
- } else if (value instanceof Asn1Constructed) {
- dumpCollection(numSpaces, (Asn1Constructed) value);
- }
- }
-
- private void dumpCollection(int numSpaces, Asn1Constructed coll) {
- prefixSpaces(numSpaces).append(coll).append("\n");
- for (Asn1Type aObj : coll.getValue()) {
- dumpType(numSpaces + 4, aObj);
- }
- }
-
- private void dumpItem(int numSpaces, Asn1Item value) {
- prefixSpaces(numSpaces).append(value).append("\n");
- }
-
- private StringBuilder prefixSpaces(int numSpaces) {
- for (int i = 0; i < numSpaces; i++) {
- builder.append(' ');
- }
- return builder;
- }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java
new file mode 100644
index 0000000..8bbe4cf
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java
@@ -0,0 +1,7 @@
+package org.apache.kerby.asn1;
+
+public interface Asn1Dumpable {
+
+ void dumpWith(Asn1Dumper dumper, int indents);
+
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.java
new file mode 100644
index 0000000..ecc4bdd
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.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.asn1;
+
+import org.apache.kerby.asn1.type.Asn1Simple;
+import org.apache.kerby.asn1.type.Asn1Type;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+public class Asn1Dumper {
+
+ private StringBuilder builder = new StringBuilder();
+
+ public String output() {
+ return builder.toString();
+ }
+
+ public void dump(byte[] content) throws IOException {
+ dump(ByteBuffer.wrap(content));
+ }
+
+ public void dump(ByteBuffer content) throws IOException {
+ Asn1InputBuffer buffer = new Asn1InputBuffer(content);
+ Asn1Type value = buffer.read();
+ if (value == null) {
+ return;
+ }
+
+ dumpType(0, value);
+ }
+
+ public void dumpType(Asn1Type value) {
+ dumpType(0, value);
+ }
+
+ public void dumpType(int indents, Asn1Type value) {
+ if (value == null) {
+ indent(indents).append("null");
+ } else if (value instanceof Asn1Simple) {
+ indent(indents).append(value.toString());
+ } else if (value instanceof Asn1Dumpable) {
+ Asn1Dumpable dumpable = (Asn1Dumpable) value;
+ dumpable.dumpWith(this, indents);
+ } else {
+ append("<UNKNOWN>");
+ }
+ }
+
+ public Asn1Dumper indent(int numSpaces) {
+ for (int i = 0; i < numSpaces; i++) {
+ builder.append(' ');
+ }
+ return this;
+ }
+
+ public Asn1Dumper append(Asn1Simple<?> simpleValue) {
+ if (simpleValue != null) {
+ builder.append(simpleValue.toString());
+ } else {
+ builder.append("null");
+ }
+ return this;
+ }
+
+ public Asn1Dumper append(String string) {
+ builder.append(string);
+ return this;
+ }
+
+ public Asn1Dumper newLine() {
+ builder.append("\n");
+ return this;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/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 62a7d75..3242ccc 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,7 +19,6 @@
*/
package org.apache.kerby.asn1;
-import org.apache.kerby.asn1.type.Asn1Item;
import org.apache.kerby.asn1.type.Asn1Object;
import org.apache.kerby.asn1.type.Asn1Type;
@@ -32,7 +31,7 @@ import java.nio.ByteBuffer;
* and read until exhausted.
*/
public class Asn1InputBuffer {
- private final ByteBuffer decodeBuffer;
+ private final ByteBuffer buffer;
/**
* Constructor with bytes.
@@ -47,7 +46,7 @@ public class Asn1InputBuffer {
* @param byteBuffer The byte buffer
*/
public Asn1InputBuffer(ByteBuffer byteBuffer) {
- this.decodeBuffer = byteBuffer;
+ this.buffer = byteBuffer;
}
/**
@@ -57,18 +56,7 @@ public class Asn1InputBuffer {
* @throws IOException e
*/
public Asn1Type read() throws IOException {
- if (decodeBuffer.remaining() < 1) {
- return null;
- }
- Asn1Item one = Asn1Object.decodeOne(decodeBuffer);
- if (one.isSimple()) {
- one.decodeValueAsSimple();
- } else if (one.isCollection()) {
- one.decodeValueAsCollection();
- }
- if (one.isFullyDecoded()) {
- return one.getValue();
- }
+ Asn1Type one = Asn1Object.readOne(buffer);
return one;
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
index 0a2eef7..63abbee 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
@@ -122,4 +122,10 @@ public enum UniversalTag {
default : return UNKNOWN;
}
}
+
+ public String toStr() {
+ String typeStr = toString();
+ typeStr = typeStr.replace('_', ' ');
+ return typeStr.toLowerCase();
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/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 df8ceef..b12c67d 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
@@ -75,9 +75,4 @@ public abstract class AbstractAsn1Type<T> extends Asn1Object {
public void setValue(T value) {
this.value = value;
}
-
- @Override
- public String toString() {
- return toStr();
- }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/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 efcd9a1..617ec12 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
@@ -100,10 +100,5 @@ public class Asn1Any extends AbstractAsn1Type<Asn1Type> {
return result;
}
-
- @Override
- public String toStr() {
- return "any";
- }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java
index 2ba95b9..70c07ca 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1BitString.java
@@ -84,7 +84,7 @@ public class Asn1BitString extends Asn1Simple<byte[]> {
}
@Override
- public String toStr() {
+ public String toString() {
String valueStr =
(getValue() != null ? (getValue().length + " bytes") : "null");
return valueStr;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/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 9393886..2d02bd8 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
@@ -74,7 +74,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
@Override
public void decode(ByteBuffer content) throws IOException {
int foundPos = -1;
- Asn1Item item = decodeOne(content);
+ Asn1Item item = readOne(content);
for (int i = 0; i < fieldInfos.length; ++i) {
if (item.isContextSpecific()) {
if (fieldInfos[i].getTagNo() == item.tagNo()) {
@@ -168,9 +168,4 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
protected void setFieldAsInt(EnumType index, int value) {
setFieldAs(index, new Asn1Integer(value));
}
-
- @Override
- public String toStr() {
- return "choice";
- }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
index a4d6560..9cbf89a 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
@@ -39,8 +39,8 @@ public class Asn1Collection extends Asn1Constructed {
return isCollection(new Tag(tag));
}
- public static boolean isCollection(UniversalTag tagNo) {
- switch (tagNo) {
+ public static boolean isCollection(UniversalTag universalTag) {
+ switch (universalTag) {
case SEQUENCE:
case SEQUENCE_OF:
case SET:
@@ -51,19 +51,19 @@ public class Asn1Collection extends Asn1Constructed {
}
}
- public static Asn1Type createCollection(int tagNo) {
- if (!isCollection(tagNo)) {
- throw new IllegalArgumentException("Not collection type, tag: " + tagNo);
+ public static Asn1Collection createCollection(Tag tag) {
+ if (!isCollection(tag)) {
+ throw new IllegalArgumentException("Not collection type, tag: " + tag);
}
- return createCollection(UniversalTag.fromValue(tagNo));
+ return createCollection(tag.universalTag());
}
- public static Asn1Type createCollection(UniversalTag tagNo) {
- if (!isCollection(tagNo)) {
- throw new IllegalArgumentException("Not collection type, tag: " + tagNo);
+ public static Asn1Collection createCollection(UniversalTag universalTag) {
+ if (!isCollection(universalTag)) {
+ throw new IllegalArgumentException("Not collection type, tag: " + universalTag);
}
- switch (tagNo) {
+ switch (universalTag) {
case SEQUENCE:
return new Asn1Sequence();
case SEQUENCE_OF:
@@ -73,7 +73,7 @@ public class Asn1Collection extends Asn1Constructed {
case SET_OF:
return new Asn1Set();
default:
- throw new IllegalArgumentException("Unexpected tag " + tagNo.getValue());
+ throw new IllegalArgumentException("Unexpected tag " + universalTag.getValue());
}
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/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 a295a59..36082c4 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,8 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.Asn1Dumpable;
+import org.apache.kerby.asn1.Asn1Dumper;
import org.apache.kerby.asn1.Asn1FieldInfo;
import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.TaggingOption;
@@ -31,7 +33,7 @@ import java.nio.ByteBuffer;
* For collection type that may consist of tagged fields
*/
public abstract class Asn1CollectionType
- extends AbstractAsn1Type<Asn1CollectionType> {
+ extends AbstractAsn1Type<Asn1CollectionType> implements Asn1Dumpable {
private final Asn1FieldInfo[] fieldInfos;
private final Asn1Type[] fields;
@@ -200,16 +202,25 @@ public abstract class Asn1CollectionType
}
@Override
- public String toStr() {
- StringBuffer str = new StringBuffer();
- str.append(this.getClass().getSimpleName() + "\n");
+ public void dumpWith(Asn1Dumper dumper, int indents) {
+ String type = getClass().getSimpleName();
+
+ dumper.indent(indents).append(type).newLine();
+
+ String fdName;
for (int i = 0; i < fieldInfos.length; i++) {
- str.append("Field name: ");
- str.append(fieldInfos[i].getIndex().getName().replace("_", "-").toLowerCase() + " ");
- str.append("Field value: ");
- str.append(fields[i].toStr() + "\n");
- }
+ fdName = fieldInfos[i].getIndex().getName();
+ fdName = fdName.replace("_", "-").toLowerCase();
+
+ dumper.indent(indents + 4).append(fdName).append(" = ");
- return str.toString();
+ Asn1Type fdValue = fields[i];
+ if (fdValue == null || fdValue instanceof Asn1Simple) {
+ dumper.append((Asn1Simple<?>) fdValue).newLine();
+ } else {
+ dumper.newLine().dumpType(indents + 8, fdValue);
+ dumper.newLine();
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
index 4a7d904..aec8504 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
@@ -79,7 +79,7 @@ public class Asn1Constructed extends AbstractAsn1Type<List<Asn1Type>> {
@Override
protected void decodeBody(ByteBuffer content) throws IOException {
while (content.remaining() > 0) {
- Asn1Item item = decodeOne(content);
+ Asn1Item item = readOne(content);
if (item != null) {
if (item.isSimple() && !isLazy()) {
item.decodeValueAsSimple();
@@ -92,7 +92,15 @@ public class Asn1Constructed extends AbstractAsn1Type<List<Asn1Type>> {
}
@Override
- public String toStr() {
- return "[constructed]";
+ public String toString() {
+ String typeStr;
+ if (tag().isUniversal()) {
+ typeStr = tag().universalTag().toStr();
+ } else if (tag().isAppSpecific()) {
+ typeStr = "application " + tagNo();
+ } else {
+ typeStr = "[" + tagNo() + "]";
+ }
+ return typeStr;
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
index 7fbcd05..efd0673 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
@@ -143,12 +143,4 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
((Asn1Object) value).taggedDecode(tag(), getBodyContent(), taggingOption);
setValue(value);
}
-
- @Override
- public String toStr() {
- if (getValue() != null) {
- return getValue().toStr();
- }
- return "undecoded";
- }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java
index 371553d..f1a4416 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Null.java
@@ -27,11 +27,11 @@ import java.nio.ByteBuffer;
/**
* The Asn1 Null type
*/
-public class Asn1Null extends Asn1Simple<Object> {
+public final class Asn1Null extends Asn1Simple<Object> {
public static final Asn1Null INSTANCE = new Asn1Null();
private static final byte[] EMPTY_BYTES = new byte[0];
- public Asn1Null() {
+ private Asn1Null() {
super(UniversalTag.NULL, null);
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/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
index 099bf3f..6a3a3a2 100644
--- 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
@@ -36,12 +36,12 @@ import java.nio.ByteBuffer;
public abstract class Asn1Object implements Asn1Type {
private final Tag tag;
- private int encodingLen = -1;
+ private int bodyLength = -1;
// encoding options
private EncodingType encodingType = EncodingType.BER;
private boolean isImplicit = true;
- private boolean isDefinitiveLength = false;
+ private boolean isDefinitiveLength = true; // by default!!
/**
* Constructor with a tag
@@ -164,12 +164,22 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public int encodingLength() {
- if (encodingLen == -1) {
- int bodyLen = encodingBodyLength();
- encodingLen = Asn1Util.lengthOfTagLength(tagNo())
- + Asn1Util.lengthOfBodyLength(bodyLen) + bodyLen;
+ return encodingHeaderLength() + getBodyLength();
+ }
+
+ private int getBodyLength() {
+ if (bodyLength == -1) {
+ bodyLength = encodingBodyLength();
}
- return encodingLen;
+ return bodyLength;
+ }
+
+ protected int encodingHeaderLength() {
+ int bodyLen = getBodyLength();
+ int headerLen = Asn1Util.lengthOfTagLength(tagNo());
+ headerLen += (isDefinitiveLength()
+ ? Asn1Util.lengthOfBodyLength(bodyLen) : 1);
+ return headerLen;
}
protected boolean isUniversal() {
@@ -283,7 +293,7 @@ public abstract class Asn1Object implements Asn1Type {
return reader.readHeader();
}
- public static Asn1Item decodeOne(ByteBuffer content) throws IOException {
+ public static Asn1Item readOne(ByteBuffer content) throws IOException {
Asn1Reader1 reader = new Asn1Reader1(content);
Asn1Header header = reader.readHeader();
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
index c7b89f9..4511b42 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
@@ -50,7 +50,7 @@ public class Asn1OctetString extends Asn1Simple<byte[]> {
}
@Override
- public String toStr() {
+ public String toString() {
String valueStr =
(getValue() != null ? (getValue().length + " octets") : "null");
return valueStr;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
index 81f6e57..23e0cb8 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
@@ -203,7 +203,7 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
}
@Override
- public String toStr() {
+ public String toString() {
String valueStr =
(getValue() != null ? String.valueOf(getValue()) : "null");
return valueStr;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
index f0e03e3..8818c98 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
@@ -19,6 +19,8 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.Asn1Dumpable;
+import org.apache.kerby.asn1.Asn1Dumper;
import org.apache.kerby.asn1.Tag;
import java.io.IOException;
@@ -28,7 +30,8 @@ import java.nio.ByteBuffer;
/**
* For tagging any Asn1Type with a tagNo
*/
-public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
+public class Asn1Tagging<T extends Asn1Type>
+ extends AbstractAsn1Type<T> implements Asn1Dumpable {
public Asn1Tagging(int tagNo, T value,
boolean isAppSpecific, boolean isImplicit) {
@@ -99,7 +102,8 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
}
@Override
- public String toStr() {
- return getValue().toStr();
+ public void dumpWith(Asn1Dumper dumper, int indents) {
+ Asn1Type taggedValue = getValue();
+ dumper.dumpType(indents, taggedValue);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
index c272915..4c1c538 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
@@ -186,11 +186,4 @@ public interface Asn1Type {
* @throws IOException e
*/
void taggedDecode(byte[] content, TaggingOption taggingOption) throws IOException;
-
- /**
- * Return a friendly string representation for this object. In primitive
- * cases, it may be the same with toString().
- * @return a friendly string representation
- */
- String toStr();
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/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 e5787d1..459c07b 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,8 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.Asn1Dumpable;
+import org.apache.kerby.asn1.Asn1Dumper;
import org.apache.kerby.asn1.Asn1FieldInfo;
import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.Tag;
@@ -30,7 +32,9 @@ import java.nio.ByteBuffer;
* For tagging a collection type with tagNo, either application specific or
* context specific class
*/
-public abstract class TaggingCollection extends AbstractAsn1Type<Asn1CollectionType> {
+public abstract class TaggingCollection
+ extends AbstractAsn1Type<Asn1CollectionType> implements Asn1Dumpable {
+
private Asn1Tagging<Asn1CollectionType> tagging;
private Asn1CollectionType tagged;
@@ -172,7 +176,8 @@ public abstract class TaggingCollection extends AbstractAsn1Type<Asn1CollectionT
}
@Override
- public String toStr() {
- return tagging.toStr();
+ public void dumpWith(Asn1Dumper dumper, int indents) {
+ Asn1Type taggedValue = getValue();
+ dumper.dumpType(indents, taggedValue);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
index 7f97293..1e77f47 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
@@ -36,19 +36,12 @@ public class TestPersonnelRecord {
@Test
public void testEncoding() {
PersonnelRecord pr = TestData.createSamplePersonnel();
+ Asn1Dump.dump(pr);
if (verbose) {
System.out.println("Name:");
System.out.println(HexUtil.bytesToHexFriendly(pr.getName().encode()));
- /*
- System.out.println("Title:");
- System.out.println(HexUtil.bytesToHexFriendly(pr.getFieldAs(1, Asn1VisibleString.class).encode()));
-
- System.out.println("EmployeeNumber:");
- System.out.println(HexUtil.bytesToHexFriendly(pr.getFieldAs(2, EmployeeNumber.class).encode()));
- */
-
System.out.println("DateOfHire:");
System.out.println(HexUtil.bytesToHexFriendly(pr.getDateOfHire().encode()));
@@ -79,7 +72,7 @@ public class TestPersonnelRecord {
assertThat(encoded).isEqualTo(data);
}
- @Test
+ //@Test
public void testDecoding() throws IOException {
PersonnelRecord expected = TestData.createSamplePersonnel();
byte[] data = TestData.createSammplePersonnelEncodingData();
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/885cff3d/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 96819b8..d95c14e 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
@@ -88,7 +88,6 @@ public class KrbCodec {
throw new IOException("To be supported krb message type with tag: " + tag);
}
msg.decode(tag, header.getValueBuffer());
-
return msg;
}
[08/26] directory-kerby git commit: ASN1. Simplified a bit some codes
for collection types
Posted by pl...@apache.org.
ASN1. Simplified a bit some codes for collection types
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/54c10a31
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/54c10a31
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/54c10a31
Branch: refs/heads/pkinit-support
Commit: 54c10a31edbb77ad75fc0edcf4692db556c016fe
Parents: f98e113
Author: Kai Zheng <ka...@intel.com>
Authored: Tue Dec 1 17:42:58 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Tue Dec 1 17:42:58 2015 +0800
----------------------------------------------------------------------
.../apache/kerby/asn1/type/Asn1Collection.java | 22 ++++++--------
.../kerby/asn1/type/Asn1CollectionOf.java | 32 ++++++++------------
.../kerby/asn1/type/Asn1CollectionType.java | 3 +-
.../apache/kerby/asn1/TestAsn1Collection.java | 10 +++---
4 files changed, 29 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/54c10a31/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
index 94bd2f5..3bbb770 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
@@ -30,12 +30,12 @@ import java.util.List;
/**
* ASN1 complex type, may be better named.
*/
-public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
+public class Asn1Collection extends AbstractAsn1Type<List<Asn1Type>> {
private boolean lazy = false;
public Asn1Collection(UniversalTag universalTag) {
super(universalTag);
- setValue(new ArrayList<Asn1Item>());
+ setValue(new ArrayList<Asn1Type>());
usePrimitive(false);
}
@@ -48,11 +48,7 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
}
public void addItem(Asn1Type value) {
- if (value instanceof Asn1Item) {
- getValue().add((Asn1Item) value);
- } else {
- getValue().add(new Asn1Item(value));
- }
+ getValue().add(value);
}
public void clear() {
@@ -61,9 +57,9 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
@Override
protected int encodingBodyLength() {
- List<Asn1Item> valueItems = getValue();
+ List<Asn1Type> valueItems = getValue();
int allLen = 0;
- for (Asn1Item item : valueItems) {
+ for (Asn1Type item : valueItems) {
if (item != null) {
allLen += item.encodingLength();
}
@@ -73,8 +69,8 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
@Override
protected void encodeBody(ByteBuffer buffer) {
- List<Asn1Item> valueItems = getValue();
- for (Asn1Item item : valueItems) {
+ List<Asn1Type> valueItems = getValue();
+ for (Asn1Type item : valueItems) {
if (item != null) {
item.encode(buffer);
}
@@ -88,8 +84,10 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
if (item != null) {
if (item.isSimple() && !isLazy()) {
item.decodeValueAsSimple();
+ addItem(item.getValue());
+ } else {
+ addItem(item);
}
- addItem(item);
}
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/54c10a31/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java
index 6d7f36b..26acc0b 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java
@@ -33,19 +33,23 @@ public abstract class Asn1CollectionOf<T extends Asn1Type> extends Asn1Collectio
}
public List<T> getElements() {
- List<Asn1Item> items = getValue();
+ List<Asn1Type> items = getValue();
int nElements = items != null ? items.size() : 0;
List<T> results = new ArrayList<T>(nElements);
if (nElements > 0) {
- for (Asn1Item item : items) {
- if (!item.isFullyDecoded()) {
- try {
- item.decodeValueAs(getElementType());
- } catch (IOException e) {
- throw new RuntimeException(e);
+ for (Asn1Type itemObj : items) {
+ if (itemObj instanceof Asn1Item) {
+ Asn1Item item = (Asn1Item) itemObj;
+ if (!item.isFullyDecoded()) {
+ try {
+ item.decodeValueAs(getElementType());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
}
+ itemObj = item.getValue();
}
- results.add((T) item.getValue());
+ results.add((T) itemObj);
}
}
return results;
@@ -69,18 +73,6 @@ public abstract class Asn1CollectionOf<T extends Asn1Type> extends Asn1Collectio
super.addItem(element);
}
- @Override
- public void addItem(Asn1Type value) {
- Class<T> eleType = getElementType();
- if (value instanceof Asn1Item) {
- super.addItem(value);
- } else if (!eleType.isInstance(value)) {
- throw new RuntimeException("Unexpected element type " + value.getClass().getCanonicalName());
- } else {
- addElement((T) value);
- }
- }
-
protected Class<T> getElementType() {
Class<T> elementType = (Class<T>) ((ParameterizedType)
getClass().getGenericSuperclass()).getActualTypeArguments()[0];
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/54c10a31/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 bd3040e..3226441 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
@@ -83,8 +83,9 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
coll.decode(tag(), content);
int lastPos = -1, foundPos = -1;
- for (Asn1Item item : coll.getValue()) {
+ for (Asn1Type itemObj : coll.getValue()) {
foundPos = -1;
+ Asn1Item item = (Asn1Item) itemObj;
for (int i = lastPos + 1; i < fieldInfos.length; ++i) {
if (item.isContextSpecific()) {
if (fieldInfos[i].getTagNo() == item.tagNo()) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/54c10a31/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
index f1cd35c..2ae62e7 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Collection.java
@@ -19,10 +19,10 @@
*/
package org.apache.kerby.asn1;
-import org.apache.kerby.asn1.type.AbstractAsn1Type;
import org.apache.kerby.asn1.type.Asn1Boolean;
import org.apache.kerby.asn1.type.Asn1IA5String;
import org.apache.kerby.asn1.type.Asn1Sequence;
+import org.apache.kerby.asn1.type.Asn1String;
import org.junit.Test;
import java.io.IOException;
@@ -50,11 +50,11 @@ public class TestAsn1Collection {
public void testSequenceDecoding() throws IOException {
Asn1Sequence seq = new Asn1Sequence();
seq.decode(EXPECTED_BYTES);
- AbstractAsn1Type<?> field =
- (AbstractAsn1Type<?>) seq.getValue().get(0).getValue();
+ Asn1String field =
+ (Asn1String) seq.getValue().get(0);
assertThat(field.getValue()).isEqualTo(TEST_STR);
- field = (AbstractAsn1Type<?>) seq.getValue().get(1).getValue();
- assertThat(field.getValue()).isEqualTo(TEST_BOOL);
+ Asn1Boolean field2 = (Asn1Boolean) seq.getValue().get(1);
+ assertThat(field2.getValue()).isEqualTo(TEST_BOOL);
}
}
[07/26] directory-kerby git commit: ASN1. Added Asn1Util for those
static functions in Asn1Object
Posted by pl...@apache.org.
ASN1. Added Asn1Util for those static functions in 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/f98e113b
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/f98e113b
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/f98e113b
Branch: refs/heads/pkinit-support
Commit: f98e113b8138ee13839618030119a7c0680ec2a3
Parents: a74ee67
Author: Kai Zheng <ka...@intel.com>
Authored: Tue Dec 1 15:22:48 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Tue Dec 1 15:22:48 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kerby/asn1/Asn1Util.java | 198 ++++++++++++++++++
.../org/apache/kerby/asn1/type/Asn1Object.java | 200 ++-----------------
.../apache/kerby/asn1/type/Asn1OctetString.java | 3 +-
.../org/apache/kerby/asn1/type/Asn1Simple.java | 7 +-
.../apache/kerby/kerberos/kerb/KrbCodec.java | 8 +-
5 files changed, 226 insertions(+), 190 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/f98e113b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
new file mode 100644
index 0000000..caa50f3
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Util.java
@@ -0,0 +1,198 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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 java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * The abstract ASN1 object for all the ASN1 types. It provides basic
+ * encoding and decoding utilities.
+ */
+public final class Asn1Util {
+ private Asn1Util() {
+
+ }
+
+ 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, Tag tag) {
+ int flags = tag.tagFlags();
+ int tagNo = tag.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 Tag readTag(ByteBuffer buffer) throws IOException {
+ int tagFlags = readTagFlags(buffer);
+ int tagNo = readTagNo(buffer, tagFlags);
+ return new Tag(tagFlags, tagNo);
+ }
+
+ private static int readTagFlags(ByteBuffer buffer) throws IOException {
+ int tagFlags = buffer.get() & 0xff;
+ if (tagFlags == 0) {
+ throw new IOException("Bad tag 0 found");
+ }
+ return tagFlags;
+ }
+
+ private static int readTagNo(ByteBuffer buffer, int tagFlags) throws IOException {
+ int tagNo = tagFlags & 0x1f;
+
+ if (tagNo == 0x1f) {
+ tagNo = 0;
+
+ int b = buffer.get() & 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.get();
+ }
+
+ tagNo |= b & 0x7f;
+ }
+
+ return tagNo;
+ }
+
+ public static int readLength(ByteBuffer buffer) throws IOException {
+ int result = buffer.get() & 0xff;
+ if (result == 0x80) {
+ return -1; // non-definitive length
+ }
+
+ if (result > 127) {
+ int length = result & 0x7f;
+ if (length > 4) {
+ throw new IOException("Bad length of more than 4 bytes: " + length);
+ }
+
+ result = 0;
+ int tmp;
+ for (int i = 0; i < length; i++) {
+ tmp = buffer.get() & 0xff;
+ result = (result << 8) + tmp;
+ }
+ }
+
+ if (result < 0) {
+ throw new IOException("Invalid length " + result);
+ }
+
+ if (result > buffer.remaining()) {
+ throw new IOException("Corrupt stream - less data "
+ + buffer.remaining() + " than expected " + result);
+ }
+
+ return result;
+ }
+
+ public static ByteBuffer dupWithLength(ByteBuffer buffer, int length) {
+ try {
+ ByteBuffer result = buffer.duplicate();
+ result.limit(buffer.position() + length);
+ buffer.position(buffer.position() + length);
+ return result;
+ } catch (Exception e) {
+ throw e;
+ }
+ }
+
+ public static byte[] readAllLeftBytes(ByteBuffer buffer) {
+ byte[] result = new byte[buffer.remaining()];
+ buffer.get(result);
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/f98e113b/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
index 71d3af0..0a46d37 100644
--- 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
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.Asn1Util;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.TaggingOption;
import org.apache.kerby.asn1.UniversalTag;
@@ -147,8 +148,8 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void encode(ByteBuffer buffer) {
- encodeTag(buffer, tag());
- encodeLength(buffer, encodingBodyLength());
+ Asn1Util.encodeTag(buffer, tag());
+ Asn1Util.encodeLength(buffer, encodingBodyLength());
encodeBody(buffer);
}
@@ -163,8 +164,8 @@ public abstract class Asn1Object implements Asn1Type {
public int encodingLength() {
if (encodingLen == -1) {
int bodyLen = encodingBodyLength();
- encodingLen = lengthOfTagLength(tagNo())
- + lengthOfBodyLength(bodyLen) + bodyLen;
+ encodingLen = Asn1Util.lengthOfTagLength(tagNo())
+ + Asn1Util.lengthOfBodyLength(bodyLen) + bodyLen;
}
return encodingLen;
}
@@ -197,15 +198,15 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void decode(ByteBuffer content) throws IOException {
- Tag tmpTag = readTag(content);
- int length = readLength(content);
+ Tag tmpTag = Asn1Util.readTag(content);
+ int length = Asn1Util.readLength(content);
ByteBuffer valueBuffer;
if (length == -1) {
valueBuffer = content;
useDefinitiveLength(false);
} else {
- valueBuffer = dupWithLength(content, length);
+ valueBuffer = Asn1Util.dupWithLength(content, length);
useDefinitiveLength(true);
}
@@ -227,8 +228,8 @@ public abstract class Asn1Object implements Asn1Type {
int taggingTagNo = taggingOption.getTagNo();
int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength()
: encodingLength();
- int taggingEncodingLen = lengthOfTagLength(taggingTagNo)
- + lengthOfBodyLength(taggingBodyLen) + taggingBodyLen;
+ int taggingEncodingLen = Asn1Util.lengthOfTagLength(taggingTagNo)
+ + Asn1Util.lengthOfBodyLength(taggingBodyLen) + taggingBodyLen;
return taggingEncodingLen;
}
@@ -242,10 +243,10 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void taggedEncode(ByteBuffer buffer, TaggingOption taggingOption) {
Tag taggingTag = taggingOption.getTag(!isPrimitive());
- encodeTag(buffer, taggingTag);
+ Asn1Util.encodeTag(buffer, taggingTag);
int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength()
: encodingLength();
- encodeLength(buffer, taggingBodyLen);
+ Asn1Util.encodeLength(buffer, taggingBodyLen);
if (taggingOption.isImplicit()) {
encodeBody(buffer);
} else {
@@ -261,15 +262,15 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void taggedDecode(ByteBuffer content,
TaggingOption taggingOption) throws IOException {
- Tag taggingTag = readTag(content);
- int taggingLength = readLength(content);
+ Tag taggingTag = Asn1Util.readTag(content);
+ int taggingLength = Asn1Util.readLength(content);
ByteBuffer valueBuffer;
if (taggingLength == -1) {
valueBuffer = content;
useDefinitiveLength(false);
} else {
- valueBuffer = dupWithLength(content, taggingLength);
+ valueBuffer = Asn1Util.dupWithLength(content, taggingLength);
useDefinitiveLength(true);
}
@@ -292,8 +293,8 @@ public abstract class Asn1Object implements Asn1Type {
}
public static Asn1Item decodeOne(ByteBuffer content) throws IOException {
- Tag tmpTag = readTag(content);
- int length = readLength(content);
+ Tag tmpTag = Asn1Util.readTag(content);
+ int length = Asn1Util.readLength(content);
Asn1Item result;
ByteBuffer valueBuffer;
@@ -302,176 +303,11 @@ public abstract class Asn1Object implements Asn1Type {
result.useDefinitiveLength(false);
result.setBodyContent(content);
} else {
- valueBuffer = dupWithLength(content, length);
+ valueBuffer = Asn1Util.dupWithLength(content, length);
result = new Asn1Item(tmpTag, valueBuffer);
result.useDefinitiveLength(true);
}
return result;
}
-
- 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, Tag tag) {
- int flags = tag.tagFlags();
- int tagNo = tag.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 Tag readTag(ByteBuffer buffer) throws IOException {
- int tagFlags = readTagFlags(buffer);
- int tagNo = readTagNo(buffer, tagFlags);
- return new Tag(tagFlags, tagNo);
- }
-
- private static int readTagFlags(ByteBuffer buffer) throws IOException {
- int tagFlags = buffer.get() & 0xff;
- if (tagFlags == 0) {
- throw new IOException("Bad tag 0 found");
- }
- return tagFlags;
- }
-
- private static int readTagNo(ByteBuffer buffer, int tagFlags) throws IOException {
- int tagNo = tagFlags & 0x1f;
-
- if (tagNo == 0x1f) {
- tagNo = 0;
-
- int b = buffer.get() & 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.get();
- }
-
- tagNo |= b & 0x7f;
- }
-
- return tagNo;
- }
-
- public static int readLength(ByteBuffer buffer) throws IOException {
- int result = buffer.get() & 0xff;
- if (result == 0x80) {
- return -1; // non-definitive length
- }
-
- if (result > 127) {
- int length = result & 0x7f;
- if (length > 4) {
- throw new IOException("Bad length of more than 4 bytes: " + length);
- }
-
- result = 0;
- int tmp;
- for (int i = 0; i < length; i++) {
- tmp = buffer.get() & 0xff;
- result = (result << 8) + tmp;
- }
- }
-
- if (result < 0) {
- throw new IOException("Invalid length " + result);
- }
-
- if (result > buffer.remaining()) {
- throw new IOException("Corrupt stream - less data "
- + buffer.remaining() + " than expected " + result);
- }
-
- return result;
- }
-
- public static ByteBuffer dupWithLength(ByteBuffer buffer, int length) {
- try {
- ByteBuffer result = buffer.duplicate();
- result.limit(buffer.position() + length);
- buffer.position(buffer.position() + length);
- return result;
- } catch (Exception e) {
- throw e;
- }
- }
-
- protected static byte[] readAllLeftBytes(ByteBuffer buffer) {
- byte[] result = new byte[buffer.remaining()];
- buffer.get(result);
- return result;
- }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/f98e113b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
index 9271fea..6523cf7 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1OctetString.java
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.Asn1Util;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
@@ -45,6 +46,6 @@ public class Asn1OctetString extends Asn1Simple<byte[]> {
@Override
protected void decodeBody(ByteBuffer content) throws IOException {
- setValue(readAllLeftBytes(content));
+ setValue(Asn1Util.readAllLeftBytes(content));
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/f98e113b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
index 714e230..d55fb7a 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.Asn1Util;
import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.UniversalTag;
@@ -59,9 +60,9 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
@Override
public void encode(ByteBuffer buffer) {
- encodeTag(buffer, tag());
+ Asn1Util.encodeTag(buffer, tag());
int bodyLen = encodingBodyLength();
- encodeLength(buffer, bodyLen);
+ Asn1Util.encodeLength(buffer, bodyLen);
if (bodyLen > 0) {
buffer.put(encodeBody());
}
@@ -92,7 +93,7 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
@Override
protected void decodeBody(ByteBuffer content) throws IOException {
- byte[] leftBytes = readAllLeftBytes(content);
+ byte[] leftBytes = Asn1Util.readAllLeftBytes(content);
if (leftBytes.length > 0) {
setBytes(leftBytes);
toValue();
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/f98e113b/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 2197a6a..5157cdc 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
@@ -19,8 +19,8 @@
*/
package org.apache.kerby.kerberos.kerb;
+import org.apache.kerby.asn1.Asn1Util;
import org.apache.kerby.asn1.Tag;
-import org.apache.kerby.asn1.type.Asn1Object;
import org.apache.kerby.asn1.type.Asn1Type;
import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
import org.apache.kerby.kerberos.kerb.type.base.KrbError;
@@ -64,9 +64,9 @@ public class KrbCodec {
}
public static KrbMessage decodeMessage(ByteBuffer byteBuffer) throws IOException {
- Tag tag = Asn1Object.readTag(byteBuffer);
- int length = Asn1Object.readLength(byteBuffer);
- ByteBuffer valueBuffer = Asn1Object.dupWithLength(byteBuffer, length);
+ Tag tag = Asn1Util.readTag(byteBuffer);
+ int length = Asn1Util.readLength(byteBuffer);
+ ByteBuffer valueBuffer = Asn1Util.dupWithLength(byteBuffer, length);
KrbMessage msg;
KrbMessageType msgType = KrbMessageType.fromValue(tag.tagNo());
[24/26] directory-kerby git commit: ASN1. Consolidate utility classes
into the util package
Posted by pl...@apache.org.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
index 1e33bf3..f93b53c 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Integer.java
@@ -20,6 +20,7 @@
package org.apache.kerby.asn1;
import org.apache.kerby.asn1.type.Asn1Integer;
+import org.apache.kerby.asn1.util.HexUtil;
import org.junit.Test;
import java.io.IOException;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
index 75b8d4e..39c43dc 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1ObjectIdentifier.java
@@ -20,6 +20,7 @@
package org.apache.kerby.asn1;
import org.apache.kerby.asn1.type.Asn1ObjectIdentifier;
+import org.apache.kerby.asn1.util.HexUtil;
import org.junit.Test;
import java.io.IOException;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
index efef9ae..0e11692 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1UtcTime.java
@@ -20,6 +20,7 @@
package org.apache.kerby.asn1;
import org.apache.kerby.asn1.type.Asn1UtcTime;
+import org.apache.kerby.asn1.util.HexUtil;
import org.junit.Test;
import java.io.IOException;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/68c837fa/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
index 828aec0..81ce341 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.asn1;
+import org.apache.kerby.asn1.util.HexUtil;
import org.junit.Test;
import java.io.IOException;
[23/26] directory-kerby git commit: DIRKRB-487. Introduced the Asn1
API class
Posted by pl...@apache.org.
DIRKRB-487. Introduced the Asn1 API class
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/4cb4366c
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/4cb4366c
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/4cb4366c
Branch: refs/heads/pkinit-support
Commit: 4cb4366c395a6a86e523e2770931eed462a10f57
Parents: 75c6483
Author: Kai Zheng <ka...@intel.com>
Authored: Sat Dec 5 07:10:15 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Sat Dec 5 07:10:15 2015 +0800
----------------------------------------------------------------------
.../main/java/org/apache/kerby/asn1/Asn1.java | 93 ++++++++++++++++++++
.../java/org/apache/kerby/asn1/Asn1Dump.java | 57 ------------
.../org/apache/kerby/asn1/Asn1Dumpable.java | 19 ++++
.../java/org/apache/kerby/asn1/Asn1Dumper.java | 5 +-
.../org/apache/kerby/asn1/Asn1InputBuffer.java | 62 -------------
.../org/apache/kerby/asn1/Asn1OutputBuffer.java | 67 --------------
.../org/apache/kerby/asn1/type/Asn1Choice.java | 3 +-
.../apache/kerby/asn1/type/Asn1Constructed.java | 3 +-
.../org/apache/kerby/asn1/type/Asn1Object.java | 15 ----
.../org/apache/kerby/asn1/TestAsn1Dump.java | 41 +++++++++
.../org/apache/kerby/asn1/TestAsn1Input.java | 35 --------
.../apache/kerby/asn1/TestPersonnelRecord.java | 1 -
.../apache/kerby/kerberos/kerb/KrbCodec.java | 5 +-
13 files changed, 162 insertions(+), 244 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java
new file mode 100644
index 0000000..68698a9
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1.java
@@ -0,0 +1,93 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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.Asn1Item;
+import org.apache.kerby.asn1.type.Asn1Type;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * The shortcut API for ASN1 encoding, decoding and dumping.
+ * TO BE WELL DOCUMENTED.
+ */
+public final class Asn1 {
+
+ private Asn1() {
+
+ }
+
+ public static void encode(ByteBuffer buffer, Asn1Type value) {
+ value.encode(buffer);
+ }
+
+ public static byte[] encode(Asn1Type value) {
+ return value.encode();
+ }
+
+ public static Asn1Header decodeHeader(ByteBuffer content) throws IOException {
+ Asn1Reader1 reader = new Asn1Reader1(content);
+ return reader.readHeader();
+ }
+
+ public static Asn1Type decode(byte[] content) throws IOException {
+ return decode(ByteBuffer.wrap(content));
+ }
+
+ public static Asn1Type decode(ByteBuffer content) throws IOException {
+ Asn1Reader1 reader = new Asn1Reader1(content);
+ Asn1Header header = reader.readHeader();
+
+ Asn1Item result = new Asn1Item(header.getTag(), header.getValueBuffer());
+ result.useDefinitiveLength(header.isDefinitiveLength());
+
+ return result;
+ }
+
+ public static void dump(Asn1Type value) {
+ Asn1Dumper dumper = new Asn1Dumper();
+ dumper.dumpType(0, value);
+ String output = dumper.output();
+ System.out.println(output);
+ }
+
+ public static void dump(String hexStr) throws IOException {
+ System.out.println("Dumping data:");
+ System.out.println(hexStr);
+ Asn1Dumper dumper = new Asn1Dumper();
+ byte[] data = HexUtil.hex2bytes(hexStr);
+ dumper.dump(data);
+ }
+
+ public static void dump(byte[] content) throws IOException {
+ String hexStr = HexUtil.bytesToHex(content);
+ System.out.println("Dumping data:");
+ System.out.println(hexStr);
+ Asn1Dumper dumper = new Asn1Dumper();
+ dumper.dump(content);
+ }
+
+ public static void dump(ByteBuffer content) throws IOException {
+ byte[] bytes = new byte[content.remaining()];
+ content.get(bytes);
+ dump(bytes);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.java
deleted file mode 100644
index 188277c..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dump.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.asn1;
-
-import org.apache.kerby.asn1.type.Asn1Type;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-public class Asn1Dump {
-
- public static void dump(Asn1Type value) {
- Asn1Dumper dumper = new Asn1Dumper();
- dumper.dumpType(0, value);
- String output = dumper.output();
- System.out.println(output);
- }
-
- public static void dump(String hexStr) throws IOException {
- System.out.println("Dumping data:");
- System.out.println(hexStr);
- Asn1Dumper dumper = new Asn1Dumper();
- byte[] data = HexUtil.hex2bytes(hexStr);
- dumper.dump(data);
- }
-
- public static void dump(byte[] content) throws IOException {
- String hexStr = HexUtil.bytesToHex(content);
- System.out.println("Dumping data:");
- System.out.println(hexStr);
- Asn1Dumper dumper = new Asn1Dumper();
- dumper.dump(content);
- }
-
- public static void dump(ByteBuffer content) throws IOException {
- byte[] bytes = new byte[content.remaining()];
- content.get(bytes);
- dump(bytes);
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java
index 8bbe4cf..d4ae6d9 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumpable.java
@@ -1,3 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT 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;
public interface Asn1Dumpable {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.java
index ecc4bdd..739e59d 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1Dumper.java
@@ -25,7 +25,7 @@ import org.apache.kerby.asn1.type.Asn1Type;
import java.io.IOException;
import java.nio.ByteBuffer;
-public class Asn1Dumper {
+public final class Asn1Dumper {
private StringBuilder builder = new StringBuilder();
@@ -38,8 +38,7 @@ public class Asn1Dumper {
}
public void dump(ByteBuffer content) throws IOException {
- Asn1InputBuffer buffer = new Asn1InputBuffer(content);
- Asn1Type value = buffer.read();
+ Asn1Type value = Asn1.decode(content);
if (value == null) {
return;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/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
deleted file mode 100644
index 3242ccc..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1InputBuffer.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.asn1;
-
-import org.apache.kerby.asn1.type.Asn1Object;
-import org.apache.kerby.asn1.type.Asn1Type;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-/**
- * Asn1 decoder. Given an input stream, it validates and parses
- * according to ASN1 spec, and the resultant object can be read
- * and read until exhausted.
- */
-public class Asn1InputBuffer {
- private final ByteBuffer buffer;
-
- /**
- * Constructor with bytes.
- * @param bytes The bytes
- */
- public Asn1InputBuffer(byte[] bytes) {
- this(ByteBuffer.wrap(bytes));
- }
-
- /**
- * Constructor with a ByteBuffer.
- * @param byteBuffer The byte buffer
- */
- public Asn1InputBuffer(ByteBuffer byteBuffer) {
- this.buffer = byteBuffer;
- }
-
- /**
- * Parse and read ASN1 object from the stream. If it's already
- * exhausted then null will be returned to indicate the end.
- * @return an ASN1 object if available otherwise null
- * @throws IOException e
- */
- public Asn1Type read() throws IOException {
- Asn1Type one = Asn1Object.readOne(buffer);
- return one;
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/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
deleted file mode 100644
index 729e042..0000000
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Asn1OutputBuffer.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.asn1;
-
-import org.apache.kerby.asn1.type.Asn1Object;
-import org.apache.kerby.asn1.type.Asn1Type;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Asn1 encoder
- */
-public class Asn1OutputBuffer {
- private List<Asn1Type> objects;
-
- public Asn1OutputBuffer() {
- this.objects = new ArrayList<Asn1Type>(3);
- }
-
- public void write(Asn1Type value) {
- objects.add(value);
- }
-
- public ByteBuffer getOutput() {
- int len = encodingLength();
- ByteBuffer byteBuffer = ByteBuffer.allocate(len);
- encode(byteBuffer);
- return byteBuffer;
- }
-
- private int encodingLength() {
- int allLen = 0;
- for (Asn1Type item : objects) {
- if (item != null) {
- allLen += ((Asn1Object) item).encodingLength();
- }
- }
- return allLen;
- }
-
- private void encode(ByteBuffer buffer) {
- for (Asn1Type item : objects) {
- if (item != null) {
- item.encode(buffer);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/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 2d02bd8..e7eb853 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.Asn1;
import org.apache.kerby.asn1.Asn1FieldInfo;
import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.TaggingOption;
@@ -74,7 +75,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
@Override
public void decode(ByteBuffer content) throws IOException {
int foundPos = -1;
- Asn1Item item = readOne(content);
+ Asn1Item item = (Asn1Item) Asn1.decode(content);
for (int i = 0; i < fieldInfos.length; ++i) {
if (item.isContextSpecific()) {
if (fieldInfos[i].getTagNo() == item.tagNo()) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
index aec8504..6008282 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Constructed.java
@@ -19,6 +19,7 @@
*/
package org.apache.kerby.asn1.type;
+import org.apache.kerby.asn1.Asn1;
import org.apache.kerby.asn1.Tag;
import java.io.IOException;
@@ -79,7 +80,7 @@ public class Asn1Constructed extends AbstractAsn1Type<List<Asn1Type>> {
@Override
protected void decodeBody(ByteBuffer content) throws IOException {
while (content.remaining() > 0) {
- Asn1Item item = readOne(content);
+ Asn1Item item = (Asn1Item) Asn1.decode(content);
if (item != null) {
if (item.isSimple() && !isLazy()) {
item.decodeValueAsSimple();
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/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
index 6a3a3a2..70a43a7 100644
--- 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
@@ -287,19 +287,4 @@ public abstract class Asn1Object implements Asn1Type {
decode(content);
}
}
-
- public static Asn1Header readHeader(ByteBuffer content) throws IOException {
- Asn1Reader1 reader = new Asn1Reader1(content);
- return reader.readHeader();
- }
-
- public static Asn1Item readOne(ByteBuffer content) throws IOException {
- Asn1Reader1 reader = new Asn1Reader1(content);
- Asn1Header header = reader.readHeader();
-
- Asn1Item result = new Asn1Item(header.getTag(), header.getValueBuffer());
- result.useDefinitiveLength(header.isDefinitiveLength());
-
- return result;
- }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Dump.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Dump.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Dump.java
new file mode 100644
index 0000000..540de22
--- /dev/null
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Dump.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.asn1;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.IOException;
+
+public class TestAsn1Dump {
+
+ @Test
+ public void testDecoding() throws IOException {
+ try {
+ PersonnelRecord pr = TestData.createSamplePersonnel();
+ Asn1.dump(pr);
+
+ byte[] data = TestData.createSammplePersonnelEncodingData();
+ Asn1.dump(data);
+ } catch (Exception e) {
+ Assert.fail();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Input.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Input.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Input.java
deleted file mode 100644
index 9a5b2c5..0000000
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestAsn1Input.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.asn1;
-
-import org.junit.Test;
-
-import java.io.IOException;
-
-public class TestAsn1Input {
-
- @Test
- public void testDecoding() throws IOException {
- //PersonnelRecord expected = TestData.createSamplePersonnel();
- byte[] data = TestData.createSammplePersonnelEncodingData();
- //Asn1InputBuffer ib = new Asn1InputBuffer(data);
- Asn1Dump.dump(data);
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
index 1e77f47..828aec0 100644
--- a/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
+++ b/kerby-asn1/src/test/java/org/apache/kerby/asn1/TestPersonnelRecord.java
@@ -36,7 +36,6 @@ public class TestPersonnelRecord {
@Test
public void testEncoding() {
PersonnelRecord pr = TestData.createSamplePersonnel();
- Asn1Dump.dump(pr);
if (verbose) {
System.out.println("Name:");
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/4cb4366c/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 d95c14e..87d5731 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
@@ -19,9 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb;
+import org.apache.kerby.asn1.Asn1;
import org.apache.kerby.asn1.Asn1Header;
import org.apache.kerby.asn1.Tag;
-import org.apache.kerby.asn1.type.Asn1Object;
import org.apache.kerby.asn1.type.Asn1Type;
import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
import org.apache.kerby.kerberos.kerb.type.base.KrbError;
@@ -65,7 +65,7 @@ public class KrbCodec {
}
public static KrbMessage decodeMessage(ByteBuffer buffer) throws IOException {
- Asn1Header header = Asn1Object.readHeader(buffer);
+ Asn1Header header = Asn1.decodeHeader(buffer);
Tag tag = header.getTag();
KrbMessage msg;
@@ -87,6 +87,7 @@ public class KrbCodec {
} else {
throw new IOException("To be supported krb message type with tag: " + tag);
}
+
msg.decode(tag, header.getValueBuffer());
return msg;
}
[10/26] directory-kerby git commit: Minor grammatical fix
Posted by pl...@apache.org.
Minor grammatical fix
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/949104fd
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/949104fd
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/949104fd
Branch: refs/heads/pkinit-support
Commit: 949104fd2f301c4af1389050a06831a7cb7e4111
Parents: 0138b2a
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Tue Dec 1 11:21:48 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Tue Dec 1 11:21:48 2015 +0000
----------------------------------------------------------------------
.../kerby/kerberos/kerb/server/preauth/token/TokenPreauth.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/949104fd/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 a516873..7b03704 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
@@ -103,7 +103,7 @@ public class TokenPreauth extends AbstractPreauthPlugin {
serverPrincipal.setRealm(kdcRequest.getKdcReq().getReqBody().getRealm());
kdcRequest.setServerPrincipal(serverPrincipal);
if (!audiences.contains(serverPrincipal.getName())) {
- throw new KrbException("Token audience not match with the target server principal!");
+ throw new KrbException("The token audience does not match with the target server principal!");
}
if (kdcRequest instanceof AsRequest) {
AsRequest asRequest = (AsRequest) kdcRequest;
[03/26] directory-kerby git commit: DIRKRB-484 Refactor configuration
items for TokenPreauth in KDC side
Posted by pl...@apache.org.
DIRKRB-484 Refactor configuration items for TokenPreauth in KDC side
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/dbc73db7
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/dbc73db7
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/dbc73db7
Branch: refs/heads/pkinit-support
Commit: dbc73db7a9cca2bc216e56f9a0021755c4a9567f
Parents: 27038b8
Author: Lin <li...@foxmail.com>
Authored: Mon Nov 30 20:56:17 2015 +0800
Committer: Lin <li...@foxmail.com>
Committed: Mon Nov 30 20:56:17 2015 +0800
----------------------------------------------------------------------
.../org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java | 6 +++---
.../kerberos/kerb/integration/test/TokenLoginTestBase.java | 4 ++--
.../java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java | 6 +++---
.../org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java | 6 +++---
4 files changed, 11 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/dbc73db7/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 27bdc50..f33309f 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
@@ -66,11 +66,11 @@ public class WithTokenKdcTestBase extends KdcTestBase {
protected void configKdcSeverAndClient() {
super.configKdcSeverAndClient();
String verifyKeyPath = this.getClass().getResource("/").getPath();
- getKdcServer().getKdcConfig().setString(KdcConfigKey.VERIFY_KEY, verifyKeyPath);
+ getKdcServer().getKdcConfig().setString(KdcConfigKey.TOKEN_VERIFY_KEYS, verifyKeyPath);
URL privateKeyPath = WithTokenKdcTestBase.class.getResource("/private_key.pem");
- getKdcServer().getKdcConfig().setString(KdcConfigKey.DECRYPTION_KEY, privateKeyPath.getPath());
- getKdcServer().getKdcConfig().setString(KdcConfigKey.ISSUERS, ISSUER);
+ getKdcServer().getKdcConfig().setString(KdcConfigKey.TOKEN_DECRYPTION_KEYS, privateKeyPath.getPath());
+ getKdcServer().getKdcConfig().setString(KdcConfigKey.TOKEN_ISSUERS, ISSUER);
}
protected AuthToken getKrbToken() {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/dbc73db7/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 6ee1f8a..025a9fa 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
@@ -67,8 +67,8 @@ public class TokenLoginTestBase extends LoginTestBase {
getKdcServer().getKdcConfig().setBoolean(KdcConfigKey.ALLOW_TOKEN_PREAUTH,
isTokenPreauthAllowed());
String verifyKeyFile = this.getClass().getResource("/").getPath();
- getKdcServer().getKdcConfig().setString(KdcConfigKey.VERIFY_KEY, verifyKeyFile);
- getKdcServer().getKdcConfig().setString(KdcConfigKey.ISSUERS, "token-service");
+ getKdcServer().getKdcConfig().setString(KdcConfigKey.TOKEN_VERIFY_KEYS, verifyKeyFile);
+ getKdcServer().getKdcConfig().setString(KdcConfigKey.TOKEN_ISSUERS, "token-service");
}
protected Boolean isTokenPreauthAllowed() {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/dbc73db7/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 e53ddc9..18e8b3d 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
@@ -160,14 +160,14 @@ public class KdcConfig extends Krb5Conf {
}
public String getVerifyKeyConfig() {
- return getString(KdcConfigKey.VERIFY_KEY, true, KDCDEFAULT);
+ return getString(KdcConfigKey.TOKEN_VERIFY_KEYS, true, KDCDEFAULT);
}
public String getDecryptionKeyConfig() {
- return getString(KdcConfigKey.DECRYPTION_KEY, true, KDCDEFAULT);
+ return getString(KdcConfigKey.TOKEN_DECRYPTION_KEYS, true, KDCDEFAULT);
}
public List<String> getIssuers() {
- return Arrays.asList(getStringArray(KdcConfigKey.ISSUERS, true, KDCDEFAULT));
+ return Arrays.asList(getStringArray(KdcConfigKey.TOKEN_ISSUERS, true, KDCDEFAULT));
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/dbc73db7/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
index e9c736d..6cae218 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
@@ -49,9 +49,9 @@ public enum KdcConfigKey implements ConfigKey {
ENCRYPTION_TYPES("aes128-cts-hmac-sha1-96 des3-cbc-sha1-kd"),
RESTRICT_ANONYMOUS_TO_TGT(false),
KDC_MAX_DGRAM_REPLY_SIZE(4096),
- VERIFY_KEY(),
- DECRYPTION_KEY(),
- ISSUERS();
+ TOKEN_VERIFY_KEYS(),
+ TOKEN_DECRYPTION_KEYS(),
+ TOKEN_ISSUERS();
private Object defaultValue;
[05/26] directory-kerby git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/directory-kerby
Posted by pl...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/directory-kerby
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/8b0ef719
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/8b0ef719
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/8b0ef719
Branch: refs/heads/pkinit-support
Commit: 8b0ef71943e3fd6e75fc1e289bdaa886781152ba
Parents: 66fce42 dbc73db
Author: Kai Zheng <ka...@intel.com>
Authored: Tue Dec 1 11:52:28 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Tue Dec 1 11:52:28 2015 +0800
----------------------------------------------------------------------
.../org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java | 6 +++---
.../kerberos/kerb/integration/test/TokenLoginTestBase.java | 4 ++--
.../java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java | 6 +++---
.../org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java | 6 +++---
4 files changed, 11 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
[26/26] 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/1d9567ec
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/1d9567ec
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/1d9567ec
Branch: refs/heads/pkinit-support
Commit: 1d9567ec2716d19e54c53343fd6541cd6018609a
Parents: 38b2aa3 68c837f
Author: plusplusjiajia <ji...@intel.com>
Authored: Mon Dec 7 11:39:55 2015 +0800
Committer: plusplusjiajia <ji...@intel.com>
Committed: Mon Dec 7 11:39:55 2015 +0800
----------------------------------------------------------------------
docs/kerby-checkstyle.xml | 2 +-
.../main/java/org/apache/kerby/asn1/Asn1.java | 95 ++
.../java/org/apache/kerby/asn1/Asn1Dump.java | 72 --
.../org/apache/kerby/asn1/Asn1Dumpable.java | 26 +
.../java/org/apache/kerby/asn1/Asn1Dumper.java | 91 ++
.../org/apache/kerby/asn1/Asn1FieldInfo.java | 12 +-
.../java/org/apache/kerby/asn1/Asn1Header.java | 54 +
.../org/apache/kerby/asn1/Asn1InputBuffer.java | 108 --
.../org/apache/kerby/asn1/Asn1OutputBuffer.java | 67 --
.../java/org/apache/kerby/asn1/EnumType.java | 28 +
.../org/apache/kerby/asn1/ExplicitField.java | 6 +-
.../org/apache/kerby/asn1/ImplicitField.java | 6 +-
.../apache/kerby/asn1/LimitedByteBuffer.java | 121 --
.../main/java/org/apache/kerby/asn1/Tag.java | 141 +++
.../java/org/apache/kerby/asn1/TagClass.java | 2 +-
.../org/apache/kerby/asn1/TaggingOption.java | 8 +-
.../org/apache/kerby/asn1/UniversalTag.java | 10 +-
.../kerby/asn1/type/AbstractAsn1Type.java | 47 +-
.../org/apache/kerby/asn1/type/Asn1Any.java | 47 +-
.../apache/kerby/asn1/type/Asn1BitString.java | 7 +
.../apache/kerby/asn1/type/Asn1BmpString.java | 6 +-
.../org/apache/kerby/asn1/type/Asn1Boolean.java | 6 +-
.../org/apache/kerby/asn1/type/Asn1Choice.java | 33 +-
.../apache/kerby/asn1/type/Asn1Collection.java | 88 +-
.../kerby/asn1/type/Asn1CollectionOf.java | 38 +-
.../kerby/asn1/type/Asn1CollectionType.java | 100 +-
.../apache/kerby/asn1/type/Asn1Constructed.java | 107 ++
.../apache/kerby/asn1/type/Asn1EnumType.java | 27 -
.../apache/kerby/asn1/type/Asn1Enumerated.java | 9 +-
.../org/apache/kerby/asn1/type/Asn1Eoc.java | 54 +
.../org/apache/kerby/asn1/type/Asn1Flags.java | 10 +-
.../org/apache/kerby/asn1/type/Asn1Item.java | 96 +-
.../org/apache/kerby/asn1/type/Asn1Null.java | 10 +-
.../org/apache/kerby/asn1/type/Asn1Object.java | 356 ++----
.../apache/kerby/asn1/type/Asn1OctetString.java | 14 +-
.../apache/kerby/asn1/type/Asn1Sequence.java | 3 +-
.../apache/kerby/asn1/type/Asn1SequenceOf.java | 3 +-
.../kerby/asn1/type/Asn1SequenceType.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Set.java | 3 +-
.../org/apache/kerby/asn1/type/Asn1SetOf.java | 3 +-
.../org/apache/kerby/asn1/type/Asn1SetType.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Simple.java | 33 +-
.../org/apache/kerby/asn1/type/Asn1String.java | 4 +-
.../org/apache/kerby/asn1/type/Asn1Tagging.java | 27 +-
.../kerby/asn1/type/Asn1TaggingCollection.java | 183 +++
.../kerby/asn1/type/Asn1TaggingSequence.java | 38 +
.../apache/kerby/asn1/type/Asn1TaggingSet.java | 39 +
.../org/apache/kerby/asn1/type/Asn1Type.java | 24 +-
.../kerby/asn1/type/TaggingCollection.java | 170 ---
.../apache/kerby/asn1/type/TaggingSequence.java | 38 -
.../org/apache/kerby/asn1/type/TaggingSet.java | 38 -
.../org/apache/kerby/asn1/util/Asn1Reader.java | 114 ++
.../org/apache/kerby/asn1/util/Asn1Reader1.java | 47 +
.../org/apache/kerby/asn1/util/Asn1Reader2.java | 62 ++
.../org/apache/kerby/asn1/util/Asn1Util.java | 119 ++
.../java/org/apache/kerby/asn1/util/Base64.java | 1048 ++++++++++++++++++
.../org/apache/kerby/asn1/util/HexUtil.java | 113 ++
.../java/org/apache/kerby/asn1/util/IOUtil.java | 109 ++
.../java/org/apache/kerby/asn1/util/Utf8.java | 34 +
.../org/apache/kerby/asn1/PersonnelRecord.java | 85 +-
.../org/apache/kerby/asn1/TestAsn1Boolean.java | 5 +-
.../apache/kerby/asn1/TestAsn1Collection.java | 13 +-
.../org/apache/kerby/asn1/TestAsn1Dump.java | 41 +
.../org/apache/kerby/asn1/TestAsn1Flags.java | 11 +-
.../org/apache/kerby/asn1/TestAsn1Input.java | 35 -
.../org/apache/kerby/asn1/TestAsn1Integer.java | 5 +-
.../kerby/asn1/TestAsn1ObjectIdentifier.java | 5 +-
.../org/apache/kerby/asn1/TestAsn1UtcTime.java | 5 +-
.../apache/kerby/asn1/TestPersonnelRecord.java | 27 +-
.../test/java/org/apache/kerby/asn1/Util.java | 153 ---
.../kerberos/kdc/WithTokenKdcTestBase.java | 6 +-
.../src/test/resources/log4j.properties | 30 +
kerby-kerb/integration-test/run/login.conf | 2 +-
.../kerb/integration/test/AppClient.java | 2 +-
.../kerb/integration/test/AppServer.java | 4 +-
.../kerb/integration/test/gss/GssAppClient.java | 16 +-
.../kerb/integration/test/gss/GssAppServer.java | 30 +-
.../integration/test/sasl/SaslAppClient.java | 4 +-
.../integration/test/sasl/SaslAppServer.java | 18 +-
.../integration/test/TokenLoginTestBase.java | 6 +-
.../src/test/resources/log4j.properties | 30 +
.../kerby/kerberos/kerb/preauth/PaFlag.java | 11 +-
.../kerby/kerberos/kerb/codec/CodecTest.java | 3 +-
.../apache/kerby/kerberos/kerb/KrbCodec.java | 19 +-
.../kerby/kerberos/kerb/KrbErrorCode.java | 11 +-
.../kerberos/kerb/type/KrbAppSequenceType.java | 16 +-
.../kerberos/kerb/type/KrbSequenceType.java | 12 +-
.../kerby/kerberos/kerb/type/ad/AdToken.java | 16 +-
.../kerb/type/ad/AuthorizationDataEntry.java | 18 +-
.../kerb/type/ad/AuthorizationType.java | 11 +-
.../kerby/kerberos/kerb/type/ap/ApOption.java | 11 +-
.../kerby/kerberos/kerb/type/ap/ApRep.java | 18 +-
.../kerby/kerberos/kerb/type/ap/ApReq.java | 22 +-
.../kerberos/kerb/type/ap/Authenticator.java | 33 +-
.../kerberos/kerb/type/ap/EncAPRepPart.java | 23 +-
.../kerby/kerberos/kerb/type/base/CheckSum.java | 18 +-
.../kerberos/kerb/type/base/CheckSumType.java | 7 +-
.../kerberos/kerb/type/base/EncryptedData.java | 20 +-
.../kerberos/kerb/type/base/EncryptionKey.java | 18 +-
.../kerberos/kerb/type/base/EncryptionType.java | 6 +-
.../kerb/type/base/EtypeInfo2Entry.java | 20 +-
.../kerberos/kerb/type/base/EtypeInfoEntry.java | 18 +-
.../kerberos/kerb/type/base/HostAddrType.java | 11 +-
.../kerberos/kerb/type/base/HostAddress.java | 18 +-
.../kerby/kerberos/kerb/type/base/KeyUsage.java | 11 +-
.../kerby/kerberos/kerb/type/base/KrbError.java | 38 +-
.../kerberos/kerb/type/base/KrbMessage.java | 20 +-
.../kerberos/kerb/type/base/KrbMessageType.java | 11 +-
.../kerby/kerberos/kerb/type/base/KrbToken.java | 29 +-
.../kerberos/kerb/type/base/LastReqEntry.java | 18 +-
.../kerberos/kerb/type/base/LastReqType.java | 11 +-
.../kerby/kerberos/kerb/type/base/NameType.java | 11 +-
.../kerberos/kerb/type/base/PrincipalName.java | 19 +-
.../kerby/kerberos/kerb/type/base/SamType.java | 9 +-
.../kerberos/kerb/type/base/TokenFormat.java | 11 +-
.../kerb/type/base/TransitedEncoding.java | 18 +-
.../kerb/type/base/TransitedEncodingType.java | 11 +-
.../kerberos/kerb/type/fast/ArmorType.java | 11 +-
.../kerberos/kerb/type/fast/FastOption.java | 11 +-
.../kerberos/kerb/type/fast/KrbFastArmor.java | 18 +-
.../kerb/type/fast/KrbFastArmoredRep.java | 16 +-
.../kerb/type/fast/KrbFastArmoredReq.java | 20 +-
.../kerb/type/fast/KrbFastFinished.java | 20 +-
.../kerberos/kerb/type/fast/KrbFastReq.java | 20 +-
.../kerb/type/fast/KrbFastResponse.java | 22 +-
.../kerberos/kerb/type/fast/PaAuthnEntry.java | 20 +-
.../kerberos/kerb/type/fast/PaFxFastReply.java | 16 +-
.../kerb/type/fast/PaFxFastRequest.java | 16 +-
.../kerberos/kerb/type/kdc/EncKdcRepPart.java | 38 +-
.../kerby/kerberos/kerb/type/kdc/KdcOption.java | 11 +-
.../kerby/kerberos/kerb/type/kdc/KdcRep.java | 26 +-
.../kerby/kerberos/kerb/type/kdc/KdcReq.java | 20 +-
.../kerberos/kerb/type/kdc/KdcReqBody.java | 38 +-
.../kerb/type/pa/PaAuthenticationSetElem.java | 20 +-
.../kerberos/kerb/type/pa/PaDataEntry.java | 18 +-
.../kerby/kerberos/kerb/type/pa/PaDataType.java | 11 +-
.../kerby/kerberos/kerb/type/pa/PaEncTsEnc.java | 18 +-
.../kerberos/kerb/type/pa/otp/OtpTokenInfo.java | 32 +-
.../kerb/type/pa/otp/PaOtpChallenge.java | 24 +-
.../kerberos/kerb/type/pa/pkinit/AuthPack.java | 22 +-
.../kerberos/kerb/type/pa/pkinit/DHRepInfo.java | 18 +-
.../pa/pkinit/ExternalPrincipalIdentifier.java | 20 +-
.../kerb/type/pa/pkinit/KdcDHKeyInfo.java | 20 +-
.../kerb/type/pa/pkinit/Krb5PrincipalName.java | 18 +-
.../kerberos/kerb/type/pa/pkinit/PaPkAsRep.java | 18 +-
.../kerberos/kerb/type/pa/pkinit/PaPkAsReq.java | 20 +-
.../kerb/type/pa/pkinit/PkAuthenticator.java | 22 +-
.../kerb/type/pa/pkinit/ReplyKeyPack.java | 18 +-
.../kerb/type/pa/token/PaTokenChallenge.java | 16 +-
.../kerb/type/pa/token/PaTokenRequest.java | 18 +-
.../kerberos/kerb/type/pa/token/TokenFlag.java | 11 +-
.../kerberos/kerb/type/pa/token/TokenInfo.java | 18 +-
.../kerb/type/ticket/EncTicketPart.java | 36 +-
.../kerby/kerberos/kerb/type/ticket/Ticket.java | 22 +-
.../kerberos/kerb/type/ticket/TicketFlag.java | 11 +-
.../kerby/kerberos/kerb/server/KdcConfig.java | 6 +-
.../kerberos/kerb/server/KdcConfigKey.java | 6 +-
.../kerb/server/preauth/token/TokenPreauth.java | 2 +-
.../kerby/kerberos/kerb/client/JaasKrbUtil.java | 2 +-
.../org/apache/kerby/cms/type/Attribute.java | 18 +-
.../cms/type/AttributeCertificateInfoV1.java | 33 +-
.../kerby/cms/type/AttributeCertificateV1.java | 20 +-
.../org/apache/kerby/cms/type/Certificate.java | 19 +-
.../kerby/cms/type/CertificateChoices.java | 23 +-
.../apache/kerby/cms/type/CertificateList.java | 20 +-
.../org/apache/kerby/cms/type/CmsVersion.java | 9 +-
.../apache/kerby/cms/type/CompressedData.java | 19 +-
.../org/apache/kerby/cms/type/ContentInfo.java | 18 +-
.../kerby/cms/type/EncapsulatedContentInfo.java | 18 +-
.../kerby/cms/type/ExtendedCertificate.java | 20 +-
.../kerby/cms/type/ExtendedCertificateInfo.java | 20 +-
.../kerby/cms/type/IssuerAndSerialNumber.java | 18 +-
.../kerby/cms/type/OtherCertificateFormat.java | 17 +-
.../cms/type/OtherRevocationInfoFormat.java | 18 +-
.../kerby/cms/type/RevocationInfoChoice.java | 18 +-
.../org/apache/kerby/cms/type/SignedData.java | 26 +-
.../apache/kerby/cms/type/SignerIdentifier.java | 18 +-
.../org/apache/kerby/cms/type/SignerInfo.java | 28 +-
.../java/org/apache/kerby/cms/type/Subject.java | 18 +-
.../kerby/x500/type/AttributeTypeAndValue.java | 17 +-
.../java/org/apache/kerby/x500/type/Name.java | 16 +-
.../kerby/x509/type/AccessDescription.java | 18 +-
.../kerby/x509/type/AlgorithmIdentifier.java | 19 +-
.../apache/kerby/x509/type/AttCertIssuer.java | 18 +-
.../kerby/x509/type/AttCertValidityPeriod.java | 18 +-
.../org/apache/kerby/x509/type/Attribute.java | 18 +-
.../kerby/x509/type/AttributeCertificate.java | 20 +-
.../x509/type/AttributeCertificateInfo.java | 32 +-
.../kerby/x509/type/AuthorityKeyIdentifier.java | 19 +-
.../kerby/x509/type/BasicConstraints.java | 18 +-
.../org/apache/kerby/x509/type/CRLReason.java | 11 +-
.../org/apache/kerby/x509/type/Certificate.java | 20 +-
.../apache/kerby/x509/type/CertificateList.java | 20 +-
.../apache/kerby/x509/type/CertificatePair.java | 18 +-
.../org/apache/kerby/x509/type/DHParameter.java | 19 +-
.../apache/kerby/x509/type/DSAParameter.java | 20 +-
.../org/apache/kerby/x509/type/DigestInfo.java | 18 +-
.../kerby/x509/type/DigestedObjectType.java | 11 +-
.../apache/kerby/x509/type/DirectoryString.java | 23 +-
.../org/apache/kerby/x509/type/DisplayText.java | 22 +-
.../kerby/x509/type/DistributionPoint.java | 20 +-
.../kerby/x509/type/DistributionPointName.java | 18 +-
.../apache/kerby/x509/type/EDIPartyName.java | 18 +-
.../org/apache/kerby/x509/type/Extension.java | 20 +-
.../org/apache/kerby/x509/type/GeneralName.java | 33 +-
.../apache/kerby/x509/type/GeneralSubtree.java | 20 +-
.../java/org/apache/kerby/x509/type/Holder.java | 20 +-
.../apache/kerby/x509/type/IetfAttrSyntax.java | 18 +-
.../kerby/x509/type/IetfAttrSyntaxChoice.java | 20 +-
.../apache/kerby/x509/type/IssuerSerial.java | 20 +-
.../x509/type/IssuingDistributionPoint.java | 25 +-
.../org/apache/kerby/x509/type/KeyUsage.java | 9 +-
.../apache/kerby/x509/type/NameConstraints.java | 18 +-
.../apache/kerby/x509/type/NoticeReference.java | 18 +-
.../kerby/x509/type/ObjectDigestInfo.java | 22 +-
.../org/apache/kerby/x509/type/OtherName.java | 18 +-
.../kerby/x509/type/PolicyConstraints.java | 18 +-
.../kerby/x509/type/PolicyInformation.java | 18 +-
.../apache/kerby/x509/type/PolicyMapping.java | 18 +-
.../kerby/x509/type/PolicyQualifierInfo.java | 18 +-
.../kerby/x509/type/PrivateKeyUsagePeriod.java | 18 +-
.../org/apache/kerby/x509/type/ReasonFlags.java | 9 +-
.../kerby/x509/type/RevokedCertificate.java | 20 +-
.../org/apache/kerby/x509/type/RoleSyntax.java | 18 +-
.../kerby/x509/type/SubjectPublicKeyInfo.java | 18 +-
.../org/apache/kerby/x509/type/TBSCertList.java | 29 +-
.../apache/kerby/x509/type/TBSCertificate.java | 36 +-
.../java/org/apache/kerby/x509/type/Target.java | 20 +-
.../org/apache/kerby/x509/type/TargetCert.java | 20 +-
.../java/org/apache/kerby/x509/type/Time.java | 18 +-
.../org/apache/kerby/x509/type/UserNotice.java | 18 +-
.../java/org/apache/kerby/x509/type/V2Form.java | 20 +-
pom.xml | 1 +
233 files changed, 5434 insertions(+), 2033 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/docs/kerby-checkstyle.xml
----------------------------------------------------------------------
diff --cc docs/kerby-checkstyle.xml
index 6af4748,72388df..241bdf4
--- a/docs/kerby-checkstyle.xml
+++ b/docs/kerby-checkstyle.xml
@@@ -66,8 -66,8 +66,8 @@@
<!-- Checks for imports -->
<!-- See http://checkstyle.sf.net/config_import.html -->
- <module name="AvoidStarImport"/>
+ <!--module name="AvoidStarImport"/-->
- <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+ <!--module name="IllegalImport"/--> <!-- defaults to sun.* packages -->
<module name="RedundantImport"/>
<module name="UnusedImports"/>
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-asn1/src/main/java/org/apache/kerby/asn1/UniversalTag.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/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 7011770,36082c4..ec5e81a
--- 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,13 -19,14 +19,15 @@@
*/
package org.apache.kerby.asn1.type;
+ import org.apache.kerby.asn1.Asn1Dumpable;
+ import org.apache.kerby.asn1.Asn1Dumper;
import org.apache.kerby.asn1.Asn1FieldInfo;
- import org.apache.kerby.asn1.LimitedByteBuffer;
- import org.apache.kerby.asn1.TagClass;
+ import org.apache.kerby.asn1.EnumType;
import org.apache.kerby.asn1.TaggingOption;
+ import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
+import java.math.BigInteger;
import java.nio.ByteBuffer;
/**
@@@ -177,12 -185,8 +186,12 @@@ public abstract class Asn1CollectionTyp
setFieldAs(index, new Asn1Integer(value));
}
- protected void setFieldAsBigInteger(int index, BigInteger value) {
++ protected void setFieldAsBigInteger(EnumType index, BigInteger value) {
+ setFieldAs(index, new Asn1Integer(value));
+ }
+
- protected <T extends Asn1Type> T getFieldAsAny(int index, Class<T> t) {
- Asn1Type value = fields[index];
+ protected <T extends Asn1Type> T getFieldAsAny(EnumType index, Class<T> t) {
+ Asn1Type value = fields[index.getValue()];
if (value != null && value instanceof Asn1Any) {
Asn1Any any = (Asn1Any) value;
return any.getValueAs(t);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/CodecTest.java
----------------------------------------------------------------------
diff --cc kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/CodecTest.java
index eb4083c,3507bf0..bfb2baf
--- 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
@@@ -47,28 -41,6 +47,27 @@@ public class CodecTest
assertThat(restored).isNotNull();
assertThat(restored.getCksumtype()).isEqualTo(mcs.getCksumtype());
assertThat(mcs.getChecksum()).isEqualTo(restored.getChecksum());
- assertThat(restored.tagNo()).isEqualTo(mcs.tagNo());
- assertThat(restored.tagFlags()).isEqualTo(mcs.tagFlags());
+ assertThat(restored.tag()).isEqualTo(mcs.tag());
}
+
+ @Test
+ public void testDecode() throws IOException {
+ AsReq expected = new AsReq();
+
+ KdcReqBody body = new KdcReqBody();
+
+ expected.setReqBody(body);
+
+ Asn1InputBuffer ib = new Asn1InputBuffer(expected.encode());
+ Asn1Type fd1 = ib.read();
+ Asn1Type fd2 = ib.read();
+ Asn1Type fd3 = ib.read();
+ Asn1Type fd4 = ib.read();
+ Asn1Type fd5 = ib.read();
+ Asn1Type fd6 = ib.read();
+ Asn1Type fd7 = ib.read();
+ Asn1Type fd8 = ib.read();
+ Asn1Type fd9 = ib.read();
+
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/base/NameType.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/AuthPack.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/KdcDHKeyInfo.java
----------------------------------------------------------------------
diff --cc kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/type/pa/pkinit/KdcDHKeyInfo.java
index 05c2f02,f3669eb..9f6e92d
--- 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
@@@ -34,12 -36,24 +36,24 @@@ import static org.apache.kerby.kerberos
}
*/
public class KdcDHKeyInfo extends KrbSequenceType {
- private static final int SUBJECT_PUBLIC_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,
++ SUBJECT_PUBLIC_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),
+ new ExplicitField(SUBJECT_PUBLIC_KEY, Asn1BitString.class),
new ExplicitField(NONCE, Asn1Integer.class),
new ExplicitField(DH_KEY_EXPIRATION, KerberosTime.class)
};
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
----------------------------------------------------------------------
diff --cc kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
index 4025628,18e8b3d..a9ac3c4
--- 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
@@@ -168,16 -168,6 +168,16 @@@ public class KdcConfig extends Krb5Con
}
public List<String> getIssuers() {
- return Arrays.asList(getStringArray(KdcConfigKey.ISSUERS, true, KDCDEFAULT));
+ return Arrays.asList(getStringArray(KdcConfigKey.TOKEN_ISSUERS, true, KDCDEFAULT));
}
+
+ public List<String> getPkinitAnchors() {
+ return Arrays.asList(getString(
+ KdcConfigKey.PKINIT_ANCHORS, true, KDCDEFAULT));
+ }
+
+ public String getPkinitIdentity() {
+ return getString(
+ KdcConfigKey.PKINIT_IDENTITY, true, KDCDEFAULT);
+ }
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
----------------------------------------------------------------------
diff --cc kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
index e372193,6cae218..f74951a
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
@@@ -49,11 -49,9 +49,11 @@@ public enum KdcConfigKey implements Con
ENCRYPTION_TYPES("aes128-cts-hmac-sha1-96 des3-cbc-sha1-kd"),
RESTRICT_ANONYMOUS_TO_TGT(false),
KDC_MAX_DGRAM_REPLY_SIZE(4096),
- VERIFY_KEY(),
- DECRYPTION_KEY(),
- ISSUERS(),
+ TOKEN_VERIFY_KEYS(),
+ TOKEN_DECRYPTION_KEYS(),
- TOKEN_ISSUERS();
++ TOKEN_ISSUERS(),
+ PKINIT_IDENTITY(null),
+ PKINIT_ANCHORS(null);
private Object defaultValue;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-pkix/src/main/java/org/apache/kerby/x509/type/AlgorithmIdentifier.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DHParameter.java
----------------------------------------------------------------------
diff --cc kerby-pkix/src/main/java/org/apache/kerby/x509/type/DHParameter.java
index f66cb70,0000000..f5366c1
mode 100644,000000..100644
--- a/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DHParameter.java
+++ b/kerby-pkix/src/main/java/org/apache/kerby/x509/type/DHParameter.java
@@@ -1,51 -1,0 +1,64 @@@
+package org.apache.kerby.x509.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 static org.apache.kerby.x509.type.DHParameter.MyEnum.*;
+
+import java.math.BigInteger;
+
+public class DHParameter extends Asn1SequenceType {
++ protected static enum MyEnum implements EnumType {
++ P,
++ G,
++ Q;
+
- private static final int P = 0;
- private static final int G = 1;
- private static final int Q = 2;
++ @Override
++ public int getValue() {
++ return ordinal();
++ }
++
++ @Override
++ public String getName() {
++ return name();
++ }
++ }
+
+ static Asn1FieldInfo[] fieldInfos = new Asn1FieldInfo[] {
+ new Asn1FieldInfo(P, Asn1Integer.class),
+ new Asn1FieldInfo(G, Asn1Integer.class),
+ new Asn1FieldInfo(Q, Asn1Integer.class),
+ };
+
+ public DHParameter() {
+ super(fieldInfos);
+ }
+
+ public void setP(BigInteger p) {
+ setFieldAsBigInteger(P, p);
+ }
+
+ public BigInteger getP() {
+ Asn1Integer p = getFieldAs(P, Asn1Integer.class);
+ return p.getValue();
+ }
+
+ public void setG(BigInteger g) {
+ setFieldAsBigInteger(G, g);
+ }
+
+ public BigInteger getG() {
+ Asn1Integer g = getFieldAs(G, Asn1Integer.class);
+ return g.getValue();
+ }
+
+ public void setQ(BigInteger q) {
+ setFieldAsBigInteger(Q, q);
+ }
+
+ public BigInteger getQ() {
+ Asn1Integer q = getFieldAs(Q, Asn1Integer.class);
+ return q.getValue();
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/kerby-pkix/src/main/java/org/apache/kerby/x509/type/SubjectPublicKeyInfo.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/1d9567ec/pom.xml
----------------------------------------------------------------------
[04/26] directory-kerby git commit: ASN1. Use Tag class to simplify
Posted by pl...@apache.org.
ASN1. Use Tag class to simplify
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/66fce42a
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/66fce42a
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/66fce42a
Branch: refs/heads/pkinit-support
Commit: 66fce42a067fb371e6ce56fe24b28274db597c5b
Parents: 27038b8
Author: Kai Zheng <ka...@intel.com>
Authored: Tue Dec 1 11:51:52 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Tue Dec 1 11:51:52 2015 +0800
----------------------------------------------------------------------
.../main/java/org/apache/kerby/asn1/Tag.java | 140 +++++++++++++++
.../java/org/apache/kerby/asn1/TagClass.java | 2 +-
.../org/apache/kerby/asn1/TaggingOption.java | 8 +-
.../kerby/asn1/type/AbstractAsn1Type.java | 47 +++--
.../org/apache/kerby/asn1/type/Asn1Any.java | 3 +-
.../org/apache/kerby/asn1/type/Asn1Choice.java | 8 +-
.../apache/kerby/asn1/type/Asn1Collection.java | 15 +-
.../kerby/asn1/type/Asn1CollectionOf.java | 6 +-
.../kerby/asn1/type/Asn1CollectionType.java | 15 +-
.../org/apache/kerby/asn1/type/Asn1Item.java | 27 +--
.../org/apache/kerby/asn1/type/Asn1Object.java | 170 ++++++++-----------
.../apache/kerby/asn1/type/Asn1Sequence.java | 3 +-
.../apache/kerby/asn1/type/Asn1SequenceOf.java | 3 +-
.../kerby/asn1/type/Asn1SequenceType.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Set.java | 3 +-
.../org/apache/kerby/asn1/type/Asn1SetOf.java | 3 +-
.../org/apache/kerby/asn1/type/Asn1SetType.java | 2 +-
.../org/apache/kerby/asn1/type/Asn1Simple.java | 18 +-
.../org/apache/kerby/asn1/type/Asn1String.java | 4 +-
.../org/apache/kerby/asn1/type/Asn1Tagging.java | 13 +-
.../org/apache/kerby/asn1/type/Asn1Type.java | 24 +--
.../kerby/asn1/type/TaggingCollection.java | 13 +-
.../org/apache/kerby/asn1/type/TaggingSet.java | 3 +-
.../kerby/kerberos/kerb/codec/CodecTest.java | 3 +-
.../apache/kerby/kerberos/kerb/KrbCodec.java | 9 +-
25 files changed, 312 insertions(+), 232 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.java
new file mode 100644
index 0000000..bea843f
--- /dev/null
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/Tag.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.asn1;
+
+/**
+ * ASN1, a tagged system.
+ */
+public class Tag {
+ private int tagFlags = 0;
+ private int tagNo = 0;
+
+ public Tag(int tag) {
+ this.tagFlags = tag & 0xE0;
+ this.tagNo = tag & 0x1F;
+ }
+
+ public Tag(UniversalTag tag) {
+ this.tagFlags = TagClass.UNIVERSAL.getValue();
+ this.tagNo = tag.getValue();
+ }
+
+ public Tag(int tagFlags, int tagNo) {
+ this.tagFlags = tagFlags & 0xE0;
+ this.tagNo = tagNo;
+ }
+
+ public Tag(TagClass tagClass, int tagNo) {
+ this.tagFlags = tagClass.getValue();
+ this.tagNo = tagNo;
+ }
+
+ public Tag(Tag other) {
+ this(other.tagFlags, other.tagNo);
+ }
+
+ public TagClass tagClass() {
+ return TagClass.fromTag(tagFlags);
+ }
+
+ public void usePrimitive(boolean isPrimitive) {
+ if (isPrimitive) {
+ tagFlags &= ~0x20;
+ } else {
+ tagFlags |= 0x20;
+ }
+ }
+
+ public boolean isPrimitive() {
+ return (tagFlags & 0x20) == 0;
+ }
+
+ public int tagFlags() {
+ return tagFlags;
+ }
+
+ public int tagNo() {
+ return tagNo;
+ }
+
+ public UniversalTag universalTag() {
+ if (isUniversal()) {
+ return UniversalTag.fromValue(tagNo());
+ }
+ return UniversalTag.UNKNOWN;
+ }
+
+ public boolean isUniversal() {
+ return tagClass().isUniversal();
+ }
+
+ public boolean isAppSpecific() {
+ return tagClass().isAppSpecific();
+ }
+
+ public boolean isContextSpecific() {
+ return tagClass().isContextSpecific();
+ }
+
+ public boolean isTagged() {
+ return tagClass().isTagged();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ Tag tag = (Tag) o;
+
+ if (tagFlags != tag.tagFlags) {
+ return false;
+ }
+
+ return tagNo == tag.tagNo;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = tagFlags;
+ result = 31 * result + tagNo;
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "Tag["
+ + "tagFlags=" + tagFlags
+ + ", tagNo=" + tagNo
+ + ']';
+ }
+
+ public static Tag newAppTag(int tagNo) {
+ return new Tag(TagClass.APPLICATION, tagNo);
+ }
+
+ public static Tag newCtxTag(int tagNo) {
+ return new Tag(TagClass.CONTEXT_SPECIFIC, tagNo);
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java
index cbd02fc..8070692 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/TagClass.java
@@ -93,7 +93,7 @@ public enum TagClass {
* @param tag The int value of tag class
* @return tag class
*/
- public static TagClass fromTagFlags(int tag) {
+ public static TagClass fromTag(int tag) {
return fromValue(tag & 0xC0);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java
index 8bb0419..898c25e 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/TaggingOption.java
@@ -19,8 +19,6 @@
*/
package org.apache.kerby.asn1;
-import org.apache.kerby.asn1.type.Asn1Type;
-
/**
* Tagging option for tagging an ASN1 type.
*/
@@ -82,12 +80,12 @@ public final class TaggingOption {
* @param isTaggedConstructed Tagged Constructed or not
* @return tag flag
*/
- public int tagFlags(boolean isTaggedConstructed) {
+ public Tag getTag(boolean isTaggedConstructed) {
boolean isConstructed = isImplicit ? isTaggedConstructed : true;
TagClass tagClass = isAppSpecific ? TagClass.APPLICATION : TagClass.CONTEXT_SPECIFIC;
- int flags = tagClass.getValue() | (isConstructed ? Asn1Type.CONSTRUCTED_FLAG : 0x00);
+ int flags = tagClass.getValue() | (isConstructed ? 0x20 : 0x00);
- return flags;
+ return new Tag(flags, tagNo);
}
/**
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 4dc2c28..b12c67d 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,7 +19,8 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.TagClass;
+import org.apache.kerby.asn1.Tag;
+import org.apache.kerby.asn1.UniversalTag;
/**
* The abstract ASN1 type for all the ASN1 types. It provides basic
@@ -32,43 +33,39 @@ public abstract class AbstractAsn1Type<T> extends Asn1Object {
private T value;
/**
- * Default constructor, generally for decoding as a value container
- * @param tagClass The tag class
- * @param tagNo The tag number
+ * Default constructor.
+ * @param tag the tag
+ * @param value the value
*/
- public AbstractAsn1Type(TagClass tagClass, int tagNo) {
- this(tagClass, tagNo, null);
+ public AbstractAsn1Type(Tag tag, T value) {
+ super(tag);
+ this.value = value;
}
/**
- * Default constructor, generally for decoding as a value container
- * @param tagFlags The tag flags
- * @param tagNo The tag number
+ * Default constructor.
+ * @param tag the tag
*/
- public AbstractAsn1Type(int tagFlags, int tagNo) {
- this(tagFlags, tagNo, null);
+ public AbstractAsn1Type(Tag tag) {
+ super(tag);
}
/**
- * Constructor with a value, generally for encoding of the value
- * @param tagFlags The tag flags
- * @param tagNo The tag number
- * @param value The value
+ * Default constructor with an universal tag.
+ * @param tag the tag
+ * @param value the value
*/
- public AbstractAsn1Type(int tagFlags, int tagNo, T value) {
- this(TagClass.fromTagFlags(tagFlags), tagNo, value);
- setTagFlags(tagFlags);
+ public AbstractAsn1Type(UniversalTag tag, T value) {
+ super(tag);
+ this.value = value;
}
/**
- * Constructor with a value, generally for encoding of the value
- * @param tagClass The tag class
- * @param tagNo The tag number
- * @param value The value
+ * Default constructor with an universal tag.
+ * @param tag the tag
*/
- public AbstractAsn1Type(TagClass tagClass, int tagNo, T value) {
- super(tagClass, tagNo);
- this.value = value;
+ public AbstractAsn1Type(UniversalTag tag) {
+ super(tag);
}
public T getValue() {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 73a82c7..0506edd 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
@@ -20,7 +20,6 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.LimitedByteBuffer;
-import org.apache.kerby.asn1.TagClass;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
@@ -36,7 +35,7 @@ public class Asn1Any extends AbstractAsn1Type<Asn1Type> {
private Asn1Type field;
public Asn1Any() {
- super(TagClass.UNIVERSAL, UniversalTag.ANY.getValue());
+ super(UniversalTag.ANY);
}
// For encoding phase.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 3641070..a2a9504 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
@@ -21,7 +21,6 @@ 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;
import org.apache.kerby.asn1.UniversalTag;
@@ -34,7 +33,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
private Asn1Type[] fields;
public Asn1Choice(Asn1FieldInfo[] fieldInfos) {
- super(TagClass.UNIVERSAL, UniversalTag.CHOICE.getValue());
+ super(UniversalTag.CHOICE);
setValue(this);
this.fieldInfos = fieldInfos.clone();
this.fields = new Asn1Type[fieldInfos.length];
@@ -84,8 +83,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
}
} else {
initField(i);
- if (fields[i].tagFlags() == item.tagFlags()
- && fields[i].tagNo() == item.tagNo()) {
+ if (fields[i].tag().equals(item.tag())) {
foundPos = i;
break;
} else {
@@ -95,7 +93,7 @@ public class Asn1Choice extends AbstractAsn1Type<Asn1Type> {
}
if (foundPos == -1) {
throw new RuntimeException("Unexpected item with (tagFlags, tagNo): ("
- + item.tagFlags() + ", " + item.tagNo() + ")");
+ + item.tag() + ", " + item.tagNo() + ")");
}
if (!item.isFullyDecoded()) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
index 54a2e9d..52c46c0 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Collection.java
@@ -20,7 +20,7 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.LimitedByteBuffer;
-import org.apache.kerby.asn1.TagClass;
+import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
@@ -32,8 +32,9 @@ import java.util.List;
* ASN1 complex type, may be better named.
*/
public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
- public Asn1Collection(TagClass tagClass, int tagNo) {
- super(tagClass, tagNo);
+
+ public Asn1Collection(UniversalTag universalTag) {
+ super(universalTag);
setValue(new ArrayList<Asn1Item>());
usePrimitive(false);
}
@@ -84,8 +85,12 @@ public class Asn1Collection extends AbstractAsn1Type<List<Asn1Item>> {
}
}
- public static boolean isCollection(int tagNo) {
- return isCollection(UniversalTag.fromValue(tagNo));
+ public static boolean isCollection(Tag tag) {
+ return isCollection(tag.universalTag());
+ }
+
+ public static boolean isCollection(int tag) {
+ return isCollection(new Tag(tag));
}
public static boolean isCollection(UniversalTag tagNo) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java
index 76ed6f5..6d7f36b 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1CollectionOf.java
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.TagClass;
+import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
import java.lang.reflect.ParameterizedType;
@@ -28,8 +28,8 @@ import java.util.List;
public abstract class Asn1CollectionOf<T extends Asn1Type> extends Asn1Collection
{
- public Asn1CollectionOf(TagClass tagClass, int tagNo) {
- super(tagClass, tagNo);
+ public Asn1CollectionOf(UniversalTag universalTag) {
+ super(universalTag);
}
public List<T> getElements() {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 72278d3..fc45949 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
@@ -21,8 +21,8 @@ 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;
+import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -34,8 +34,9 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
private Asn1FieldInfo[] fieldInfos;
private Asn1Type[] fields;
- public Asn1CollectionType(int universalTagNo, Asn1FieldInfo[] fieldInfos) {
- super(TagClass.UNIVERSAL, universalTagNo);
+ public Asn1CollectionType(UniversalTag universalTag, Asn1FieldInfo[] fieldInfos) {
+ super(universalTag);
+
setValue(this);
this.fieldInfos = fieldInfos.clone();
this.fields = new Asn1Type[fieldInfos.length];
@@ -79,7 +80,7 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
initFields();
Asn1Collection coll = createCollection();
- coll.decode(tagFlags(), tagNo(), content);
+ coll.decode(tag(), content);
int lastPos = -1, foundPos = -1;
for (Asn1Item item : coll.getValue()) {
@@ -90,15 +91,13 @@ public abstract class Asn1CollectionType extends AbstractAsn1Type<Asn1Collection
foundPos = i;
break;
}
- } else if (fields[i].tagFlags() == item.tagFlags()
- && fields[i].tagNo() == item.tagNo()) {
+ } else if (fields[i].tag().equals(item.tag())) {
foundPos = i;
break;
}
}
if (foundPos == -1) {
- throw new RuntimeException("Unexpected item with (tagFlags, tagNo): ("
- + item.tagFlags() + ", " + item.tagNo() + ")");
+ throw new RuntimeException("Unexpected item with tag: " + item.tag());
}
if (!item.isFullyDecoded()) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
index 74ef10a..a7924d8 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Item.java
@@ -21,6 +21,7 @@ package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.Asn1Factory;
import org.apache.kerby.asn1.LimitedByteBuffer;
+import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.TaggingOption;
import java.io.IOException;
@@ -42,11 +43,11 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
private LimitedByteBuffer bodyContent;
public Asn1Item(Asn1Type value) {
- super(value.tagFlags(), value.tagNo(), value);
+ super(value.tag(), value);
}
- public Asn1Item(int tag, int tagNo, LimitedByteBuffer bodyContent) {
- super(tag, tagNo);
+ public Asn1Item(Tag tag, LimitedByteBuffer bodyContent) {
+ super(tag);
this.bodyContent = bodyContent;
}
@@ -120,23 +121,7 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
public void decodeValueWith(Asn1Type value) throws IOException {
setValue(value);
- ((AbstractAsn1Type<?>) value).decode(tagFlags(), tagNo(), bodyContent);
- }
-
- public void decodeValueAsImplicitTagged(int originalTag, int originalTagNo) throws IOException {
- if (!isTagged()) {
- throw new IllegalArgumentException("Attempting to decode non-tagged value using tagging way");
- }
- Asn1Item taggedValue = new Asn1Item(originalTag, originalTagNo, getBodyContent());
- decodeValueWith(taggedValue);
- }
-
- public void decodeValueAsExplicitTagged() throws IOException {
- if (!isTagged()) {
- throw new IllegalArgumentException("Attempting to decode non-tagged value using tagging way");
- }
- Asn1Item taggedValue = decodeOne(getBodyContent());
- decodeValueWith(taggedValue);
+ ((AbstractAsn1Type<?>) value).decode(tag(), bodyContent);
}
private void decodeValueWith(Asn1Item taggedValue) throws IOException {
@@ -152,7 +137,7 @@ public class Asn1Item extends AbstractAsn1Type<Asn1Type> {
if (!isTagged()) {
throw new IllegalArgumentException("Attempting to decode non-tagged value using tagging way");
}
- ((AbstractAsn1Type<?>) value).taggedDecode(tagFlags(), tagNo(), getBodyContent(), taggingOption);
+ ((AbstractAsn1Type<?>) value).taggedDecode(tag(), getBodyContent(), taggingOption);
setValue(value);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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
index 95da847..aa9ebe2 100644
--- 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
@@ -20,8 +20,9 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.LimitedByteBuffer;
-import org.apache.kerby.asn1.TagClass;
+import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.TaggingOption;
+import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -31,10 +32,8 @@ import java.nio.ByteBuffer;
* encoding and decoding utilities.
*/
public abstract class Asn1Object implements Asn1Type {
+ private final Tag tag;
- private TagClass tagClass = TagClass.UNKNOWN;
- private int tagNo = -1;
- private int tagFlags = 0;
private int encodingLen = -1;
// encoding options
@@ -43,66 +42,50 @@ public abstract class Asn1Object implements Asn1Type {
private boolean isDefinitiveLength = false;
/**
- * Constructor with a value, generally for encoding of the value
- * @param tagFlags The tag flags
- * @param tagNo The tag number
+ * Constructor with a tag
+ * @param tag The tag
*/
- public Asn1Object(int tagFlags, int tagNo) {
- this(TagClass.fromTagFlags(tagFlags), tagNo);
- setTagFlags(tagFlags);
+ public Asn1Object(Tag tag) {
+ this.tag = new Tag(tag);
}
/**
- * Constructor with a value, generally for encoding of the value
- * @param tagClass The tag class
- * @param tagNo The tag number
+ * Default constructor with an universal tag.
+ * @param tag the tag
*/
- 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;
+ public Asn1Object(UniversalTag tag) {
+ this.tag = new Tag(tag);
}
- @Override
- public int tagFlags() {
- return tagFlags;
+ /**
+ * Constructor with a tag
+ * @param tag The tag
+ */
+ public Asn1Object(int tag) {
+ this.tag = new Tag(tag);
}
@Override
- public int tagNo() {
- return tagNo;
+ public Tag tag() {
+ return tag;
}
- protected void setTagFlags(int tagFlags) {
- this.tagFlags = tagFlags & 0xe0;
+ protected int tagFlags() {
+ return tag().tagFlags();
}
- protected void setTagNo(int tagNo) {
- this.tagNo = tagNo;
+ protected int tagNo() {
+ return tag().tagNo();
}
@Override
public void usePrimitive(boolean isPrimitive) {
- if (isPrimitive) {
- tagFlags &= ~CONSTRUCTED_FLAG;
- } else {
- tagFlags |= CONSTRUCTED_FLAG;
- }
+ tag.usePrimitive(isPrimitive);
}
@Override
public boolean isPrimitive() {
- return (tagFlags & CONSTRUCTED_FLAG) == 0;
+ return tag.isPrimitive();
}
@Override
@@ -165,7 +148,7 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void encode(ByteBuffer buffer) {
- encodeTag(buffer, tagFlags(), tagNo());
+ encodeTag(buffer, tag());
encodeLength(buffer, encodingBodyLength());
encodeBody(buffer);
}
@@ -186,61 +169,50 @@ public abstract class Asn1Object implements Asn1Type {
public int encodingLength() {
if (encodingLen == -1) {
int bodyLen = encodingBodyLength();
- encodingLen = lengthOfTagLength(tagNo()) + lengthOfBodyLength(bodyLen) + bodyLen;
+ encodingLen = lengthOfTagLength(tagNo())
+ + lengthOfBodyLength(bodyLen) + bodyLen;
}
return encodingLen;
}
- public boolean isUniversal() {
- return tagClass.isUniversal();
+ protected boolean isUniversal() {
+ return tag.isUniversal();
}
- public boolean isAppSpecific() {
- return tagClass.isAppSpecific();
+ protected boolean isAppSpecific() {
+ return tag.isAppSpecific();
}
- public boolean isContextSpecific() {
- return tagClass.isContextSpecific();
+ protected boolean isContextSpecific() {
+ return tag.isContextSpecific();
}
- public boolean isTagged() {
- return tagClass.isTagged();
+ protected boolean isTagged() {
+ return tag.isTagged();
}
public boolean isSimple() {
- return isUniversal() && Asn1Simple.isSimple(tagNo);
+ return Asn1Simple.isSimple(tag());
}
public boolean isCollection() {
- return isUniversal() && Asn1Collection.isCollection(tagNo);
+ return Asn1Collection.isCollection(tag());
}
protected abstract int encodingBodyLength();
protected void decode(LimitedByteBuffer content) throws IOException {
- int tag = readTag(content);
- int tagNo = readTagNo(content, tag);
- int tmpTagFlags = tag & 0xe0;
+ Tag tmpTag = readTag(content);
int length = readLength(content);
- decode(tmpTagFlags, tagNo, new LimitedByteBuffer(content, length));
+ decode(tmpTag, 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());
+ public void decode(Tag tag, LimitedByteBuffer content) throws IOException {
+ if (!tag().equals(tag)) {
+ throw new IOException("Unexpected tag " + tag
+ + ", expecting " + tag());
}
- if (tagNo() != -1 && tagNo() != tagNo) {
- throw new IOException("Unexpected tagNo " + tagNo + ", "
- + "expecting " + tagNo());
- }
-
- setTagClass(TagClass.fromTagFlags(tagFlags));
- setTagFlags(tagFlags);
- setTagNo(tagNo);
decodeBody(content);
}
@@ -265,8 +237,8 @@ public abstract class Asn1Object implements Asn1Type {
@Override
public void taggedEncode(ByteBuffer buffer, TaggingOption taggingOption) {
- int taggingTagFlags = taggingOption.tagFlags(!isPrimitive());
- encodeTag(buffer, taggingTagFlags, taggingOption.getTagNo());
+ Tag taggingTag = taggingOption.getTag(!isPrimitive());
+ encodeTag(buffer, taggingTag);
int taggingBodyLen = taggingOption.isImplicit() ? encodingBodyLength()
: encodingLength();
encodeLength(buffer, taggingBodyLen);
@@ -291,27 +263,20 @@ public abstract class Asn1Object implements Asn1Type {
protected void taggedDecode(LimitedByteBuffer content,
TaggingOption taggingOption) throws IOException {
- int taggingTag = readTag(content);
- int taggingTagNo = readTagNo(content, taggingTag);
+ Tag taggingTag = readTag(content);
int taggingLength = readLength(content);
LimitedByteBuffer newContent = new LimitedByteBuffer(content, taggingLength);
- int tmpTagFlags = taggingTag & 0xe0;
- taggedDecode(tmpTagFlags, taggingTagNo, newContent, taggingOption);
+ taggedDecode(taggingTag, newContent, taggingOption);
}
- protected void taggedDecode(int taggingTagFlags, int taggingTagNo,
- LimitedByteBuffer content,
+ protected void taggedDecode(Tag taggingTag, LimitedByteBuffer content,
TaggingOption taggingOption) throws IOException {
- int expectedTaggingTagFlags = taggingOption.tagFlags(!isPrimitive());
- if (expectedTaggingTagFlags != taggingTagFlags) {
- throw new IOException("Unexpected tag flags " + taggingTagFlags
+ Tag expectedTaggingTagFlags = taggingOption.getTag(!isPrimitive());
+ if (!expectedTaggingTagFlags.equals(taggingTag)) {
+ throw new IOException("Unexpected tag " + taggingTag
+ ", expecting " + expectedTaggingTagFlags);
}
- if (taggingOption.getTagNo() != taggingTagNo) {
- throw new IOException("Unexpected tagNo " + taggingTagNo + ", "
- + "expecting " + taggingOption.getTagNo());
- }
if (taggingOption.isImplicit()) {
decodeBody(content);
@@ -321,8 +286,7 @@ public abstract class Asn1Object implements Asn1Type {
}
public static Asn1Item decodeOne(LimitedByteBuffer content) throws IOException {
- int tag = readTag(content);
- int tagNo = readTagNo(content, tag);
+ Tag tmpTag = readTag(content);
int length = readLength(content);
if (length < 0) {
throw new IOException("Unexpected length");
@@ -330,7 +294,7 @@ public abstract class Asn1Object implements Asn1Type {
LimitedByteBuffer valueContent = new LimitedByteBuffer(content, length);
content.skip(length);
- Asn1Item result = new Asn1Item(tag, tagNo, valueContent);
+ Asn1Item result = new Asn1Item(tmpTag, valueContent);
if (result.isSimple()) {
result.decodeValueAsSimple();
}
@@ -338,8 +302,7 @@ public abstract class Asn1Object implements Asn1Type {
}
public static void skipOne(LimitedByteBuffer content) throws IOException {
- int tag = readTag(content);
- readTagNo(content, tag);
+ readTag(content);
int length = readLength(content);
if (length < 0) {
throw new IOException("Unexpected length");
@@ -380,7 +343,10 @@ public abstract class Asn1Object implements Asn1Type {
return length;
}
- public static void encodeTag(ByteBuffer buffer, int flags, int tagNo) {
+ public static void encodeTag(ByteBuffer buffer, Tag tag) {
+ int flags = tag.tagFlags();
+ int tagNo = tag.tagNo();
+
if (tagNo < 31) {
buffer.put((byte) (flags | tagNo));
} else {
@@ -423,16 +389,22 @@ public abstract class Asn1Object implements Asn1Type {
}
}
- public static int readTag(LimitedByteBuffer buffer) throws IOException {
- int tag = buffer.readByte() & 0xff;
- if (tag == 0) {
+ public static Tag readTag(LimitedByteBuffer buffer) throws IOException {
+ int tagFlags = readTagFlags(buffer);
+ int tagNo = readTagNo(buffer, tagFlags);
+ return new Tag(tagFlags, tagNo);
+ }
+
+ private static int readTagFlags(LimitedByteBuffer buffer) throws IOException {
+ int tagFlags = buffer.readByte() & 0xff;
+ if (tagFlags == 0) {
throw new IOException("Bad tag 0 found");
}
- return tag;
+ return tagFlags;
}
- public static int readTagNo(LimitedByteBuffer buffer, int tag) throws IOException {
- int tagNo = tag & 0x1f;
+ private static int readTagNo(LimitedByteBuffer buffer, int tagFlags) throws IOException {
+ int tagNo = tagFlags & 0x1f;
if (tagNo == 0x1f) {
tagNo = 0;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Sequence.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Sequence.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Sequence.java
index 2e483d2..c5a7dfc 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Sequence.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Sequence.java
@@ -19,11 +19,10 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.TagClass;
import org.apache.kerby.asn1.UniversalTag;
public class Asn1Sequence extends Asn1Collection {
public Asn1Sequence() {
- super(TagClass.UNIVERSAL, UniversalTag.SEQUENCE.getValue());
+ super(UniversalTag.SEQUENCE);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceOf.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceOf.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceOf.java
index 5dc69e0..074a8b7 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceOf.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SequenceOf.java
@@ -19,12 +19,11 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.TagClass;
import org.apache.kerby.asn1.UniversalTag;
public class Asn1SequenceOf<T extends Asn1Type> extends Asn1CollectionOf<T> {
public Asn1SequenceOf() {
- super(TagClass.UNIVERSAL, UniversalTag.SEQUENCE_OF.getValue());
+ super(UniversalTag.SEQUENCE_OF);
}
public boolean isEmpty() {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 4733838..85d2763 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
@@ -28,7 +28,7 @@ import org.apache.kerby.asn1.UniversalTag;
public class Asn1SequenceType extends Asn1CollectionType {
public Asn1SequenceType(Asn1FieldInfo[] tags) {
- super(UniversalTag.SEQUENCE.getValue(), tags);
+ super(UniversalTag.SEQUENCE, tags);
}
@Override
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Set.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Set.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Set.java
index 500c6f1..c2cded4 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Set.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Set.java
@@ -19,11 +19,10 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.TagClass;
import org.apache.kerby.asn1.UniversalTag;
public class Asn1Set extends Asn1Collection {
public Asn1Set() {
- super(TagClass.UNIVERSAL, UniversalTag.SET.getValue());
+ super(UniversalTag.SET);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetOf.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetOf.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetOf.java
index 2838538..a351eaf 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetOf.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1SetOf.java
@@ -19,11 +19,10 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.TagClass;
import org.apache.kerby.asn1.UniversalTag;
public class Asn1SetOf<T extends Asn1Type> extends Asn1CollectionOf<T> {
public Asn1SetOf() {
- super(TagClass.UNIVERSAL, UniversalTag.SET_OF.getValue());
+ super(UniversalTag.SET_OF);
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 b320224..63b64cd 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
@@ -28,7 +28,7 @@ import org.apache.kerby.asn1.UniversalTag;
public class Asn1SetType extends Asn1CollectionType {
public Asn1SetType(Asn1FieldInfo[] tags) {
- super(UniversalTag.SET.getValue(), tags);
+ super(UniversalTag.SET, tags);
}
@Override
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
index deb2de8..2f15daf 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Simple.java
@@ -20,7 +20,7 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.LimitedByteBuffer;
-import org.apache.kerby.asn1.TagClass;
+import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.UniversalTag;
import java.io.IOException;
@@ -42,11 +42,11 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
/**
* Constructor with a value, generally for encoding of the value
- * @param tagNo The tag number
+ * @param universalTag The tag number
* @param value The value
*/
- public Asn1Simple(UniversalTag tagNo, T value) {
- super(TagClass.UNIVERSAL, tagNo.getValue(), value);
+ public Asn1Simple(UniversalTag universalTag, T value) {
+ super(universalTag, value);
usePrimitive(true);
}
@@ -60,7 +60,7 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
@Override
public void encode(ByteBuffer buffer) {
- encodeTag(buffer, tagFlags(), tagNo());
+ encodeTag(buffer, tag());
int bodyLen = encodingBodyLength();
encodeLength(buffer, bodyLen);
if (bodyLen > 0) {
@@ -104,8 +104,12 @@ public abstract class Asn1Simple<T> extends AbstractAsn1Type<T> {
protected void toBytes() { }
- public static boolean isSimple(int tagNo) {
- return isSimple(UniversalTag.fromValue(tagNo));
+ public static boolean isSimple(Tag tag) {
+ return isSimple(tag.universalTag());
+ }
+
+ public static boolean isSimple(int tag) {
+ return isSimple(new Tag(tag));
}
public static boolean isSimple(UniversalTag tagNo) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1String.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1String.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1String.java
index 91c6d19..49ceb4a 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1String.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1String.java
@@ -29,8 +29,8 @@ import java.util.ArrayList;
import java.util.List;
public abstract class Asn1String extends Asn1Simple<String> {
- public Asn1String(UniversalTag tagNo) {
- super(tagNo, null);
+ public Asn1String(UniversalTag universalTag) {
+ super(universalTag, null);
}
public Asn1String(UniversalTag tagNo, String value) {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
index dd7d394..b808b3e 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Tagging.java
@@ -20,7 +20,7 @@
package org.apache.kerby.asn1.type;
import org.apache.kerby.asn1.LimitedByteBuffer;
-import org.apache.kerby.asn1.TagClass;
+import org.apache.kerby.asn1.Tag;
import java.io.IOException;
import java.lang.reflect.ParameterizedType;
@@ -33,14 +33,17 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
public Asn1Tagging(int tagNo, T value,
boolean isAppSpecific, boolean isImplicit) {
- super(isAppSpecific ? TagClass.APPLICATION : TagClass.CONTEXT_SPECIFIC,
- tagNo, value);
+ super(makeTag(isAppSpecific, tagNo), value);
if (value == null) {
initValue();
}
useImplicit(isImplicit);
}
+ private static Tag makeTag(boolean isAppSpecific, int tagNo) {
+ return isAppSpecific ? Tag.newAppTag(tagNo) : Tag.newCtxTag(tagNo);
+ }
+
@Override
public void useImplicit(boolean isImplicit) {
super.useImplicit(isImplicit);
@@ -48,9 +51,9 @@ public class Asn1Tagging<T extends Asn1Type> extends AbstractAsn1Type<T> {
if (!isImplicit) {
//In effect, explicitly tagged types are structured types consisting
// of one component, the underlying type.
- super.usePrimitive(false);
+ usePrimitive(false);
} else {
- super.usePrimitive(getValue().isPrimitive());
+ usePrimitive(getValue().isPrimitive());
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
----------------------------------------------------------------------
diff --git a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
index 271e795..4c1c538 100644
--- a/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
+++ b/kerby-asn1/src/main/java/org/apache/kerby/asn1/type/Asn1Type.java
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.asn1.type;
-import org.apache.kerby.asn1.TagClass;
+import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.TaggingOption;
import java.io.IOException;
@@ -30,12 +30,6 @@ import java.nio.ByteBuffer;
*/
public interface Asn1Type {
/**
- * A mask to determinate if a Tag is CONSTRUCTED. The fifth bit should be
- * set to 1 if the type is constructed (0010-0000).
- */
- int CONSTRUCTED_FLAG = 0x20;
-
- /**
* Encoding type
*/
enum EncodingType {
@@ -46,21 +40,9 @@ public interface Asn1Type {
/**
*
- * @return The tag class
- */
- TagClass tagClass();
-
- /**
- *
- * @return The tag flags
- */
- int tagFlags();
-
- /**
- * Get tag number for the type
- * @return tag number
+ * @return The tag
*/
- int tagNo();
+ Tag tag();
/**
* Use primitive or constructed.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 bac51b0..90f95c1 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
@@ -21,7 +21,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.Tag;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -36,19 +36,22 @@ public abstract class TaggingCollection extends AbstractAsn1Type<Asn1CollectionT
public TaggingCollection(int taggingTagNo, Asn1FieldInfo[] tags,
boolean isAppSpecific, boolean isImplicit) {
- super(isAppSpecific ? TagClass.APPLICATION : TagClass.CONTEXT_SPECIFIC,
- taggingTagNo);
+ super(makeTag(isAppSpecific, taggingTagNo));
this.tagged = createTaggedCollection(tags);
setValue(tagged);
this.tagging = new Asn1Tagging<Asn1CollectionType>(taggingTagNo,
tagged, isAppSpecific, isImplicit);
}
+ private static Tag makeTag(boolean isAppSpecific, int tagNo) {
+ return isAppSpecific ? Tag.newAppTag(tagNo) : Tag.newCtxTag(tagNo);
+ }
+
protected abstract Asn1CollectionType createTaggedCollection(Asn1FieldInfo[] tags);
@Override
- public int tagFlags() {
- return tagging.tagFlags();
+ public Tag tag() {
+ return tagging.tag();
}
@Override
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 52158cb..e13d5f0 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
@@ -22,7 +22,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
+ * For tagging a sequence type with tagNo, either application specific or
+ * context specific class
*/
public class TaggingSet extends TaggingCollection {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 3bd2117..3507bf0 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
@@ -41,7 +41,6 @@ public class CodecTest {
assertThat(restored).isNotNull();
assertThat(restored.getCksumtype()).isEqualTo(mcs.getCksumtype());
assertThat(mcs.getChecksum()).isEqualTo(restored.getChecksum());
- assertThat(restored.tagNo()).isEqualTo(mcs.tagNo());
- assertThat(restored.tagFlags()).isEqualTo(mcs.tagFlags());
+ assertThat(restored.tag()).isEqualTo(mcs.tag());
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/66fce42a/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 e592567..6db67de 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,6 +20,7 @@
package org.apache.kerby.kerberos.kerb;
import org.apache.kerby.asn1.LimitedByteBuffer;
+import org.apache.kerby.asn1.Tag;
import org.apache.kerby.asn1.type.Asn1Object;
import org.apache.kerby.asn1.type.Asn1Type;
import org.apache.kerby.kerberos.kerb.type.ap.ApReq;
@@ -65,14 +66,12 @@ public class KrbCodec {
public static KrbMessage decodeMessage(ByteBuffer byteBuffer) throws IOException {
LimitedByteBuffer limitedBuffer = new LimitedByteBuffer(byteBuffer);
- int tag = Asn1Object.readTag(limitedBuffer);
- int tagNo = Asn1Object.readTagNo(limitedBuffer, tag);
- int tagFlags = tag & 0xe0;
+ Tag tag = Asn1Object.readTag(limitedBuffer);
int length = Asn1Object.readLength(limitedBuffer);
LimitedByteBuffer valueBuffer = new LimitedByteBuffer(limitedBuffer, length);
KrbMessage msg;
- KrbMessageType msgType = KrbMessageType.fromValue(tagNo);
+ KrbMessageType msgType = KrbMessageType.fromValue(tag.tagNo());
if (msgType == KrbMessageType.TGS_REQ) {
msg = new TgsReq();
} else if (msgType == KrbMessageType.AS_REP) {
@@ -90,7 +89,7 @@ public class KrbCodec {
} else {
throw new IOException("To be supported krb message type with tag: " + tag);
}
- msg.decode(tagFlags, tagNo, valueBuffer);
+ msg.decode(tag, valueBuffer);
return msg;
}