Pin.java revision 6bc1e3966c4890ee3d47b5e527b800f2700ed627
16bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker/* 26bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * Copyright (C) 2015 The Android Open Source Project 36bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * 46bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * Licensed under the Apache License, Version 2.0 (the "License"); 56bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * you may not use this file except in compliance with the License. 66bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * You may obtain a copy of the License at 76bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * 86bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * http://www.apache.org/licenses/LICENSE-2.0 96bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * 106bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * Unless required by applicable law or agreed to in writing, software 116bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * distributed under the License is distributed on an "AS IS" BASIS, 126bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * See the License for the specific language governing permissions and 146bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker * limitations under the License. 156bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker */ 166bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker 176bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubakerpackage android.security.net.config; 186bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker 196bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubakerimport java.util.Arrays; 206bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker 216bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker/** @hide */ 226bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubakerpublic final class Pin { 236bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker public final String digestAlgorithm; 246bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker public final byte[] digest; 256bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker 266bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker private final int mHashCode; 276bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker 286bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker public Pin(String digestAlgorithm, byte[] digest) { 296bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker this.digestAlgorithm = digestAlgorithm; 306bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker this.digest = digest; 316bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker mHashCode = Arrays.hashCode(digest) ^ digestAlgorithm.hashCode(); 326bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker } 336bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker @Override 346bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker public int hashCode() { 356bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker return mHashCode; 366bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker } 376bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker 386bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker @Override 396bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker public boolean equals(Object obj) { 406bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker if (this == obj) { 416bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker return true; 426bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker } 436bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker if (!(obj instanceof Pin)) { 446bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker return false; 456bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker } 466bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker Pin other = (Pin) obj; 476bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker if (other.hashCode() != mHashCode) { 486bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker return false; 496bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker } 506bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker if (!Arrays.equals(digest, other.digest)) { 516bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker return false; 526bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker } 536bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker if (!digestAlgorithm.equals(other.digestAlgorithm)) { 546bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker return false; 556bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker } 566bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker return true; 576bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker } 586bc1e3966c4890ee3d47b5e527b800f2700ed627Chad Brubaker} 59