Spec-Zone.ru › Go

Пакет ed25519

  • import "crypto/ed25519"
  • Обзор
  • Индекс
  • Примеры

Обзор

Пакет ed25519 реализует алгоритм подписи Ed25519. См. https://ed25519.cr.yp.to/.

Эти функции также совместимы с функцией «Ed25519», определённой в RFC 8032. Однако, в отличие от формулировки RFC 8032, представление закрытого ключа в этом пакете включает суффикс открытого ключа, чтобы сделать несколько операций подписи с одним ключом более эффективными. В этом пакете закрытый ключ RFC 8032 называется «затравкой».

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

Пример (Ed25519ctx)

Код:

pub, priv, err := GenerateKey(nil)
if err != nil {
    log.Fatal(err)
}

msg := []byte("The quick brown fox jumps over the lazy dog")

sig, err := priv.Sign(nil, msg, &Options{
    Context: "Example_ed25519ctx",
})
if err != nil {
    log.Fatal(err)
}

if err := VerifyWithOptions(pub, msg, sig, &Options{
    Context: "Example_ed25519ctx",
}); err != nil {
    log.Fatal("invalid signature")
}

Индекс

  • Константы
  • func GenerateKey(rand io.Reader) (PublicKey, PrivateKey, error)
  • func Sign(privateKey PrivateKey, message []byte) []byte
  • func Verify(publicKey PublicKey, message, sig []byte) bool
  • func VerifyWithOptions(publicKey PublicKey, message, sig []byte, opts *Options) error
  • тип Options
  • func (o *Options) HashFunc() crypto.Hash
  • тип PrivateKey
  • func NewKeyFromSeed(seed []byte) PrivateKey
  • func (priv PrivateKey) Equal(x crypto.PrivateKey) bool
  • func (priv PrivateKey) Public() crypto.PublicKey
  • func (priv PrivateKey) Seed() []byte
  • func (priv PrivateKey) Sign(rand io.Reader, message []byte, opts crypto.SignerOpts) (signature []byte, err error)
  • тип PublicKey
  • func (pub PublicKey) Equal(x crypto.PublicKey) bool

Примеры

Пакет (Ed25519ctx)

Файлы пакета

ed25519.go

Константы

const (
    // PublicKeySize is the size, in bytes, of public keys as used in this package.
    PublicKeySize = 32
    // PrivateKeySize is the size, in bytes, of private keys as used in this package.
    PrivateKeySize = 64
    // SignatureSize is the size, in bytes, of signatures generated and verified by this package.
    SignatureSize = 64
    // SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032.
    SeedSize = 32
)

func GenerateKey 1.13

func GenerateKey(rand io.Reader) (PublicKey, PrivateKey, error)

GenerateKey генерирует пару открытый/закрытый ключ, используя энтропию из rand. Если rand равен null, будет использован crypto/rand.Reader.

Вывод этой функции детерминирован и эквивалентен чтению SeedSize байтов из rand и передаче их в NewKeyFromSeed.

func Sign 1.13

func Sign(privateKey PrivateKey, message []byte) []byte

Sign подписывает сообщение с помощью privateKey и возвращает подпись. Будет вызвано исключение, если длина privateKey не равна PrivateKeySize.

func Verify 1.13

func Verify(publicKey PublicKey, message, sig []byte) bool

Verify проверяет, является ли sig корректной подписью сообщения с помощью publicKey. Будет вызвано исключение, если длина publicKey не равна PublicKeySize.

Вводные данные не считаются конфиденциальными и могут быть раскрыты через временные побочные каналы или если у злоумышленника есть доступ к части входных данных.

func VerifyWithOptions 1.20

func VerifyWithOptions(publicKey PublicKey, message, sig []byte, opts *Options) error

VerifyWithOptions проверяет, является ли sig корректной подписью сообщения с помощью publicKey. Валидная подпись обозначается возвратом null ошибки. Будет вызвано исключение, если длина publicKey не равна PublicKeySize.

Если opts.Hash равен crypto.SHA512, используется пре-хешированная версия Ed25519ph, и message ожидается как хеш SHA-512, в противном случае opts.Hash должен быть crypto.Hash(0), и сообщение не должно быть хешировано, так как Ed25519 выполняет два прохода над подписываемыми сообщениями.

Вводные данные не считаются конфиденциальными и могут быть раскрыты через временные побочные каналы или если у злоумышленника есть доступ к части входных данных.

тип Options 1.20

Options может быть использован с PrivateKey.Sign или VerifyWithOptions, чтобы выбрать варианты Ed25519.

type Options struct {
    // Hash can be zero for regular Ed25519, or crypto.SHA512 for Ed25519ph.
    Hash crypto.Hash

    // Context, if not empty, selects Ed25519ctx or provides the context string
    // for Ed25519ph. It can be at most 255 bytes in length.
    Context string
}

func (*Options) HashFunc 1.20

func (o *Options) HashFunc() crypto.Hash

HashFunc возвращает o.Hash.

тип PrivateKey 1.13

PrivateKey — это тип закрытых ключей Ed25519. Он реализует crypto.Signer.

type PrivateKey []byte

func NewKeyFromSeed 1.13

func NewKeyFromSeed(seed []byte) PrivateKey

NewKeyFromSeed вычисляет закрытый ключ из затравки. Будет вызвано исключение, если длина seed не равна SeedSize. Эта функция предоставлена для совместимости с RFC 8032. Закрытые ключи RFC 8032 соответствуют затравкам в этом пакете.

func (PrivateKey) Equal 1.15

func (priv PrivateKey) Equal(x crypto.PrivateKey) bool

Equal проверяет, имеют ли priv и x одинаковые значения.

func (PrivateKey) Public 1.13

func (priv PrivateKey) Public() crypto.PublicKey

Public возвращает PublicKey, соответствующий priv.

func (PrivateKey) Seed 1.13

func (priv PrivateKey) Seed() []byte

Seed возвращает затравку закрытого ключа, соответствующую priv. Она предоставляется для совместимости с RFC 8032. Закрытые ключи RFC 8032 соответствуют затравкам в этом пакете.

func (PrivateKey) Sign 1.13

func (priv PrivateKey) Sign(rand io.Reader, message []byte, opts crypto.SignerOpts) (signature []byte, err error)

Sign подписывает данное сообщение с помощью priv. rand игнорируется и может быть null.

Если opts.HashFunc() равен crypto.SHA512, используется пре-хешированный вариант Ed25519ph, и message ожидается как хеш SHA-512, в противном случае opts.HashFunc() должен быть crypto.Hash(0), и сообщение не должно быть хешировано, так как Ed25519 выполняет два прохода над подписываемыми сообщениями.

Значение типа Options может быть использовано как opts, или crypto.Hash(0) или crypto.SHA512 непосредственно для выбора обычного Ed25519 или Ed25519ph соответственно.

тип PublicKey 1.13

PublicKey — это тип открытых ключей Ed25519.

type PublicKey []byte

func (PublicKey) Equal 1.15

func (pub PublicKey) Equal(x crypto.PublicKey) bool

Equal проверяет, имеют ли pub и x одинаковые значения.

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

Spec-Zone.ru

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