/*
 * Copyright (C) 2015 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 android.security.net.config;

import java.util.Arrays;

@hide
/** @hide */
public final class Pin { public final String digestAlgorithm; public final byte[] digest; private final int mHashCode; public Pin(String digestAlgorithm, byte[] digest) { this.digestAlgorithm = digestAlgorithm; this.digest = digest; mHashCode = Arrays.hashCode(digest) ^ digestAlgorithm.hashCode(); }
@hide
/** * @hide */
public static boolean isSupportedDigestAlgorithm(String algorithm) { // Currently only SHA-256 is supported. SHA-512 if/once Chromium networking stack // supports it. return "SHA-256".equalsIgnoreCase(algorithm); }
@hide
/** * @hide */
public static int getDigestLength(String algorithm) { if ("SHA-256".equalsIgnoreCase(algorithm)) { return 32; } throw new IllegalArgumentException("Unsupported digest algorithm: " + algorithm); } @Override public int hashCode() { return mHashCode; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof Pin)) { return false; } Pin other = (Pin) obj; if (other.hashCode() != mHashCode) { return false; } if (!Arrays.equals(digest, other.digest)) { return false; } if (!digestAlgorithm.equals(other.digestAlgorithm)) { return false; } return true; } }