# package pem

`import "encoding/pem"`

pem包实现了PEM数据编码（源自保密增强邮件协议）。目前PEM编码主要用于TLS密钥和证书。参见RFC 1421

## type Block

    type Block struct {
        Type    string            // 得自前言的类型（如"RSA PRIVATE KEY"）
        Headers map[string]string // 可选的头项
        Bytes   []byte            // 内容解码后的数据，一般是DER编码的ASN.1结构
    }

Block代表PEM编码的结构。编码格式如下：

    -----BEGIN Type-----
    Headers
    base64-encoded Bytes
    -----END Type-----

其中Headers是可为空的多行键值对。

### func Decode

    func Decode(data []byte) (p *Block, rest []byte)

Decode函数会从输入里查找到下一个PEM格式的块（证书、私钥等）。它返回解码得到的Block和剩余未解码的数据。如果未发现PEM数据，返回(nil, data)。

## func Encode

    func Encode(out io.Writer, b *Block) error

## func EncodeToMemory

    func EncodeToMemory(b *Block) []byte