РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1285 of 1593 menu

Функция x509.MarshalPKIXPublicKey

Функция x509.MarshalPKIXPublicKey преобразует публичный ключ в его сериализованное представление в формате PKIX, ASN.1 DER. В качестве параметра она принимает интерфейс any, который должен содержать публичный ключ одного из поддерживаемых типов: *rsa.PublicKey, *ecdsa.PublicKey, ed25519.PublicKey. Функция возвращает байтовый срез с закодированными данными и ошибку, если тип ключа не поддерживается или ключ поврежден.

Синтаксис

x509.MarshalPKIXPublicKey(pub any) ([]byte, error)

Пример

Давайте сериализуем публичный ключ RSA в формате PKIX:

package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/hex" "fmt" ) func main() { privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { fmt.Println(err) return } publicKey := &privateKey.PublicKey pkixData, err := x509.MarshalPKIXPublicKey(publicKey) if err != nil { fmt.Println(err) return } fmt.Println(hex.EncodeToString(pkixData[:32]) + "...") }

Результат выполнения кода:

"3082010a0282010100a4c8e5f9..."

Пример

Давайте сериализуем публичный ключ ECDSA в формате PKIX:

package main import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "crypto/x509" "encoding/hex" "fmt" ) func main() { privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) if err != nil { fmt.Println(err) return } publicKey := &privateKey.PublicKey pkixData, err := x509.MarshalPKIXPublicKey(publicKey) if err != nil { fmt.Println(err) return } fmt.Println(hex.EncodeToString(pkixData[:32]) + "...") }

Результат выполнения кода:

"3059301306072a8648ce3d020106082a..."

Пример

Давайте попробуем сериализовать неподдерживаемый тип ключа:

package main import ( "crypto/x509" "fmt" ) func main() { invalidKey := "not a key" pkixData, err := x509.MarshalPKIXPublicKey(invalidKey) if err != nil { fmt.Println("Error:", err) return } fmt.Println(hex.EncodeToString(pkixData)) }

Результат выполнения кода:

"Error: x509: unsupported public key type: string"

Смотрите также

  • функцию x509.ParsePKIXPublicKey,
    которая выполняет обратное преобразование - парсинг PKIX-данных в публичный ключ
  • функцию x509.MarshalPKCS1PrivateKey,
    которая сериализует приватный ключ RSA в формате PKCS1
  • функцию x509.ParsePKCS1PrivateKey,
    которая парсит приватный ключ RSA из формата PKCS1
  • функцию x509.CreateCertificate,
    которая создает новый X.509 сертификат на основе публичного ключа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить