...

パッケージ dsa

import "crypto/dsa"
概要
目次

概要 ▾

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

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

変数

ErrInvalidPublicKey は,公開鍵がこのコードで使用できない場合に発生します。 FIPS は DSA キーのフォーマットに関して非常に厳格ですが,他のコードではそうではないかもしれません。 したがって,他のコードによって生成された可能性のあるキーを使用するときは,このエラーを処理する必要があります。

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

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 を使用して,任意の長さのハッシュ (大きなメッセージをハッシュした結果であるはずです) に署名します。 署名を整数のペアとして返します。 秘密鍵の安全性は 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 では,ハッシュをサブグループのバイト長に切り捨てるように指定されています。 この関数はその切り捨て自体を実行しません。

type ParameterSizes

ParameterSizes は, DSA パラメータのセット内の素数の許容されるビット長の列挙です。 FIPS 186-3 ,セクション 4.2 を参照してください。

type ParameterSizes int
const (
    L1024N160 ParameterSizes = iota
    L2048N224
    L2048N256
    L3072N256
)

type Parameters

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

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

type PrivateKey

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

type PrivateKey struct {
    PublicKey
    X *big.Int
}

type PublicKey

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

type PublicKey struct {
    Parameters
    Y *big.Int
}