Class Curve

java.lang.Object
com.nimbusds.jose.jwk.Curve
All Implemented Interfaces:
Serializable

@Immutable public final class Curve extends Object implements Serializable
Cryptographic curve. This class is immutable.

Includes constants for the following standard cryptographic curves:

See

  • "Digital Signature Standard (DSS)", FIPS PUB 186-3, June 2009, National Institute of Standards and Technology (NIST).
  • CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE) (RFC 8037).
Version:
2024-04-20
Author:
Vladimir Dzhuvinov, Aleksei Doroganov
See Also:
  • Field Details

    • P_256

      public static final Curve P_256
      P-256 curve (secp256r1, also called prime256v1, OID = 1.2.840.10045.3.1.7).
    • SECP256K1

      public static final Curve SECP256K1
      secp256k1 curve (secp256k1, OID = 1.3.132.0.10).
    • P_256K

      @Deprecated public static final Curve P_256K
      Deprecated.
      P-256K curve.
    • P_384

      public static final Curve P_384
      P-384 curve (secp384r1, OID = 1.3.132.0.34).
    • P_521

      public static final Curve P_521
      P-521 curve (secp521r1).
    • Ed25519

      public static final Curve Ed25519
      Ed25519 signature algorithm key pairs.
    • Ed448

      public static final Curve Ed448
      Ed448 signature algorithm key pairs.
    • X25519

      public static final Curve X25519
      X25519 function key pairs.
    • X448

      public static final Curve X448
      X448 function key pairs.
  • Constructor Details

    • Curve

      public Curve(String name)
      Creates a new cryptographic curve with the specified JOSE name. A standard curve name and object identifier (OID) are not unspecified.
      Parameters:
      name - The JOSE name of the cryptographic curve. Must not be null.
    • Curve

      public Curve(String name, String stdName, String oid)
      Creates a new cryptographic curve with the specified JOSE name, standard name and object identifier (OID).
      Parameters:
      name - The JOSE name of the cryptographic curve. Must not be null.
      stdName - The standard name of the cryptographic curve, null if not specified.
      oid - The object identifier (OID) of the cryptographic curve, null if not specified.
  • Method Details

    • getName

      public String getName()
      Returns the JOSE name of this cryptographic curve.
      Returns:
      The JOSE name.
    • getStdName

      public String getStdName()
      Returns the standard name of this cryptographic curve.
      Returns:
      The standard name, null if not specified.
    • getOID

      public String getOID()
      Returns the standard object identifier (OID) of this cryptographic curve.
      Returns:
      The OID, null if not specified.
    • toECParameterSpec

      Returns the parameter specification for this cryptographic curve.
      Returns:
      The EC parameter specification, null if it cannot be determined.
    • toString

      public String toString()
      Overrides:
      toString in class Object
      See Also:
    • equals

      public boolean equals(Object object)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • parse

      public static Curve parse(String s)
      Parses a cryptographic curve from the specified string.
      Parameters:
      s - The string to parse. Must not be null or empty.
      Returns:
      The cryptographic curve.
    • forStdName

      public static Curve forStdName(String stdName)
      Gets the cryptographic curve for the specified standard name.
      Parameters:
      stdName - The standard curve name. May be null.
      Returns:
      The curve, null if it cannot be determined.
    • forOID

      public static Curve forOID(String oid)
      Gets the cryptographic curve for the specified object identifier (OID).
      Parameters:
      oid - The object OID. May be null.
      Returns:
      The curve, null if it cannot be determined.
    • forJWSAlgorithm

      public static Set<Curve> forJWSAlgorithm(JWSAlgorithm alg)
      Gets the cryptographic curve(s) for the specified JWS algorithm.
      Parameters:
      alg - The JWS algorithm. May be null.
      Returns:
      The curve(s), null if the JWS algorithm is not curve based, or the JWS algorithm is not supported.
    • forECParameterSpec

      Gets the cryptographic curve for the specified parameter specification.
      Parameters:
      spec - The EC parameter spec. May be null.
      Returns:
      The curve, null if it cannot be determined.