Spec-Zone.ru › Go

Пакет crypto

  • import "crypto"
  • Обзор
  • Указатель
  • Подкаталоги

Обзор

Пакет crypto содержит общие криптографические константы.

Указатель

  • func RegisterHash(h Hash, f func() hash.Hash)
  • func SignMessage(signer Signer, rand io.Reader, msg []byte, opts SignerOpts) (signature []byte, err error)
  • type Decapsulator
  • type Decrypter
  • type DecrypterOpts
  • type Encapsulator
  • type Hash
  • func (h Hash) Available() bool
  • func (h Hash) HashFunc() Hash
  • func (h Hash) New() hash.Hash
  • func (h Hash) Size() int
  • func (h Hash) String() string
  • type MessageSigner
  • type PrivateKey
  • type PublicKey
  • type Signer
  • type SignerOpts

Файлы пакета

crypto.go

func RegisterHash

func RegisterHash(h Hash, f func() hash.Hash)

RegisterHash регистрирует функцию, возвращающую новый экземпляр указанной хеш-функции. Она предназначена для вызова из функции init в пакетах, реализующих хеш-функции.

func SignMessage 1.25

func SignMessage(signer Signer, rand io.Reader, msg []byte, opts SignerOpts) (signature []byte, err error)

SignMessage подписывает msg с помощью signer. Если signer реализует интерфейс MessageSigner, напрямую вызывается MessageSigner.SignMessage. В противном случае для msg вычисляется хеш с помощью opts.HashFunc(), после чего он подписывается с помощью Signer.Sign.

type Decapsulator 1.26

Decapsulator — это интерфейс для закрытого ключа KEM с непрозрачным представлением, который можно использовать для операций декапсуляции. Например, это может быть ключ ML-KEM, хранящийся в аппаратном модуле.

Его реализует, например, crypto/mlkem.DecapsulationKey768.

type Decapsulator interface {
    Encapsulator() Encapsulator
    Decapsulate(ciphertext []byte) (sharedKey []byte, err error)
}

type Decrypter 1.5

Decrypter — это интерфейс для закрытого ключа с непрозрачным представлением, который можно использовать для асимметричного расшифрования. Например, это может быть ключ RSA, хранящийся в аппаратном модуле.

type Decrypter interface {
    // Public returns the public key corresponding to the opaque,
    // private key.
    Public() PublicKey

    // Decrypt decrypts msg. The opts argument should be appropriate for
    // the primitive used. See the documentation in each implementation for
    // details.
    Decrypt(rand io.Reader, msg []byte, opts DecrypterOpts) (plaintext []byte, err error)
}

type DecrypterOpts 1.5

type DecrypterOpts any

type Encapsulator 1.26

Encapsulator — это интерфейс для открытого ключа KEM, который можно использовать для операций инкапсуляции.

Его реализует, например, crypto/mlkem.EncapsulationKey768.

type Encapsulator interface {
    Bytes() []byte
    Encapsulate() (sharedKey, ciphertext []byte)
}

type Hash

Hash обозначает криптографическую хеш-функцию, реализованную в другом пакете.

type Hash uint
const (
    MD4         Hash = 1 + iota // import golang.org/x/crypto/md4
    MD5                         // import crypto/md5
    SHA1                        // import crypto/sha1
    SHA224                      // import crypto/sha256
    SHA256                      // import crypto/sha256
    SHA384                      // import crypto/sha512
    SHA512                      // import crypto/sha512
    MD5SHA1                     // no implementation; MD5+SHA1 used for TLS RSA
    RIPEMD160                   // import golang.org/x/crypto/ripemd160
    SHA3_224                    // import crypto/sha3
    SHA3_256                    // import crypto/sha3
    SHA3_384                    // import crypto/sha3
    SHA3_512                    // import crypto/sha3
    SHA512_224                  // import crypto/sha512
    SHA512_256                  // import crypto/sha512
    BLAKE2s_256                 // import golang.org/x/crypto/blake2s
    BLAKE2b_256                 // import golang.org/x/crypto/blake2b
    BLAKE2b_384                 // import golang.org/x/crypto/blake2b
    BLAKE2b_512                 // import golang.org/x/crypto/blake2b

    // MLDSAMu is a sentinel value for a [pre-hashed μ message representative].
    // It has no implementation, but is used as a [SignerOpts.HashFunc] return
    // value for [crypto/mldsa.PrivateKey.Sign].
    //
    // [pre-hashed μ message representative]: https://www.rfc-editor.org/rfc/rfc9881.html#externalmu
    MLDSAMu
)

func (Hash) Available

func (h Hash) Available() bool

Available сообщает, включена ли указанная хеш-функция в бинарный файл.

func (Hash) HashFunc 1.4

func (h Hash) HashFunc() Hash

HashFunc просто возвращает значение h, чтобы Hash реализовывал SignerOpts.

func (Hash) New

func (h Hash) New() hash.Hash

New возвращает новый hash.Hash, вычисляющий указанную хеш-функцию. New вызывает панику, если хеш-функция не включена в бинарный файл.

func (Hash) Size

func (h Hash) Size() int

Size возвращает длину в байтах дайджеста, получаемого с помощью указанной хеш-функции. При этом не требуется, чтобы данная хеш-функция была включена в программу.

func (Hash) String 1.15

func (h Hash) String() string

type MessageSigner 1.25

MessageSigner — это интерфейс для закрытого ключа с непрозрачным представлением, который можно использовать для подписания сообщений, не хешируемых предварительно вызывающим кодом. Он является расширением интерфейса Signer, поэтому его можно передавать в API, принимающие Signer и, возможно, пытающиеся выполнить преобразование интерфейса.

При одинаковых opts методы MessageSigner.SignMessage и MessageSigner.Sign должны выдавать одинаковый результат. В частности, MessageSigner.SignMessage должен принимать нулевое значение opts.HashFunc только в том случае, если Signer также принимает сообщения, не хешированные предварительно.

Реализации, не предоставляющие API для подписания предварительно хешированных сообщений, должны реализовать Signer.Sign так, чтобы он всегда возвращал ошибку.

type MessageSigner interface {
    Signer
    SignMessage(rand io.Reader, msg []byte, opts SignerOpts) (signature []byte, err error)
}

type PrivateKey

PrivateKey представляет закрытый ключ с неопределённым алгоритмом.

Хотя для обеспечения обратной совместимости этот тип является пустым интерфейсом, все типы закрытых ключей стандартной библиотеки реализуют следующий интерфейс

interface{
    Public() crypto.PublicKey
    Equal(x crypto.PrivateKey) bool
}

а также интерфейсы для конкретных задач, такие как Signer и Decrypter, которые можно использовать для повышения типобезопасности приложений.

type PrivateKey any

type PublicKey 1.2

PublicKey представляет открытый ключ с неопределённым алгоритмом.

Хотя для обеспечения обратной совместимости этот тип является пустым интерфейсом, все типы открытых ключей стандартной библиотеки реализуют следующий интерфейс

interface{
    Equal(x crypto.PublicKey) bool
}

который можно использовать для повышения типобезопасности приложений.

type PublicKey any

type Signer 1.4

Signer — это интерфейс для закрытого ключа с непрозрачным представлением, который можно использовать для операций подписания. Например, это может быть ключ RSA, хранящийся в аппаратном модуле.

type Signer interface {
    // Public returns the public key corresponding to the opaque,
    // private key.
    Public() PublicKey

    // Sign signs digest with the private key, possibly using entropy from
    // rand. For an RSA key, the resulting signature should be either a
    // PKCS #1 v1.5 or PSS signature (as indicated by opts). For an (EC)DSA
    // key, it should be a DER-serialised, ASN.1 signature structure.
    //
    // Hash implements the SignerOpts interface and, in most cases, one can
    // simply pass in the hash function used as opts. Sign may also attempt
    // to type assert opts to other types in order to obtain algorithm
    // specific values. See the documentation in each package for details.
    //
    // Note that when a signature of a hash of a larger message is needed,
    // the caller is responsible for hashing the larger message and passing
    // the hash (as digest) and the hash function (as opts) to Sign.
    Sign(rand io.Reader, digest []byte, opts SignerOpts) (signature []byte, err error)
}

type SignerOpts 1.4

SignerOpts содержит параметры для подписания с помощью Signer.

type SignerOpts interface {
    // HashFunc returns an identifier for the hash function used to produce
    // the message passed to Signer.Sign, or else zero to indicate that no
    // hashing was done.
    HashFunc() Hash
}

Подкаталоги

Имя Описание
..
aes Пакет aes реализует шифрование AES (ранее Rijndael), определённое в публикации 197 Федеральных стандартов обработки информации США.
boring Пакет boring предоставляет функции, доступные только при сборке с Go+BoringCrypto.
cipher Пакет cipher реализует стандартные режимы блочного шифрования, которые можно использовать с низкоуровневыми реализациями блочных шифров.
des Пакет des реализует стандарт шифрования данных (DES) и алгоритм тройного шифрования данных (TDEA), определённые в публикации 46-3 Федеральных стандартов обработки информации США.
dsa Пакет dsa реализует алгоритм цифровой подписи, определённый в FIPS 186-3.
ecdh Пакет ecdh реализует протокол Диффи — Хеллмана на эллиптических кривых NIST и Curve25519.
ecdsa Пакет ecdsa реализует алгоритм цифровой подписи на эллиптических кривых, определённый в [FIPS 186-5].
ed25519 Пакет ed25519 реализует алгоритм подписи Ed25519.
elliptic Пакет elliptic реализует стандартные эллиптические кривые NIST P-224, P-256, P-384 и P-521 над простыми полями.
fips140 Пакет fips140 предоставляет сведения о криптографическом модуле Go FIPS 140-3 и режиме FIPS 140-3.
hkdf Пакет hkdf реализует функцию выработки ключей на основе HMAC (HKDF), определённую в RFC 5869.
hmac Пакет hmac реализует код аутентификации сообщений на основе ключевого хеша (HMAC), определённый в публикации 198 Федеральных стандартов обработки информации США.
hpke Пакет hpke реализует гибридное шифрование с открытым ключом (HPKE), определённое в [RFC 9180].
md5 Пакет md5 реализует алгоритм хеширования MD5, определённый в RFC 1321.
mldsa Пакет mldsa реализует постквантовую схему цифровой подписи ML-DSA, определённую в [FIPS 204].
mlkem Пакет mlkem реализует устойчивый к квантовым атакам метод инкапсуляции ключей ML-KEM (ранее известный как Kyber), определённый в [NIST FIPS 203].
mlkemtest Пакет mlkemtest предоставляет функции тестирования алгоритма ML-KEM.
pbkdf2 Пакет pbkdf2 реализует функцию выработки ключей PBKDF2, определённую в RFC 8018 (PKCS #5 v2.1).
rand Пакет rand реализует криптографически стойкий генератор случайных чисел.
rc4 Пакет rc4 реализует шифрование RC4, описанное в книге Брюса Шнайера «Прикладная криптография».
rsa Пакет rsa реализует шифрование RSA согласно PKCS #1 и RFC 8017.
sha1 Пакет sha1 реализует алгоритм хеширования SHA-1, определённый в RFC 3174.
sha256 Пакет sha256 реализует алгоритмы хеширования SHA224 и SHA256, определённые в FIPS 180-4.
sha3 Пакет sha3 реализует алгоритмы хеширования SHA-3 и функции расширяемого вывода SHAKE, определённые в FIPS 202.
sha512 Пакет sha512 реализует алгоритмы хеширования SHA-384, SHA-512, SHA-512/224 и SHA-512/256, определённые в FIPS 180-4.
subtle Пакет subtle реализует функции, часто полезные в криптографическом коде, но требующие осторожного применения.
tls Пакет tls частично реализует TLS 1.2 согласно RFC 5246 и TLS 1.3 согласно RFC 8446.
fipsonly Пакет fipsonly ограничивает все настройки TLS параметрами, одобренными FIPS.
x509 Пакет x509 реализует подмножество стандарта X.509.
pkix Пакет pkix содержит общие низкоуровневые структуры для разбора и сериализации ASN.1 сертификатов X.509, списков отозванных сертификатов (CRL) и ответов OCSP.

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

Spec-Zone.ru

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