Spec-Zone.ru › Go

Пакет mldsa

  • import "crypto/mldsa"
  • Обзор
  • Указатель
  • Примеры

Обзор

Пакет mldsa реализует постквантовую схему подписи ML-DSA, заданную в FIPS 204.

Этот пакет недоступен при использовании криптографического модуля Go, соответствующего FIPS 140-3 версии 1.0.0; в этом случае GenerateKey, NewPrivateKey, NewPublicKey и Verify будут возвращать ошибку. Пакет доступен при использовании версии 1.26.0 или новее.

Пример

Код:

// The signer generates a new ML-DSA-44 key pair.
sk, err := mldsa.GenerateKey(mldsa.MLDSA44())
if err != nil {
    log.Fatal(err)
}

// The signer publishes the public key encoding.
publicKey := sk.PublicKey().Bytes()
fmt.Printf("public key: %d bytes\n", len(publicKey))

// The signer signs a message and publishes the signature.
msg := []byte("hello, world")
sig, err := sk.Sign(nil, msg, &mldsa.Options{Context: "example"})
if err != nil {
    log.Fatal(err)
}
fmt.Printf("signature: %d bytes\n", len(sig))

// The verifier reconstructs the public key and checks the signature.
// The context string must match the one used by the signer.
pk, err := mldsa.NewPublicKey(mldsa.MLDSA44(), publicKey)
if err != nil {
    log.Fatal(err)
}
if err := mldsa.Verify(pk, msg, sig, &mldsa.Options{Context: "example"}); err != nil {
    log.Fatal("invalid signature: ", err)
}

Вывод:

public key: 1312 bytes
signature: 2420 bytes

Указатель

  • Константы
  • func Verify(pk *PublicKey, message []byte, signature []byte, opts *Options) error
  • type Options
  • func (opts *Options) HashFunc() crypto.Hash
  • type Parameters
  • func MLDSA44() Parameters
  • func MLDSA65() Parameters
  • func MLDSA87() Parameters
  • func (params Parameters) PublicKeySize() int
  • func (params Parameters) SignatureSize() int
  • func (params Parameters) String() string
  • type PrivateKey
  • func GenerateKey(params Parameters) (*PrivateKey, error)
  • func NewPrivateKey(params Parameters, seed []byte) (*PrivateKey, error)
  • func (sk *PrivateKey) Bytes() []byte
  • func (sk *PrivateKey) Equal(x crypto.PrivateKey) bool
  • func (sk *PrivateKey) Public() crypto.PublicKey
  • func (sk *PrivateKey) PublicKey() *PublicKey
  • func (sk *PrivateKey) Sign(_ io.Reader, message []byte, opts crypto.SignerOpts) (signature []byte, err error)
  • func (sk *PrivateKey) SignDeterministic(message []byte, opts crypto.SignerOpts) (signature []byte, err error)
  • type PublicKey
  • func NewPublicKey(params Parameters, encoding []byte) (*PublicKey, error)
  • func (pk *PublicKey) Bytes() []byte
  • func (pk *PublicKey) Equal(x crypto.PublicKey) bool
  • func (pk *PublicKey) Parameters() Parameters

Примеры

Пакет

Файлы пакета

mldsa.go mldsa_fips140v1.26.go

Константы

const (
    PrivateKeySize = 32

    MLDSA44PublicKeySize = 1312
    MLDSA65PublicKeySize = 1952
    MLDSA87PublicKeySize = 2592

    MLDSA44SignatureSize = 2420
    MLDSA65SignatureSize = 3309
    MLDSA87SignatureSize = 4627
)

func Verify 1.27

func Verify(pk *PublicKey, message []byte, signature []byte, opts *Options) error

Verify сообщает, является ли signature действительной подписью message, созданной с помощью pk. Если opts равно nil, это эквивалентно нулевому значению Options.

type Options 1.27

Options содержит дополнительные параметры для создания и проверки подписей ML-DSA.

type Options struct {
    // Context can be used to distinguish signatures created for different
    // purposes. It must be at most 255 bytes long, and it is empty by default.
    //
    // The same context must be used when signing and verifying a signature.
    Context string
}

func (*Options) HashFunc 1.27

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

HashFunc возвращает нулевое значение для реализации интерфейса crypto.SignerOpts.

type Parameters 1.27

Parameters представляет один из фиксированных наборов параметров, определённых в FIPS 204.

В большинстве приложений следует использовать MLDSA44.

Несколько вызовов MLDSA44, MLDSA65 или MLDSA87 возвращают одно и то же соответствующее значение, которое можно использовать для проверки равенства и в операторах switch. Возвращённое значение безопасно для конкурентного использования.

type Parameters struct {
    // contains filtered or unexported fields
}

func MLDSA44 1.27

func MLDSA44() Parameters

MLDSA44 возвращает набор параметров ML-DSA-44, заданный в FIPS 204.

func MLDSA65 1.27

func MLDSA65() Parameters

MLDSA65 возвращает набор параметров ML-DSA-65, заданный в FIPS 204.

func MLDSA87 1.27

func MLDSA87() Parameters

MLDSA87 возвращает набор параметров ML-DSA-87, заданный в FIPS 204.

func (Parameters) PublicKeySize 1.27

func (params Parameters) PublicKeySize() int

PublicKeySize возвращает размер открытых ключей для этого набора параметров в байтах.

func (Parameters) SignatureSize 1.27

func (params Parameters) SignatureSize() int

SignatureSize возвращает размер подписей для этого набора параметров в байтах.

func (Parameters) String 1.27

func (params Parameters) String() string

String возвращает название набора параметров, например "ML-DSA-44".

type PrivateKey 1.27

PrivateKey — это закрытый ключ ML-DSA, хранящийся в памяти. Он реализует интерфейс crypto.Signer и неформальный расширенный интерфейс crypto.PrivateKey.

PrivateKey безопасен для конкурентного использования.

type PrivateKey struct {
    // contains filtered or unexported fields
}

func GenerateKey 1.27

func GenerateKey(params Parameters) (*PrivateKey, error)

GenerateKey генерирует новый случайный закрытый ключ ML-DSA.

func NewPrivateKey 1.27

func NewPrivateKey(params Parameters, seed []byte) (*PrivateKey, error)

NewPrivateKey декодирует закрытый ключ ML-DSA из указанного начального значения.

Длина начального значения должна составлять ровно PrivateKeySize байт.

func (*PrivateKey) Bytes 1.27

func (sk *PrivateKey) Bytes() []byte

Bytes возвращает начальное значение закрытого ключа.

func (*PrivateKey) Equal 1.27

func (sk *PrivateKey) Equal(x crypto.PrivateKey) bool

Equal сообщает, являются ли sk и x одним и тем же ключом (то есть получены ли они из одного начального значения).

Если x не является *PrivateKey, Equal возвращает false.

func (*PrivateKey) Public 1.27

func (sk *PrivateKey) Public() crypto.PublicKey

Public возвращает соответствующий PublicKey для этого закрытого ключа.

Метод реализует интерфейс crypto.Signer.

func (*PrivateKey) PublicKey 1.27

func (sk *PrivateKey) PublicKey() *PublicKey

PublicKey возвращает соответствующий PublicKey для этого закрытого ключа.

func (*PrivateKey) Sign 1.27

func (sk *PrivateKey) Sign(_ io.Reader, message []byte, opts crypto.SignerOpts) (signature []byte, err error)

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

Если opts равен nil или opts.HashFunc возвращает нулевое значение, сообщение подписывается напрямую. Если opts.HashFunc возвращает crypto.MLDSAMu, переданное сообщение должно быть представителем предварительно хешированного сообщения μ. Если вместе с сообщением, подписываемым напрямую, нужна строка контекста, opts может иметь тип *Options. Аргумент io.Reader игнорируется.

func (*PrivateKey) SignDeterministic 1.27

func (sk *PrivateKey) SignDeterministic(message []byte, opts crypto.SignerOpts) (signature []byte, err error)

SignDeterministic работает как PrivateKey.Sign, но подпись является детерминированной.

type PublicKey 1.27

PublicKey — это открытый ключ ML-DSA. Он реализует неформальный расширенный интерфейс crypto.PublicKey.

PublicKey можно безопасно использовать одновременно из нескольких горутин.

type PublicKey struct {
    // contains filtered or unexported fields
}

func NewPublicKey 1.27

func NewPublicKey(params Parameters, encoding []byte) (*PublicKey, error)

NewPublicKey создаёт новый открытый ключ ML-DSA из заданного кодирования.

func (*PublicKey) Bytes 1.27

func (pk *PublicKey) Bytes() []byte

Bytes возвращает кодирование открытого ключа.

func (*PublicKey) Equal 1.27

func (pk *PublicKey) Equal(x crypto.PublicKey) bool

Equal сообщает, совпадают ли ключи pk и x (то есть имеют ли они одинаковое кодирование).

Если x не является *PublicKey, Equal возвращает false.

func (*PublicKey) Parameters 1.27

func (pk *PublicKey) Parameters() Parameters

Parameters возвращает параметры, связанные с этим открытым ключом.

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

Spec-Zone.ru

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