org.wildfly.security.ssl.Digest Maven / Gradle / Ivy
Go to download
This artifact provides a single jar that contains all classes required to use remote EJB and JMS, including
all dependencies. It is intended for use by those not using maven, maven users should just import the EJB and
JMS BOM's instead (shaded JAR's cause lots of problems with maven, as it is very easy to inadvertently end up
with different versions on classes on the class path).
The newest version!
/*
* JBoss, Home of Professional Open Source.
* Copyright 2014 Red Hat, Inc., and individual contributors
* as indicated by the @author tags.
*
* 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 org.wildfly.security.ssl;
import java.util.EnumSet;
/**
* The digest algorithm type for SSL/TLS cipher suite selection.
*
* @author David M. Lloyd
*/
public enum Digest {
/**
* The MD5 digest algorithm.
*/
MD5,
/**
* The SHA-1 digest algorithm.
*/
SHA1,
/**
* The GOST R 34.11-94 (HMAC) digest algorithm.
*/
GOST94,
/**
* The GOST 28147-89 (MAC, not HMAC) digest algorithm.
*/
GOST89MAC,
/**
* The SHA-256 digest algorithm.
*/
SHA256,
/**
* The SHA-384 digest algorithm.
*/
SHA384,
/**
* AEAD (Authenticated Encryption with Associated Data) based authenticated message mode.
*
* @deprecated no longer used; refer to the actual digest algorithm instead.
*/
@Deprecated
AEAD,
;
static final int fullSize = values().length;
static Digest forName(final String name) {
switch (name) {
case "MD5": return MD5;
case "SHA1": return SHA1;
case "GOST94": return GOST94;
case "GOST89MAC": return GOST89MAC;
case "SHA256": return SHA256;
case "SHA384": return SHA384;
case "AEAD": return AEAD;
default: return null;
}
}
/**
* Determine whether the given set is "full" (meaning it contains all possible values).
*
* @param digests the set
* @return {@code true} if the set is full, {@code false} otherwise
*/
public static boolean isFull(final EnumSet digests) {
return digests != null && digests.size() == fullSize;
}
/**
* Determine whether this instance is equal to one of the given instances.
*
* @param value1 the first instance
* @param value2 the second instance
* @return {@code true} if one of the instances matches this one, {@code false} otherwise
*/
public boolean in(final Digest value1, final Digest value2) {
return this == value1 || this == value2;
}
/**
* Determine whether this instance is equal to one of the given instances.
*
* @param value1 the first instance
* @param value2 the second instance
* @param value3 the third instance
* @return {@code true} if one of the instances matches this one, {@code false} otherwise
*/
public boolean in(final Digest value1, final Digest value2, final Digest value3) {
return this == value1 || this == value2 || this == value3;
}
/**
* Determine whether this instance is equal to one of the given instances.
*
* @param values the values to match against
* @return {@code true} if one of the instances matches this one, {@code false} otherwise
*/
public boolean in(final Digest... values) {
if (values != null) for (Digest value : values) {
if (this == value) return true;
}
return false;
}
}