All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.wildfly.security.ssl.KeyAgreement 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).

There is a newer version: 34.0.0.Final
Show 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 static org.wildfly.security.ssl.ElytronMessages.log;

import java.util.EnumSet;

/**
 * The key agreement type for SSL/TLS cipher suite selection.
 *
 * @author David M. Lloyd
 */
public enum KeyAgreement {
    /**
     * Ephemeral elliptic-curve Diffie-Hellman key agreement.
     */
    ECDHE,
    /**
     * RSA key agreement.
     */
    RSA,
    /**
     * Diffie-Hellman key agreement using RSA-signed keys.
     */
    DHr,
    /**
     * Diffie-Hellman key agreement using DSS-signed keys.
     */
    DHd,
    /**
     * Ephemeral Diffie-Hellman key agreement.
     */
    DHE,
    /**
     * Pre-shared key ("PSK") key agreement.
     */
    PSK,
    /**
     * Fortezza key agreement.
     */
    FZA,
    /**
     * Kerberos V5 key agreement.
     */
    KRB5,
    /**
     * Elliptic-curve Diffie-Hellman ("ECDH") key agreement using RSA-signed keys.
     */
    ECDHr,
    /**
     * Elliptic-curve Diffie-Hellman ("ECDH") key agreement using ECDH-signed keys.
     */
    ECDHe,
    /**
     * VKA 34.10 key agreement as per RFC 4357.
     */
    GOST,
    /**
     * Secure remote password ("SRP") key agreement as per RFC 5054.
     */
    SRP,
    /**
     * RSA pre-shared key ("PSK") key agreement.
     */
    RSAPSK,
    /**
     * Ephemeral Diffie-Hellman pre-shared key ("PSK") key agreement.
     */
    DHEPSK,
    /**
     * RSA pre-shared key ("PSK") key agreement.
     */
    ECDHEPSK,
    ;
    static final int fullSize = values().length;

    static KeyAgreement forName(final String name) {
        switch (name) {
            case "EECDH": case "ECDHE": return ECDHE;
            case "RSA": return RSA;
            case "DHr": return DHr;
            case "DHd": return DHd;
            case "EDH": case "DHE": return DHE;
            case "PSK": return PSK;
            case "FZA": return FZA;
            case "KRB5": return KRB5;
            case "ECDHr": return ECDHr;
            case "ECDHe": return ECDHe;
            case "GOST": return GOST;
            case "SRP": return SRP;
            case "RSAPSK": return RSAPSK;
            case "EDHPSK": case "DHEPSK": return DHEPSK;
            case "ECDHEPSK": case "EECDHPSK": return ECDHEPSK;
            default: return null;
        }
    }

    static KeyAgreement require(final String name) {
        final KeyAgreement keyAgreement = forName(name);
        if (keyAgreement == null) {
            throw log.unknownKeyExchangeName(name);
        }
        return keyAgreement;
    }

    /**
     * Determine whether the given set is "full" (meaning it contains all possible values).
     *
     * @param keyAgreements the set
     * @return {@code true} if the set is full, {@code false} otherwise
     */
    public static boolean isFull(final EnumSet keyAgreements) {
        return keyAgreements != null && keyAgreements.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 KeyAgreement value1, final KeyAgreement 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 KeyAgreement value1, final KeyAgreement value2, final KeyAgreement 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 KeyAgreement... values) {
        if (values != null) for (KeyAgreement value : values) {
            if (this == value) return true;
        }
        return false;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy