Spec-Zone.ru › Go

Пакет elliptic

  • import "crypto/elliptic"
  • Обзор
  • Индекс

Обзор

Пакет elliptic реализует стандартные эллиптические кривые NIST P-224, P-256, P-384 и P-521 над полями с простыми числами.

Прямое использование этого пакета устарело, за исключением значений P224, P256, P384 и P521, необходимых для использования crypto/ecdsa. Большинство других применений должны перейти к более эффективному и безопасному crypto/ecdh или к модулям сторонних разработчиков для работы с низкоуровневыми функциями.

Индекс

  • 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)
  • тип Curve
  • func P224() Curve
  • func P256() Curve
  • func P384() Curve
  • func P521() Curve
  • тип CurveParams
  • func (curve *CurveParams) Add(x1, y1, x2, y2 *big.Int) (*big.Int, *big.Int)
  • func (curve *CurveParams) Double(x1, y1 *big.Int) (*big.Int, *big.Int)
  • func (curve *CurveParams) IsOnCurve(x, y *big.Int) bool
  • func (curve *CurveParams) Params() *CurveParams
  • func (curve *CurveParams) ScalarBaseMult(k []byte) (*big.Int, *big.Int)
  • func (curve *CurveParams) ScalarMult(Bx, By *big.Int, k []byte) (*big.Int, *big.Int)

Файлы пакета

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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API