diff options
author | Narayan Kamath <narayan@google.com> | 2014-12-15 16:56:09 +0000 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2014-12-16 14:50:13 +0000 |
commit | 11f82d1a94ebe1becb7e7d09dd3343ce117bdd46 (patch) | |
tree | 18f28c7f703602b0b4359eb3f71854a68b308243 /support/src | |
parent | f696c24c1bce78c80bdab80c53089eabaa5f814f (diff) | |
download | libcore-11f82d1a94ebe1becb7e7d09dd3343ce117bdd46.zip libcore-11f82d1a94ebe1becb7e7d09dd3343ce117bdd46.tar.gz libcore-11f82d1a94ebe1becb7e7d09dd3343ce117bdd46.tar.bz2 |
Repurpose "HexEncoding" for internal users.
Frameworks callers either roll their own or use an internal apache
class. Given that apache is going away, we need to provide them with
an alternative.
bug: 18027885
Change-Id: Iec01cba9f3d2027828457c0b450eac0dd08fcaf6
Diffstat (limited to 'support/src')
3 files changed, 4 insertions, 97 deletions
diff --git a/support/src/test/java/libcore/tlswire/handshake/ClientHello.java b/support/src/test/java/libcore/tlswire/handshake/ClientHello.java index 8d25cd5..ec88662 100644 --- a/support/src/test/java/libcore/tlswire/handshake/ClientHello.java +++ b/support/src/test/java/libcore/tlswire/handshake/ClientHello.java @@ -17,8 +17,8 @@ package libcore.tlswire.handshake; import libcore.tlswire.util.TlsProtocolVersion; -import libcore.tlswire.util.HexEncoding; import libcore.tlswire.util.IoUtils; +import libcore.util.HexEncoding; import java.io.ByteArrayInputStream; import java.io.DataInput; import java.io.DataInputStream; @@ -98,8 +98,8 @@ public class ClientHello extends HandshakeMessage { @Override public String toString() { return "ClientHello{client version: " + clientVersion - + ", random: " + HexEncoding.encode(random) - + ", sessionId: " + HexEncoding.encode(sessionId) + + ", random: " + new String(HexEncoding.encode(random)) + + ", sessionId: " + new String(HexEncoding.encode(sessionId)) + ", cipher suites: " + cipherSuites + ", compression methods: " + compressionMethods + ((extensions != null) ? (", extensions: " + String.valueOf(extensions)) : "") diff --git a/support/src/test/java/libcore/tlswire/handshake/HelloExtension.java b/support/src/test/java/libcore/tlswire/handshake/HelloExtension.java index e3361b9..5741072 100644 --- a/support/src/test/java/libcore/tlswire/handshake/HelloExtension.java +++ b/support/src/test/java/libcore/tlswire/handshake/HelloExtension.java @@ -16,8 +16,8 @@ package libcore.tlswire.handshake; -import libcore.tlswire.util.HexEncoding; import libcore.tlswire.util.IoUtils; +import libcore.util.HexEncoding; import java.io.DataInput; import java.io.IOException; import java.util.HashMap; diff --git a/support/src/test/java/libcore/tlswire/util/HexEncoding.java b/support/src/test/java/libcore/tlswire/util/HexEncoding.java deleted file mode 100644 index 2061fcc..0000000 --- a/support/src/test/java/libcore/tlswire/util/HexEncoding.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package libcore.tlswire.util; - -import java.nio.ByteBuffer; - -/** - * Hexadecimal encoding where each byte is represented by two hexadecimal digits. - */ -public class HexEncoding { - - /** Hidden constructor to prevent instantiation. */ - private HexEncoding() {} - - private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray(); - - /** - * Encodes the provided data as a hexadecimal string. - */ - public static String encode(byte[] data) { - return encode(data, 0, data.length); - } - - /** - * Encodes the provided data as a hexadecimal string. - */ - public static String encode(byte[] data, int offset, int len) { - StringBuilder result = new StringBuilder(len * 2); - for (int i = 0; i < len; i++) { - byte b = data[offset + i]; - result.append(HEX_DIGITS[(b >>> 4) & 0x0f]); - result.append(HEX_DIGITS[b & 0x0f]); - } - return result.toString(); - } - - /** - * Encodes the provided data as a hexadecimal string. - */ - public static String encode(ByteBuffer buf) { - return encode(buf.array(), buf.arrayOffset() + buf.position(), buf.remaining()); - } - - /** - * Decodes the provided hexadecimal string into an array of bytes. - */ - public static byte[] decode(String encoded) { - // IMPLEMENTATION NOTE: Special care is taken to permit odd number of hexadecimal digits. - int resultLengthBytes = (encoded.length() + 1) / 2; - byte[] result = new byte[resultLengthBytes]; - int resultOffset = 0; - int encodedCharOffset = 0; - if ((encoded.length() % 2) != 0) { - // Odd number of digits -- the first digit is the lower 4 bits of the first result byte. - result[resultOffset++] = - (byte) getHexadecimalDigitValue(encoded.charAt(encodedCharOffset)); - encodedCharOffset++; - } - for (int len = encoded.length(); encodedCharOffset < len; encodedCharOffset += 2) { - result[resultOffset++] = (byte) ( - (getHexadecimalDigitValue(encoded.charAt(encodedCharOffset)) << 4) - | getHexadecimalDigitValue(encoded.charAt(encodedCharOffset + 1))); - } - return result; - } - - private static int getHexadecimalDigitValue(char c) { - if ((c >= 'a') && (c <= 'f')) { - return (c - 'a') + 0x0a; - } else if ((c >= 'A') && (c <= 'F')) { - return (c - 'A') + 0x0a; - } else if ((c >= '0') && (c <= '9')) { - return c - '0'; - } else { - throw new IllegalArgumentException("Invalid hexadecimal digit at position : '" + c - + "' (0x" + Integer.toHexString(c) + ")"); - } - } -} |