Пакет elliptic
Обзор
Пакет elliptic реализует стандартные эллиптические кривые NIST P-224, P-256, P-384 и P-521 над простыми полями.
Прямое использование этого пакета устарело, за исключением значений P224, P256, P384 и P521, необходимых для использования crypto/ecdsa. Для большинства других задач следует перейти на более эффективный и безопасный пакет crypto/ecdh либо использовать сторонние модули для низкоуровневой функциональности.
Указатель
Файлы пакета
elliptic.go nistec.go params.go
func GenerateKey
func GenerateKey(curve Curve, rand io.Reader) (priv []byte, x, y *big.Int, err error)
GenerateKey возвращает пару открытого и закрытого ключей. Закрытый ключ генерируется с помощью указанного reader, который должен предоставлять случайные данные.
Устарело: для ECDH используйте методы GenerateKey пакета crypto/ecdh; для ECDSA используйте функцию GenerateKey пакета crypto/ecdsa.
func Marshal
func Marshal(curve Curve, x, y *big.Int) []byte
Marshal преобразует точку на кривой в несжатую форму, указанную в SEC 1, Version 2.0, Section 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, Version 2.0, Section 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.
type 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, section D.2.2), также известную как secp224r1. Значение CurveParams.Name этой Curve — "P-224".
Каждый вызов этой функции возвращает одно и то же значение, поэтому его можно использовать для проверок на равенство и в операторах switch.
Криптографические операции реализованы с использованием алгоритмов с постоянным временем выполнения.
func P256
func P256() Curve
P256 возвращает Curve, реализующую NIST P-256 (FIPS 186-3, section D.2.3), также известную как secp256r1 или prime256v1. Значение CurveParams.Name этой Curve — "P-256".
Каждый вызов этой функции возвращает одно и то же значение, поэтому его можно использовать для проверок на равенство и в операторах switch.
Криптографические операции реализованы с использованием алгоритмов с постоянным временем выполнения.
func P384
func P384() Curve
P384 возвращает Curve, реализующую NIST P-384 (FIPS 186-3, section D.2.4), также известную как secp384r1. Значение CurveParams.Name этой Curve — "P-384".
Каждый вызов этой функции возвращает одно и то же значение, поэтому его можно использовать для проверок на равенство и в операторах switch.
Криптографические операции реализованы с использованием алгоритмов с постоянным временем выполнения.
func P521
func P521() Curve
P521 возвращает Curve, реализующую NIST P-521 (FIPS 186-3, section D.2.5), также известную как secp521r1. Значение CurveParams.Name этой Curve — "P-521".
Каждый вызов этой функции возвращает одно и то же значение, поэтому его можно использовать для проверок на равенство и в операторах switch.
Криптографические операции реализованы с использованием алгоритмов с постоянным временем выполнения.
type 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/