Spec-Zone.ru › Go

Пакет dsa

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

Обзор

Пакет dsa реализует алгоритм цифровой подписи, как определено в 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(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)
  • func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool
  • тип ParameterSizes
  • тип Parameters
  • тип PrivateKey
  • тип 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(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)

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

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

Учитывайте, что вызов Sign с закрытым ключом, контролируемым злоумышленником, может потребовать произвольного количества ЦП.

func Verify

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

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

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

тип ParameterSizes

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

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

тип Parameters

Parameters представляет доменные параметры для ключа. Эти параметры могут быть общими для многих ключей. Длина Q в битах должна быть кратна 8.

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

тип PrivateKey

PrivateKey представляет закрытый ключ DSA.

type PrivateKey struct {
    PublicKey
    X *big.Int
}

тип 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