212
func Encode(out io.Writer, b *Block) (err error) {
213
_, err = out.Write(pemStart[1:])
213
func writeHeader(out io.Writer, k, v string) error {
214
_, err := out.Write([]byte(k + ": " + v + "\n"))
218
func Encode(out io.Writer, b *Block) error {
219
if _, err := out.Write(pemStart[1:]); err != nil {
217
_, err = out.Write([]byte(b.Type + "-----\n"))
222
if _, err := out.Write([]byte(b.Type + "-----\n")); err != nil {
222
226
if len(b.Headers) > 0 {
223
for k, v := range b.Headers {
224
_, err = out.Write([]byte(k + ": " + v + "\n"))
229
_, err = out.Write([]byte{'\n'})
227
const procType = "Proc-Type"
228
h := make([]string, 0, len(b.Headers))
230
for k := range b.Headers {
237
// The Proc-Type header must be written first.
238
// See RFC 1421, section 4.6.1.1
240
if err := writeHeader(out, procType, b.Headers[procType]); err != nil {
244
// For consistency of output, write other headers sorted by key.
246
for _, k := range h {
247
if err := writeHeader(out, k, b.Headers[k]); err != nil {
251
if _, err := out.Write([]byte{'\n'}); err != nil {
236
257
breaker.out = out
238
259
b64 := base64.NewEncoder(base64.StdEncoding, &breaker)
239
_, err = b64.Write(b.Bytes)
260
if _, err := b64.Write(b.Bytes); err != nil {
246
_, err = out.Write(pemEnd[1:])
266
if _, err := out.Write(pemEnd[1:]); err != nil {
250
_, err = out.Write([]byte(b.Type + "-----\n"))
269
_, err := out.Write([]byte(b.Type + "-----\n"))
254
273
func EncodeToMemory(b *Block) []byte {