dsa

package
v1.21.5 Latest Latest
Warning

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

Go to latest
Published: Nov 6, 2023 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

パッケージdsaは、FIPS 186-3で定義されたデジタル署名アルゴリズムを実装します。

このパッケージのDSA操作は、定数時間アルゴリズムを使用して実装されていません。

廃止予定:DSAはレガシーアルゴリズムであり、パッケージcrypto/ed25519で実装されたEd25519などのモダンな代替方法を代わりに使用する必要があります。1024ビットのモジュラス(L1024N160パラメーター)を持つキーは、暗号学的に弱く、より大きなキーは一般的にサポートされていません。FIPS 186-5では、DSAが署名生成については承認されなくなっています。

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidPublicKey = errors.New("crypto/dsa: invalid public key")

ErrInvalidPublicKey は、このコードで使用できない公開鍵の場合に発生します。 FIPSはDSAキーの形式に対して非常に厳格ですが、他のコードではそうでない場合もあります。 したがって、他のコードで生成された可能性がある鍵を使用する場合は、このエラーを処理する必要があります。

Functions

func GenerateKey

func GenerateKey(priv *PrivateKey, rand io.Reader) error

GenerateKey は公開鍵と秘密鍵のペアを生成します。PrivateKeyのパラメータはすでに有効である必要があります(GenerateParametersを参照してください)。

func GenerateParameters

func GenerateParameters(params *Parameters, rand io.Reader, sizes ParameterSizes) error

GenerateParameters はランダムで有効なDSAパラメータをparamsに生成します。 この関数は高速なマシンでも数秒かかる場合があります。

func Sign

func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)

Signは、ハッシュ関数を使って(より大きなメッセージのハッシュ結果である必要があります)、秘密鍵privを使って任意の長さのハッシュに署名します。署名は2つの整数のペアとして返されます。秘密鍵のセキュリティはrandのエントロピーに依存します。 なお、FIPS 186-3のセクション4.6では、ハッシュは部分群のバイト長に切り詰める必要があると指定されています。この関数自体ではその切り詰めを実行しません。 注意してください。攻撃者の制御下にあるPrivateKeyを使用してSignを呼び出すことは、任意の量のCPUを必要とする場合があります。

func Verify

func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool

Verifyは、公開鍵pubを使用してハッシュのr、sの署名を検証します。署名が有効かどうかを報告します。

FIPS 186-3のセクション4.6では、ハッシュは部分群のバイト長に切り詰める必要があると指定されています。この関数自体ではその切り詰めを行いません。

Types

type ParameterSizes

type ParameterSizes int

ParameterSizesは、DSAパラメータの受け入れ可能な素数のビット長の列挙です。 FIPS 186-3、セクション4.2を参照してください。

const (
	L1024N160 ParameterSizes = iota
	L2048N224
	L2048N256
	L3072N256
)

type Parameters

type Parameters struct {
	P, Q, G *big.Int
}

Parametersはキーのドメインパラメータを表します。これらのパラメータは多くのキーで共有することができます。Qのビット長は8の倍数でなければなりません。

type PrivateKey

type PrivateKey struct {
	PublicKey
	X *big.Int
}

PrivateKeyはDSAの秘密鍵を表します。

type PublicKey

type PublicKey struct {
	Parameters
	Y *big.Int
}

PublicKeyはDSA公開鍵を表します。

Jump to

Keyboard shortcuts

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