Функция pem.EncodeToMemory
Функция pem.EncodeToMemory принимает на вход структуру типа
pem.Block и возвращает срез байтов, содержащий данные в формате
PEM (Privacy-Enhanced Mail). В структуру pem.Block нужно передать
тип данных (например, "CERTIFICATE" или "RSA PRIVATE KEY")
и сами данные в виде среза байтов. Функция не требует указания файла
или потока вывода, а сразу возвращает готовый PEM-блок в памяти.
Синтаксис
pem.EncodeToMemory(block *pem.Block) []byte
Пример
Давайте закодируем простой сертификат в формате PEM:
package main
import (
"crypto/pem"
"encoding/base64"
"fmt"
)
func main() {
// Демонстрационные данные сертификата
certData := []byte("-----BEGIN CERTIFICATE-----\nMII...\n-----END CERTIFICATE-----")
// Декодируем DER-данные (для примера используем base64)
decoded, _ := base64.StdEncoding.DecodeString("MII...")
// Создаем блок PEM
block := &pem.Block{
Type: "CERTIFICATE",
Bytes: decoded,
}
// Кодируем в PEM
pemBytes := pem.EncodeToMemory(block)
fmt.Println(string(pemBytes))
}
Результат выполнения кода:
"-----BEGIN CERTIFICATE-----\nMII...\n-----END CERTIFICATE-----\n"
Пример
Давайте закодируем закрытый ключ RSA в формате PEM:
package main
import (
"crypto/pem"
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"fmt"
)
func main() {
// Генерируем RSA ключ
privateKey, _ := rsa.GenerateKey(rand.Reader, 2048)
// Преобразуем в DER-формат
privateKeyBytes := x509.MarshalPKCS1PrivateKey(privateKey)
// Создаем блок PEM
block := &pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: privateKeyBytes,
}
// Кодируем в PEM
pemBytes := pem.EncodeToMemory(block)
fmt.Println(string(pemBytes))
}
Результат выполнения кода:
"-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA...\n-----END RSA PRIVATE KEY-----\n"
Смотрите также
-
функцию
pem.Decode,
которая выполняет обратное преобразование и декодирует PEM-данные -
функцию
pem.Encode,
которая выполняет кодирование в PEM с записью в поток вывода -
пакет
encoding/pem,
который предоставляет все функции для работы с PEM-форматом -
пакет
crypto/x509,
который используется для работы с сертификатами и ключами