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