Class 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:
    2021-07-02
    Author:
    Vladimir Dzhuvinov, Aleksei Doroganov
    See Also:
    Serialized Form
    • Field Detail

      • 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_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 Detail

      • 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 Detail

      • 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

        public ECParameterSpec toECParameterSpec()
        Returns the parameter specification for this cryptographic curve.
        Returns:
        The EC parameter specification, null if it cannot be determined.
      • 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<CurveforJWSAlgorithm​(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

        public static Curve forECParameterSpec​(ECParameterSpec spec)
        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.