/* * Copyright (C) 2016 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 com.android.apksig.internal.apk.v1; import java.util.Comparator; /** * Digest algorithm used with JAR signing (aka v1 signing scheme). */ public enum DigestAlgorithm { /** SHA-1 */ SHA1("SHA-1"), /** SHA2-256 */ SHA256("SHA-256"); private final String mJcaMessageDigestAlgorithm; private DigestAlgorithm(String jcaMessageDigestAlgoritm) { mJcaMessageDigestAlgorithm = jcaMessageDigestAlgoritm; } /** * Returns the {@link java.security.MessageDigest} algorithm represented by this digest * algorithm. */ String getJcaMessageDigestAlgorithm() { return mJcaMessageDigestAlgorithm; } public static Comparator<DigestAlgorithm> BY_STRENGTH_COMPARATOR = new StrengthComparator(); private static class StrengthComparator implements Comparator<DigestAlgorithm> { @Override public int compare(DigestAlgorithm a1, DigestAlgorithm a2) { switch (a1) { case SHA1: switch (a2) { case SHA1: return 0; case SHA256: return -1; } throw new RuntimeException("Unsupported algorithm: " + a2); case SHA256: switch (a2) { case SHA1: return 1; case SHA256: return 0; } throw new RuntimeException("Unsupported algorithm: " + a2); default: throw new RuntimeException("Unsupported algorithm: " + a1); } } } }