package elliptic

Import Path
	crypto/elliptic (on go.dev)

Dependency Relation
	imports 5 packages, and imported by 3 packages

Involved Source Files Package elliptic implements the standard NIST P-224, P-256, P-384, and P-521 elliptic curves over prime fields. Direct use of this package is deprecated, beyond the [P224], [P256], [P384], and [P521] values necessary to use [crypto/ecdsa]. Most other uses should migrate to the more efficient and safer [crypto/ecdh], or to third-party modules for lower-level functionality. nistec.go nistec_p256.go params.go
Package-Level Type Names (total 2)
/* sort by: | */
A Curve represents a short-form Weierstrass curve with a=-3. The behavior of Add, Double, and ScalarMult when the input is not a point on the curve is undefined. Note that the conventional point at infinity (0, 0) is not considered on the curve, although it can be returned by Add, Double, ScalarMult, or ScalarBaseMult (but not the [Unmarshal] or [UnmarshalCompressed] functions). Using Curve implementations besides those returned by [P224], [P256], [P384], and [P521] is deprecated. Add returns the sum of (x1,y1) and (x2,y2). Deprecated: this is a low-level unsafe API. Double returns 2*(x,y). Deprecated: this is a low-level unsafe API. IsOnCurve reports whether the given (x,y) lies on the curve. Deprecated: this is a low-level unsafe API. For ECDH, use the crypto/ecdh package. The NewPublicKey methods of NIST curves in crypto/ecdh accept the same encoding as the Unmarshal function, and perform on-curve checks. Params returns the parameters for the curve. ScalarBaseMult returns k*G, where G is the base point of the group and k is an integer in big-endian form. Deprecated: this is a low-level unsafe API. For ECDH, use the crypto/ecdh package. Most uses of ScalarBaseMult can be replaced by a call to the PrivateKey.PublicKey method in crypto/ecdh. ScalarMult returns k*(x,y) where k is an integer in big-endian form. Deprecated: this is a low-level unsafe API. For ECDH, use the crypto/ecdh package. Most uses of ScalarMult can be replaced by a call to the ECDH methods of NIST curves in crypto/ecdh. *CurveParams crypto/ecdsa.PrivateKey crypto/ecdsa.PublicKey func P224() Curve func P256() Curve func P384() Curve func P521() Curve func GenerateKey(curve Curve, rand io.Reader) (priv []byte, x, y *big.Int, err error) func Marshal(curve Curve, x, y *big.Int) []byte func MarshalCompressed(curve Curve, x, y *big.Int) []byte func Unmarshal(curve Curve, data []byte) (x, y *big.Int) func UnmarshalCompressed(curve Curve, data []byte) (x, y *big.Int) func crypto/ecdsa.GenerateKey(c Curve, rand io.Reader) (*ecdsa.PrivateKey, error)
CurveParams contains the parameters of an elliptic curve and also provides a generic, non-constant time implementation of [Curve]. The generic Curve implementation is deprecated, and using custom curves (those not returned by [P224], [P256], [P384], and [P521]) is not guaranteed to provide any security property. // the constant of the curve equation // the size of the underlying field // (x,y) of the base point // (x,y) of the base point // the order of the base point // the canonical name of the curve // the order of the underlying field Add implements [Curve.Add]. Deprecated: the [CurveParams] methods are deprecated and are not guaranteed to provide any security property. For ECDH, use the [crypto/ecdh] package. For ECDSA, use the [crypto/ecdsa] package with a [Curve] value returned directly from [P224], [P256], [P384], or [P521]. Double implements [Curve.Double]. Deprecated: the [CurveParams] methods are deprecated and are not guaranteed to provide any security property. For ECDH, use the [crypto/ecdh] package. For ECDSA, use the [crypto/ecdsa] package with a [Curve] value returned directly from [P224], [P256], [P384], or [P521]. IsOnCurve implements [Curve.IsOnCurve]. Deprecated: the [CurveParams] methods are deprecated and are not guaranteed to provide any security property. For ECDH, use the [crypto/ecdh] package. For ECDSA, use the [crypto/ecdsa] package with a [Curve] value returned directly from [P224], [P256], [P384], or [P521]. (*CurveParams) Params() *CurveParams ScalarBaseMult implements [Curve.ScalarBaseMult]. Deprecated: the [CurveParams] methods are deprecated and are not guaranteed to provide any security property. For ECDH, use the [crypto/ecdh] package. For ECDSA, use the [crypto/ecdsa] package with a [Curve] value returned directly from [P224], [P256], [P384], or [P521]. ScalarMult implements [Curve.ScalarMult]. Deprecated: the [CurveParams] methods are deprecated and are not guaranteed to provide any security property. For ECDH, use the [crypto/ecdh] package. For ECDSA, use the [crypto/ecdsa] package with a [Curve] value returned directly from [P224], [P256], [P384], or [P521]. *CurveParams : Curve func Curve.Params() *CurveParams func (*CurveParams).Params() *CurveParams
Package-Level Functions (total 9)
GenerateKey returns a public/private key pair. The private key is generated using the given reader, which must return random data. Deprecated: for ECDH, use the GenerateKey methods of the [crypto/ecdh] package; for ECDSA, use the GenerateKey function of the crypto/ecdsa package.
Marshal converts a point on the curve into the uncompressed form specified in SEC 1, Version 2.0, Section 2.3.3. If the point is not on the curve (or is the conventional point at infinity), the behavior is undefined. Deprecated: for ECDH, use the crypto/ecdh package. This function returns an encoding equivalent to that of PublicKey.Bytes in crypto/ecdh.
MarshalCompressed converts a point on the curve into the compressed form specified in SEC 1, Version 2.0, Section 2.3.3. If the point is not on the curve (or is the conventional point at infinity), the behavior is undefined.
P224 returns a [Curve] which implements NIST P-224 (FIPS 186-3, section D.2.2), also known as secp224r1. The CurveParams.Name of this [Curve] is "P-224". Multiple invocations of this function will return the same value, so it can be used for equality checks and switch statements. The cryptographic operations are implemented using constant-time algorithms.
P256 returns a [Curve] which implements NIST P-256 (FIPS 186-3, section D.2.3), also known as secp256r1 or prime256v1. The CurveParams.Name of this [Curve] is "P-256". Multiple invocations of this function will return the same value, so it can be used for equality checks and switch statements. The cryptographic operations are implemented using constant-time algorithms.
P384 returns a [Curve] which implements NIST P-384 (FIPS 186-3, section D.2.4), also known as secp384r1. The CurveParams.Name of this [Curve] is "P-384". Multiple invocations of this function will return the same value, so it can be used for equality checks and switch statements. The cryptographic operations are implemented using constant-time algorithms.
P521 returns a [Curve] which implements NIST P-521 (FIPS 186-3, section D.2.5), also known as secp521r1. The CurveParams.Name of this [Curve] is "P-521". Multiple invocations of this function will return the same value, so it can be used for equality checks and switch statements. The cryptographic operations are implemented using constant-time algorithms.
Unmarshal converts a point, serialized by [Marshal], into an x, y pair. It is an error if the point is not in uncompressed form, is not on the curve, or is the point at infinity. On error, x = nil. Deprecated: for ECDH, use the crypto/ecdh package. This function accepts an encoding equivalent to that of the NewPublicKey methods in crypto/ecdh.
UnmarshalCompressed converts a point, serialized by [MarshalCompressed], into an x, y pair. It is an error if the point is not in compressed form, is not on the curve, or is the point at infinity. On error, x = nil.