diff --git a/src/crypto/elliptic/elliptic.go b/src/crypto/elliptic/elliptic.go
index ababde4..6b07f5b 100644
--- a/src/crypto/elliptic/elliptic.go
+++ b/src/crypto/elliptic/elliptic.go
@@ -5,9 +5,8 @@
 // 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 the crypto/ecdsa package. Most other uses
-// should migrate to the more efficient and safer crypto/ecdh package.
+// The P224(), P256(), P384() and P521() values are necessary to use the crypto/ecdsa package.
+// Most other uses should migrate to the more efficient and safer crypto/ecdh package.
 package elliptic
 
 import (
@@ -24,33 +23,30 @@
 // 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.
 type Curve interface {
 	// Params returns the parameters for the curve.
 	Params() *CurveParams
 
 	// 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
+	// Note: 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.
 	IsOnCurve(x, y *big.Int) bool
 
 	// Add returns the sum of (x1,y1) and (x2,y2).
 	//
-	// Deprecated: this is a low-level unsafe API.
+	// Note: this is a low-level unsafe API.
 	Add(x1, y1, x2, y2 *big.Int) (x, y *big.Int)
 
 	// Double returns 2*(x,y).
 	//
-	// Deprecated: this is a low-level unsafe API.
+	// Note: this is a low-level unsafe API.
 	Double(x1, y1 *big.Int) (x, y *big.Int)
 
 	// 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
+	// Note: 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.
 	ScalarMult(x1, y1 *big.Int, k []byte) (x, y *big.Int)
@@ -58,7 +54,7 @@
 	// 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
+	// Note: 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.
 	ScalarBaseMult(k []byte) (x, y *big.Int)
@@ -69,7 +65,7 @@
 // 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;
+// Note: for ECDH, use the GenerateKey methods of the crypto/ecdh package;
 // for ECDSA, use the GenerateKey function of the crypto/ecdsa package.
 func GenerateKey(curve Curve, rand io.Reader) (priv []byte, x, y *big.Int, err error) {
 	N := curve.Params().N
@@ -103,7 +99,7 @@
 // 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
+// Note: for ECDH, use the crypto/ecdh package. This function returns an
 // encoding equivalent to that of PublicKey.Bytes in crypto/ecdh.
 func Marshal(curve Curve, x, y *big.Int) []byte {
 	panicIfNotOnCurve(curve, x, y)
@@ -147,7 +143,7 @@
 // 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
+// Note: for ECDH, use the crypto/ecdh package. This function accepts an
 // encoding equivalent to that of the NewPublicKey methods in crypto/ecdh.
 func Unmarshal(curve Curve, data []byte) (x, y *big.Int) {
 	if c, ok := curve.(unmarshaler); ok {
diff --git a/src/crypto/elliptic/params.go b/src/crypto/elliptic/params.go
index 1ae57fa..c4e9784 100644
--- a/src/crypto/elliptic/params.go
+++ b/src/crypto/elliptic/params.go
@@ -9,9 +9,8 @@
 // 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.
+// Note: Custom curves (those not returned by P224(), P256(), P384(), and P521())
+// are not guaranteed to provide any security property.
 type CurveParams struct {
 	P       *big.Int // the order of the underlying field
 	N       *big.Int // the order of the base point
@@ -49,7 +48,7 @@
 
 // IsOnCurve implements Curve.IsOnCurve.
 //
-// Deprecated: the CurveParams methods are deprecated and are not guaranteed to
+// Note: the CurveParams methods 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().
@@ -103,7 +102,7 @@
 
 // Add implements Curve.Add.
 //
-// Deprecated: the CurveParams methods are deprecated and are not guaranteed to
+// Note: the CurveParams methods 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().
@@ -201,7 +200,7 @@
 
 // Double implements Curve.Double.
 //
-// Deprecated: the CurveParams methods are deprecated and are not guaranteed to
+// Note: the CurveParams methods 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().
@@ -280,7 +279,7 @@
 
 // ScalarMult implements Curve.ScalarMult.
 //
-// Deprecated: the CurveParams methods are deprecated and are not guaranteed to
+// Note: the CurveParams methods 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().
@@ -310,7 +309,7 @@
 
 // ScalarBaseMult implements Curve.ScalarBaseMult.
 //
-// Deprecated: the CurveParams methods are deprecated and are not guaranteed to
+// Note: the CurveParams methods 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().
