|  | // Copyright 2016 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | // +build ignore | 
|  |  | 
|  | package pem_test | 
|  |  | 
|  | import ( | 
|  | "crypto/x509" | 
|  | "encoding/pem" | 
|  | "fmt" | 
|  | "log" | 
|  | "os" | 
|  | ) | 
|  |  | 
|  | func ExampleDecode() { | 
|  | var pubPEMData = []byte(` | 
|  | -----BEGIN PUBLIC KEY----- | 
|  | MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlRuRnThUjU8/prwYxbty | 
|  | WPT9pURI3lbsKMiB6Fn/VHOKE13p4D8xgOCADpdRagdT6n4etr9atzDKUSvpMtR3 | 
|  | CP5noNc97WiNCggBjVWhs7szEe8ugyqF23XwpHQ6uV1LKH50m92MbOWfCtjU9p/x | 
|  | qhNpQQ1AZhqNy5Gevap5k8XzRmjSldNAFZMY7Yv3Gi+nyCwGwpVtBUwhuLzgNFK/ | 
|  | yDtw2WcWmUU7NuC8Q6MWvPebxVtCfVp/iQU6q60yyt6aGOBkhAX0LpKAEhKidixY | 
|  | nP9PNVBvxgu3XZ4P36gZV6+ummKdBVnc3NqwBLu5+CcdRdusmHPHd5pHf4/38Z3/ | 
|  | 6qU2a/fPvWzceVTEgZ47QjFMTCTmCwNt29cvi7zZeQzjtwQgn4ipN9NibRH/Ax/q | 
|  | TbIzHfrJ1xa2RteWSdFjwtxi9C20HUkjXSeI4YlzQMH0fPX6KCE7aVePTOnB69I/ | 
|  | a9/q96DiXZajwlpq3wFctrs1oXqBp5DVrCIj8hU2wNgB7LtQ1mCtsYz//heai0K9 | 
|  | PhE4X6hiE0YmeAZjR0uHl8M/5aW9xCoJ72+12kKpWAa0SFRWLy6FejNYCYpkupVJ | 
|  | yecLk/4L1W0l6jQQZnWErXZYe0PNFcmwGXy1Rep83kfBRNKRy5tvocalLlwXLdUk | 
|  | AIU+2GKjyT3iMuzZxxFxPFMCAwEAAQ== | 
|  | -----END PUBLIC KEY----- | 
|  | and some more`) | 
|  |  | 
|  | block, rest := pem.Decode(pubPEMData) | 
|  | if block == nil || block.Type != "PUBLIC KEY" { | 
|  | log.Fatal("failed to decode PEM block containing public key") | 
|  | } | 
|  |  | 
|  | pub, err := x509.ParsePKIXPublicKey(block.Bytes) | 
|  | if err != nil { | 
|  | log.Fatal(err) | 
|  | } | 
|  |  | 
|  | fmt.Printf("Got a %T, with remaining data: %q", pub, rest) | 
|  | // Output: Got a *rsa.PublicKey, with remaining data: "and some more" | 
|  | } | 
|  |  | 
|  | func ExampleEncode() { | 
|  | block := &pem.Block{ | 
|  | Type: "MESSAGE", | 
|  | Headers: map[string]string{ | 
|  | "Animal": "Gopher", | 
|  | }, | 
|  | Bytes: []byte("test"), | 
|  | } | 
|  |  | 
|  | if err := pem.Encode(os.Stdout, block); err != nil { | 
|  | log.Fatal(err) | 
|  | } | 
|  | // Output: | 
|  | // -----BEGIN MESSAGE----- | 
|  | // Animal: Gopher | 
|  | // | 
|  | // dGVzdA== | 
|  | // -----END MESSAGE----- | 
|  | } |