Пакет crypto
Обзор
Пакет crypto содержит общие криптографические константы.
Указатель
Файлы пакета
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/