Пакет dsa
Обзор
Пакет dsa реализует алгоритм цифровой подписи, как определено в FIPS 186-3.
Операции DSA в этом пакете не реализованы с использованием алгоритмов постоянного времени.
Устаревший: DSA — это устаревший алгоритм, и следует использовать современные альтернативы, такие как Ed25519 (реализованный пакетом crypto/ed25519). Ключи с модулями длиной 1024 бита (параметры L1024N160) криптографически слабые, а более крупные ключи не широко поддерживаются. Обратите внимание, что FIPS 186-5 больше не одобряет DSA для генерации подписей.
Индекс
Файлы пакета
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/