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

com.unboundid.util.ssl.cert.NamedCurve Maven / Gradle / Ivy

Go to download

The UnboundID LDAP SDK for Java is a fast, comprehensive, and easy-to-use Java API for communicating with LDAP directory servers and performing related tasks like reading and writing LDIF, encoding and decoding data using base64 and ASN.1 BER, and performing secure communication. This package contains the Standard Edition of the LDAP SDK, which is a complete, general-purpose library for communicating with LDAPv3 directory servers.

There is a newer version: 7.0.1
Show newest version
/*
 * Copyright 2017-2023 Ping Identity Corporation
 * All Rights Reserved.
 */
/*
 * Copyright 2017-2023 Ping Identity Corporation
 *
 * 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.
 */
/*
 * Copyright (C) 2017-2023 Ping Identity Corporation
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License (GPLv2 only)
 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see .
 */
package com.unboundid.util.ssl.cert;



import com.unboundid.util.NotNull;
import com.unboundid.util.Nullable;
import com.unboundid.util.OID;
import com.unboundid.util.ThreadSafety;
import com.unboundid.util.ThreadSafetyLevel;



/**
 * This enum defines a set of OIDs that are known to be associated with elliptic
 * curve keys.
 */
@ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
public enum NamedCurve
{
  /**
   * The brainpoolP256r1 curve.
   */
  BRAINPOOLP256R1("1.3.36.3.3.2.8.1.1.7", "brainpoolP256r1"),



  /**
   * The brainpoolP384r1 curve.
   */
  BRAINPOOLP384R1("1.3.36.3.3.2.8.1.1.11", "brainpoolP384r1"),



  /**
   * The brainpoolP512r1 curve.
   */
  BRAINPOOLP512R1("1.3.36.3.3.2.8.1.1.13", "brainpoolP512r1"),



  /**
   * The secP160k1 curve.
   */
  SECP160K1("1.3.132.0.9", "secP160k1"),



  /**
   * The secP160r1 curve.
   */
  SECP160R1("1.3.132.0.8", "secP160r1"),



  /**
   * The secP160r2 curve.
   */
  SECP160R2("1.3.132.0.30", "secP160r2"),



  /**
   * The secP192k1 curve.
   */
  SECP192K1("1.3.132.0.31", "secP192k1"),



  /**
   * The secP192r1 curve (also known as nistP192).
   */
  SECP192R1("1.2.840.10045.3.1.1", "secP192r1"),



  /**
   * The secP224k1 curve.
   */
  SECP224K1("1.3.132.0.32", "secP224k1"),



  /**
   * The secP224r1 curve (also known as nistP224).
   */
  SECP224R1("1.3.132.0.33", "secP224r1"),



  /**
   * The secP256k1 curve.
   */
  SECP256K1("1.3.132.0.10", "secP256k1"),



  /**
   * The secP256r1 curve (also known as nistP256).
   */
  SECP256R1("1.2.840.10045.3.1.7", "secP256r1"),



  /**
   * The secP384r1 curve (also known as nistP384).
   */
  SECP384R1("1.3.132.0.34", "secP384r1"),



  /**
   * The secP521r1 curve (also known as nistP521).
   */
  SECP521R1("1.3.132.0.35", "secP521r1"),



  /**
   * The secT163k1 curve.
   */
  SECT163K1("1.3.132.0.1", "secT163k1"),



  /**
   * The secT163r2 curve.
   */
  SECT163R2("1.3.132.0.15", "secT163r2"),



  /**
   * The secT233k1 curve.
   */
  SECT233K1("1.3.132.0.26", "secT233k1"),



  /**
   * The secT233r1 curve.
   */
  SECT233R1("1.3.132.0.27", "secT233r1"),



  /**
   * The secT283k1 curve.
   */
  SECT283K1("1.3.132.0.16", "secT283k1"),



  /**
   * The secT283r1 curve.
   */
  SECT283R1("1.3.132.0.17", "secT283r1"),



  /**
   * The secT409k1 curve.
   */
  SECT409K1("1.3.132.0.36", "secT409k1"),



  /**
   * The secT409r1 curve.
   */
  SECT409R1("1.3.132.0.37", "secT409r1"),



  /**
   * The secT571k1 curve.
   */
  SECT571K1("1.3.132.0.38", "secT571k1"),



  /**
   * The secT571r1 curve.
   */
  SECT571R1("1.3.132.0.39", "secT571r1");



  // The OID for this extended key usage ID value.
  @NotNull private final OID oid;

  // The name for this extended key usage ID value.
  @NotNull private final String name;



  /**
   * Creates a new named curve value with the provided information.
   *
   * @param  oidString  The string representation of the OID for this named
   *                    curve value.
   * @param  name       The name for this named curve value.
   */
  NamedCurve(@NotNull final String oidString, @NotNull final String name)
  {
    this.name = name;

    oid = new OID(oidString);
  }



  /**
   * Retrieves the OID for this named curve value.
   *
   * @return  The OID for this named curve value.
   */
  @NotNull()
  public OID getOID()
  {
    return oid;
  }



  /**
   * Retrieves the name for this named curve value.
   *
   * @return  The name for this named curve value.
   */
  @NotNull()
  public String getName()
  {
    return name;
  }



  /**
   * Retrieves the named curve value with the specified OID.
   *
   * @param  oid  The OID of the named curve value to retrieve.  It must not be
   *              {@code null}.
   *
   * @return  The named curve value with the specified OID, or {@code null} if
   *          there is no value with the specified OID.
   */
  @Nullable()
  public static NamedCurve forOID(@NotNull final OID oid)
  {
    for (final NamedCurve curve : values())
    {
      if (curve.oid.equals(oid))
      {
        return curve;
      }
    }

    return null;
  }



  /**
   * Retrieves the name for the named curve value with the provided OID, or a
   * string representation of the OID if there is no value with that OID.
   *
   * @param  oid  The OID for the named curve to retrieve.
   *
   * @return  The name for the named curve value with the provided OID, or a
   *          string representation of the OID if there is no value with that
   *          OID.
   */
  @NotNull()
  public static String getNameOrOID(@NotNull final OID oid)
  {
    final NamedCurve curve = forOID(oid);
    if (curve == null)
    {
      return oid.toString();
    }
    else
    {
      return curve.name;
    }
  }



  /**
   * Retrieves the named curve with the specified name.
   *
   * @param  name  The name of the named curve to retrieve.  It must not be
   *               {@code null}.
   *
   * @return  The requested named curve, or {@code null} if no such curve is
   *          defined.
   */
  @Nullable()
  public static NamedCurve forName(@NotNull final String name)
  {
    for (final NamedCurve namedCurve : values())
    {
      if (namedCurve.name.equalsIgnoreCase(name) ||
           namedCurve.name().equalsIgnoreCase(name))
      {
        return namedCurve;
      }
    }

    return null;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy