1adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes/* 2adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * Copyright (C) 2011 The Android Open Source Project 3adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * 4adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 5adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * you may not use this file except in compliance with the License. 6adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * You may obtain a copy of the License at 7adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * 8adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * 10adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * Unless required by applicable law or agreed to in writing, software 11adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * See the License for the specific language governing permissions and 14adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * limitations under the License. 15adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes */ 16adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes 17860d2707ce126ef8f66e3eac7ceeab6d24218cd8Kenny Rootpackage org.conscrypt; 18adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes 19adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughesimport java.util.Arrays; 20adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes 21adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes/** 22adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes * Byte array wrapper for hashtable use. Implements equals() and hashCode(). 23adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes */ 24adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughesfinal class ByteArray { 25adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes private final byte[] bytes; 26adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes private final int hashCode; 27adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes 28adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes ByteArray(byte[] bytes) { 29adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes this.bytes = bytes; 30adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes this.hashCode = Arrays.hashCode(bytes); 31adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes } 32adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes 33f06338c01394610174fe2b3532beac56d61d9e26Kenny Root @Override 34f06338c01394610174fe2b3532beac56d61d9e26Kenny Root public int hashCode() { 35adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes return hashCode; 36adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes } 37adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes 38f06338c01394610174fe2b3532beac56d61d9e26Kenny Root @Override 39f06338c01394610174fe2b3532beac56d61d9e26Kenny Root public boolean equals(Object o) { 40adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes if (!(o instanceof ByteArray)) { 41adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes return false; 42adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes } 43adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes ByteArray lhs = (ByteArray) o; 44adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes return Arrays.equals(bytes, lhs.bytes); 45adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes } 46adf18db1513055012dd49c9b5fd0518afa21f9c3Elliott Hughes} 47