elliptic

package
v1.22.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2024 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

パッケージellipticは、素数体上の標準的なNIST P-224、P-256、P-384、およびP-521楕円曲線を実装しています。

このパッケージの直接使用は非推奨であり、P224P256P384、[P521]の値は[crypto/ecdsa]を使用するために必要です。その他のほとんどの用途は、効率的かつ安全な[crypto/ecdh]または低レベルな機能のためのサードパーティのモジュールに移行する必要があります。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateKey deprecated

func GenerateKey(curve Curve, rand io.Reader) (priv []byte, x, y *big.Int, err error)

GenerateKeyは公開鍵と秘密鍵のペアを生成します。秘密鍵は与えられたリーダーを使用して生成されますが、ランダムデータを返す必要があります。

Deprecated: ECDHの場合は crypto/ecdh パッケージのGenerateKeyメソッドを使用してください。 ECDSAの場合はcrypto/ecdsaパッケージのGenerateKey関数を使用してください。

func Marshal

func Marshal(curve Curve, x, y *big.Int) []byte

Marshalは、曲線上の点を、SEC 1、バージョン2.0、セクション2.3.3で指定された非圧縮形式に変換します。もし点が曲線上にない場合(または通常の無限遠点の場合)、動作は未定義です。

廃止されました:ECDHには、crypto/ecdhパッケージを使用してください。この関数は、crypto/ecdhのPublicKey.Bytesと同等のエンコーディングを返します。

func MarshalCompressed added in v1.15.0

func MarshalCompressed(curve Curve, x, y *big.Int) []byte

MarshalCompressedは、曲線上の点をSEC 1、バージョン2.0、セクション2.3.3で指定された圧縮形式に変換します。点が曲線上にない場合(または無限遠点である場合)、動作は未定義です。

func Unmarshal deprecated

func Unmarshal(curve Curve, data []byte) (x, y *big.Int)

Unmarshalは Marshal によってシリアライズされたポイントをx、yのペアに変換します。非圧縮形式でない場合、曲線上にない場合、または無限遠点の場合はエラーです。エラーの場合、x = nilです。

Deprecated: ECDHでは、crypto/ecdhパッケージを使用してください。この関数は、crypto/ecdhのNewPublicKeyメソッドで使用されるエンコーディングと同等のエンコーディングを受け入れます。

func UnmarshalCompressed added in v1.15.0

func UnmarshalCompressed(curve Curve, data []byte) (x, y *big.Int)

UnmarshalCompressedは MarshalCompressed によって直列化された点を、xとyの組へと変換します。 圧縮形式でない場合、曲線上にない場合、または無限遠点の場合はエラーです。 エラー時には、x = nil です。

Types

type Curve

type Curve interface {
	Params() *CurveParams

	IsOnCurve(x, y *big.Int) bool

	Add(x1, y1, x2, y2 *big.Int) (x, y *big.Int)

	Double(x1, y1 *big.Int) (x, y *big.Int)

	ScalarMult(x1, y1 *big.Int, k []byte) (x, y *big.Int)

	ScalarBaseMult(k []byte) (x, y *big.Int)
}

Curveはa=-3の短形式Weierstrass曲線を表します。

入力が曲線上の点でない場合、Add、Double、およびScalarMultの動作は未定義です。

0, 0のような通常の無限遠点は、曲線上には考慮されていませんが、Add、Double、 ScalarMult、またはScalarBaseMultで返される場合があります (ただし、 Unmarshal または UnmarshalCompressed 関数では返されません)。

P224P256P384 、および P521 以外のCurve実装を使用することは非推奨です。

func P224

func P224() Curve

P224は、NIST P-224(FIPS 186-3、セクションD.2.2)で実装された Curve 、またはsecp224r1としても知られています。この Curve のCurveParams.Nameは「P-224」です。

この関数の複数の呼び出しは同じ値を返すため、等価性のチェックやスイッチ文に使用することができます。

暗号操作は一定の時間で実装されています。

func P256

func P256() Curve

P256は、NIST P-256(FIPS 186-3、セクション D.2.3)またはsecp256r1またはprime256v1としても知られる、 "P-256"という名前のCurveParams.Nameを実装した Curve を返します。

この関数を複数回呼び出しても同じ値が返されるため、等値チェックやswitch文で使用することができます。

暗号操作は定数時間アルゴリズムを使用して実装されています。

func P384

func P384() Curve

P384はNIST P-384 (FIPS 186-3、セクションD.2.4)、別名secp384r1を実装する Curve を返します。この Curve のCurveParams.Nameは "P-384" です。

この関数の複数の呼び出しは同じ値を返すため、等しさのチェックやスイッチ文に使用できます。

暗号操作は一定時間アルゴリズムを使用して実装されています。

func P521

func P521() Curve

P521は、NIST P-521(FIPS 186-3、セクションD.2.5)またはsecp521r1としても知られる Curve を返します。 この Curve のCurveParams.Nameは「P-521」です。

この関数を複数回呼び出しても同じ値が返されるため、等価性のチェックやswitch文に使用できます。

暗号操作は一定時間アルゴリズムを使用して実装されています。

type CurveParams

type CurveParams struct {
	P       *big.Int
	N       *big.Int
	B       *big.Int
	Gx, Gy  *big.Int
	BitSize int
	Name    string
}

CurveParamsは楕円曲線のパラメータを含み、 Curve の汎用で非定数時間の実装も提供します。

汎用のCurve実装は非推奨であり、カスタム曲線( P224P256P384P521 によって返されない曲線)を使用することは、 いかなるセキュリティプロパティも保証しないことに注意してください。

func (*CurveParams) Add deprecated

func (curve *CurveParams) Add(x1, y1, x2, y2 *big.Int) (*big.Int, *big.Int)

Addは [Curve.Add] を実装します。

Deprecated: CurveParams のメソッドは非推奨であり、任意のセキュリティプロパティを提供することは保証されていません。 ECDHには crypto/ecdh パッケージを使用してください。 ECDSAには、 P224P256P384 、または P521 から直接返されるCurve値を使用して、 crypto/ecdsa パッケージを使用してください。

func (*CurveParams) Double deprecated

func (curve *CurveParams) Double(x1, y1 *big.Int) (*big.Int, *big.Int)

Doubleは [Curve.Double] を実装します。

Deprecated: CurveParams のメソッドは非推奨であり、任意のセキュリティプロパティを提供することは保証されていません。 ECDHには crypto/ecdh パッケージを使用してください。 ECDSAには、 P224P256P384 、または P521 から直接返されるCurve値を使用して、 crypto/ecdsa パッケージを使用してください。

func (*CurveParams) IsOnCurve deprecated

func (curve *CurveParams) IsOnCurve(x, y *big.Int) bool

IsOnCurveは [Curve.IsOnCurve] を実装します。

Deprecated: CurveParams のメソッドは非推奨であり、任意のセキュリティプロパティを提供することは保証されていません。 ECDHには crypto/ecdh パッケージを使用してください。 ECDSAには、 P224P256P384 、または P521 から直接返されるCurve値を使用して、 crypto/ecdsa パッケージを使用してください。

func (*CurveParams) Params

func (curve *CurveParams) Params() *CurveParams

func (*CurveParams) ScalarBaseMult deprecated

func (curve *CurveParams) ScalarBaseMult(k []byte) (*big.Int, *big.Int)

ScalarBaseMultは [Curve.ScalarBaseMult] を実装します。

Deprecated: CurveParams のメソッドは非推奨であり、任意のセキュリティプロパティを提供することは保証されていません。 ECDHには crypto/ecdh パッケージを使用してください。 ECDSAには、 P224P256P384 、または P521 から直接返されるCurve値を使用して、 crypto/ecdsa パッケージを使用してください。

func (*CurveParams) ScalarMult deprecated

func (curve *CurveParams) ScalarMult(Bx, By *big.Int, k []byte) (*big.Int, *big.Int)

ScalarMultは [Curve.ScalarMult] を実装します。

Deprecated: CurveParams のメソッドは非推奨であり、任意のセキュリティプロパティを提供することは保証されていません。 ECDHには crypto/ecdh パッケージを使用してください。 ECDSAには、 P224P256P384 、または P521 から直接返されるCurve値を使用して、 crypto/ecdsa パッケージを使用してください。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL