You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/12/27 21:35:50 UTC
directory-kerby git commit: PKINIT. Fixed a decoding issue caused by
previous commit
Repository: directory-kerby
Updated Branches:
refs/heads/master 386592e65 -> 8e2febd1a
PKINIT. Fixed a decoding issue caused by previous commit
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/8e2febd1
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/8e2febd1
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/8e2febd1
Branch: refs/heads/master
Commit: 8e2febd1a50d4828983c48e373600097cc23cebb
Parents: 386592e
Author: Kai Zheng <ka...@intel.com>
Authored: Mon Dec 28 04:35:00 2015 +0800
Committer: Kai Zheng <ka...@intel.com>
Committed: Mon Dec 28 04:35:00 2015 +0800
----------------------------------------------------------------------
.../kerb/preauth/pkinit/PkinitCrypto.java | 2 +-
.../java/org/apache/kerby/util/HexUtil.java | 47 ++++++++++++++++++++
2 files changed, 48 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8e2febd1/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitCrypto.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitCrypto.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitCrypto.java
index 015527c..262f84c 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitCrypto.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/preauth/pkinit/PkinitCrypto.java
@@ -338,7 +338,7 @@ public class PkinitCrypto {
public static Asn1ObjectIdentifier createOid(String content) throws KrbException {
Asn1ObjectIdentifier oid = new Asn1ObjectIdentifier();
oid.useDER();
- KrbCodec.decode(HexUtil.hex2bytes(content), oid);
+ KrbCodec.decode(HexUtil.hex2bytesFriendly(content), oid);
return oid;
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/8e2febd1/kerby-util/src/main/java/org/apache/kerby/util/HexUtil.java
----------------------------------------------------------------------
diff --git a/kerby-util/src/main/java/org/apache/kerby/util/HexUtil.java b/kerby-util/src/main/java/org/apache/kerby/util/HexUtil.java
index 93f6dfd..f682f03 100644
--- a/kerby-util/src/main/java/org/apache/kerby/util/HexUtil.java
+++ b/kerby-util/src/main/java/org/apache/kerby/util/HexUtil.java
@@ -26,6 +26,53 @@ public final class HexUtil {
private 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