Пакет elliptic
Обзор
Пакет elliptic реализует стандартные эллиптические кривые NIST P-224, P-256, P-384 и P-521 над полями с простыми числами.
Прямое использование этого пакета устарело, за исключением значений P224, P256, P384 и P521, необходимых для использования crypto/ecdsa. Большинство других применений должны перейти к более эффективному и безопасному crypto/ecdh или к модулям сторонних разработчиков для работы с низкоуровневыми функциями.
Индекс
Файлы пакета
elliptic.go nistec.go nistec_p256.go params.go
func GenerateKey
func GenerateKey(curve Curve, rand io.Reader) (priv []byte, x, y *big.Int, err error)
GenerateKey возвращает пару открытого и закрытого ключей. Закрытый ключ генерируется с помощью заданного читателя, который должен возвращать случайные данные.
Устарело: для ECDH используйте методы GenerateKey пакета crypto/ecdh; для ECDSA используйте функцию GenerateKey пакета crypto/ecdsa.
func Marshal
func Marshal(curve Curve, x, y *big.Int) []byte
Marshal преобразует точку на кривой в нескомпрессированную форму, указанную в SEC 1, Версия 2.0, Раздел 2.3.3. Если точка не лежит на кривой (или является стандартной точкой в бесконечности), поведение не определено.
Устарело: для ECDH используйте пакет crypto/ecdh. Эта функция возвращает кодировку, эквивалентную кодировке PublicKey.Bytes в crypto/ecdh.
func MarshalCompressed 1.15
func MarshalCompressed(curve Curve, x, y *big.Int) []byte
MarshalCompressed преобразует точку на кривой в сжатую форму, указанную в SEC 1, Версия 2.0, Раздел 2.3.3. Если точка не лежит на кривой (или является стандартной точкой в бесконечности), поведение не определено.
func Unmarshal
func Unmarshal(curve Curve, data []byte) (x, y *big.Int)
Unmarshal преобразует точку, сериализованную функцией Marshal, в пару x, y. Возникает ошибка, если точка не в нескомпрессированной форме, не лежит на кривой или является точкой в бесконечности. При ошибке x = nil.
Устарело: для ECDH используйте пакет crypto/ecdh. Эта функция принимает кодировку, эквивалентную кодировкам методов NewPublicKey в crypto/ecdh.
func UnmarshalCompressed 1.15
func UnmarshalCompressed(curve Curve, data []byte) (x, y *big.Int)
UnmarshalCompressed преобразует точку, сериализованную функцией MarshalCompressed, в пару x, y. Возникает ошибка, если точка не в сжатой форме, не лежит на кривой или является точкой в бесконечности. При ошибке x = nil.
тип Curve
Curve представляет короткую форму кривой Вейерштрасса с a=-3.
Поведение Add, Double и ScalarMult, когда вход не является точкой на кривой, не определено.
Обратите внимание, что стандартная точка в бесконечности (0, 0) не считается точкой на кривой, хотя она может быть возвращена функциями Add, Double, ScalarMult или ScalarBaseMult (но не функциями Unmarshal или UnmarshalCompressed).
Использование реализаций Curve помимо тех, которые возвращаются функциями P224, P256, P384 и P521, устарело.
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
// 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.
Add(x1, y1, x2, y2 *big.Int) (x, y *big.Int)
// Double returns 2*(x,y).
//
// Deprecated: 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
// 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)
// 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.
ScalarBaseMult(k []byte) (x, y *big.Int)
} func P224
func P224() Curve
P224 возвращает Curve, который реализует NIST P-224 (FIPS 186-3, раздел D.2.2), также известную как secp224r1. CurveParams.Name этой Curve — "P-224".
Несколько вызовов этой функции вернут одно и то же значение, поэтому её можно использовать для проверок на равенство и в операторах switch.
Криптографические операции реализованы с использованием алгоритмов с постоянным временем.
func P256
func P256() Curve
P256 возвращает Curve, который реализует NIST P-256 (FIPS 186-3, раздел D.2.3), также известную как secp256r1 или prime256v1. CurveParams.Name этой Curve — "P-256".
Несколько вызовов этой функции вернут одно и то же значение, поэтому её можно использовать для проверок на равенство и в операторах switch.
Криптографические операции реализованы с использованием алгоритмов с постоянным временем.
func P384
func P384() Curve
P384 возвращает Curve, который реализует NIST P-384 (FIPS 186-3, раздел D.2.4), также известную как secp384r1. CurveParams.Name этой Curve — "P-384".
Несколько вызовов этой функции вернут одно и то же значение, поэтому её можно использовать для проверок на равенство и в операторах switch.
Криптографические операции реализованы с использованием алгоритмов с постоянным временем.
func P521
func P521() Curve
P521 возвращает Curve, который реализует NIST P-521 (FIPS 186-3, раздел D.2.5), также известную как secp521r1. CurveParams.Name этой Curve — "P-521".
Несколько вызовов этой функции вернут одно и то же значение, поэтому её можно использовать для проверок на равенство и в операторах switch.
Криптографические операции реализованы с использованием алгоритмов с постоянным временем.
тип CurveParams
CurveParams содержит параметры эллиптической кривой и также предоставляет общую, не постоянновременную реализацию Curve.
Общая реализация Curve устарела, и использование пользовательских кривых (тех, которые не возвращаются P224, P256, P384 и P521) не гарантирует никаких свойств безопасности.
type CurveParams struct {
P *big.Int // the order of the underlying field
N *big.Int // the order of the base point
B *big.Int // the constant of the curve equation
Gx, Gy *big.Int // (x,y) of the base point
BitSize int // the size of the underlying field
Name string // the canonical name of the curve; added in Go 1.5
}
func (*CurveParams) Add
func (curve *CurveParams) Add(x1, y1, x2, y2 *big.Int) (*big.Int, *big.Int)
Add реализует [Curve.Add].
Устарело: методы CurveParams устарели и не гарантируют каких-либо свойств безопасности. Для ECDH используйте пакет crypto/ecdh. Для ECDSA используйте пакет crypto/ecdsa со значением Curve, возвращаемым непосредственно функциями P224, P256, P384 или P521.
func (*CurveParams) Double
func (curve *CurveParams) Double(x1, y1 *big.Int) (*big.Int, *big.Int)
Double реализует [Curve.Double].
Устарело: методы CurveParams устарели и не гарантируют каких-либо свойств безопасности. Для ECDH используйте пакет crypto/ecdh. Для ECDSA используйте пакет crypto/ecdsa со значением Curve, возвращаемым непосредственно функциями P224, P256, P384 или P521.
func (*CurveParams) IsOnCurve
func (curve *CurveParams) IsOnCurve(x, y *big.Int) bool
IsOnCurve реализует [Curve.IsOnCurve].
Устарело: методы CurveParams устарели и не гарантируют каких-либо свойств безопасности. Для ECDH используйте пакет crypto/ecdh. Для ECDSA используйте пакет crypto/ecdsa со значением Curve, возвращаемым непосредственно функциями P224, P256, P384 или P521.
func (*CurveParams) Params
func (curve *CurveParams) Params() *CurveParams
func (*CurveParams) ScalarBaseMult
func (curve *CurveParams) ScalarBaseMult(k []byte) (*big.Int, *big.Int)
ScalarBaseMult реализует [Curve.ScalarBaseMult].
Устарело: методы CurveParams устарели и не гарантируют каких-либо свойств безопасности. Для ECDH используйте пакет crypto/ecdh. Для ECDSA используйте пакет crypto/ecdsa со значением Curve, возвращаемым непосредственно функциями P224, P256, P384 или P521.
func (*CurveParams) ScalarMult
func (curve *CurveParams) ScalarMult(Bx, By *big.Int, k []byte) (*big.Int, *big.Int)
ScalarMult реализует [Curve.ScalarMult].
Устарело: методы CurveParams устарели и не гарантируют каких-либо свойств безопасности. Для ECDH используйте пакет crypto/ecdh. Для ECDSA используйте пакет crypto/ecdsa со значением Curve, возвращаемым непосредственно функциями P224, P256, P384 или P521.
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/crypto/elliptic/