Spec-Zone.ru › Go

Пакет dsa

  • import "crypto/dsa"
  • Обзор
  • Указатель

Обзор

Пакет dsa реализует алгоритм цифровой подписи (Digital Signature Algorithm), как определено в FIPS 186-3.

Операции DSA в этом пакете не реализованы с использованием алгоритмов с постоянным временем выполнения.

Устарело: DSA является устаревшим алгоритмом, и вместо него следует использовать современные альтернативы, такие как Ed25519 (реализованный в пакете crypto/ed25519). Ключи с 1024-битными модулями (параметры L1024N160) криптографически слабы, тогда как более крупные ключи не имеют широкой поддержки. Обратите внимание, что FIPS 186-5 больше не одобряет DSA для генерации подписей.

Указатель

  • Переменные
  • func GenerateKey(priv *PrivateKey, rand io.Reader) error
  • func GenerateParameters(params *Parameters, rand io.Reader, sizes ParameterSizes) error
  • func Sign(random io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)
  • func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool
  • type ParameterSizes
  • type Parameters
  • type PrivateKey
  • type PublicKey

Файлы пакета

dsa.go

Переменные

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(random io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)

Sign подписывает хеш произвольной длины (который должен быть результатом хеширования большего сообщения) с использованием закрытого ключа priv. Функция возвращает подпись в виде пары целых чисел. Безопасность закрытого ключа зависит от энтропии rand.

Обратите внимание, что раздел 4.6 FIPS 186-3 указывает, что хеш должен быть усечен до длины подгруппы в байтах. Данная функция не выполняет это усечение самостоятельно.

Начиная с Go 1.26 всегда используется безопасный источник случайных байт, а Reader игнорируется, если не установлено значение GODEBUG=cryptocustomrand=1. Этот параметр будет удален в будущих выпусках Go. Вместо него используйте testing/cryptotest.SetGlobalRandom.

Имейте в виду, что вызов Sign с контролируемым злоумышленником ключом PrivateKey может потребовать произвольного количества ресурсов процессора.

func Verify

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

Verify проверяет подпись в r, s для hash с использованием открытого ключа pub. Она сообщает, действительна ли подпись.

Обратите внимание, что раздел 4.6 FIPS 186-3 указывает, что хеш должен быть усечен до длины подгруппы в байтах. Данная функция не выполняет это усечение самостоятельно.

type ParameterSizes

ParameterSizes — это перечисление допустимых битовых длин простых чисел в наборе параметров DSA. См. FIPS 186-3, раздел 4.2.

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

type Parameters

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
}

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/crypto/dsa/

Spec-Zone.ru

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