]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/pem: add Decode example
authorVictor Vrantchan <vrancean+github@gmail.com>
Sun, 16 Oct 2016 13:55:33 +0000 (09:55 -0400)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 17 Oct 2016 14:02:33 +0000 (14:02 +0000)
For #16360.

Change-Id: I99d1e5ab1f814f65b3066a498158a442f1bd477f
Reviewed-on: https://go-review.googlesource.com/31137
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/encoding/pem/example_test.go [new file with mode: 0644]

diff --git a/src/encoding/pem/example_test.go b/src/encoding/pem/example_test.go
new file mode 100644 (file)
index 0000000..900b31c
--- /dev/null
@@ -0,0 +1,44 @@
+// 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.
+
+package pem_test
+
+import (
+       "crypto/x509"
+       "encoding/pem"
+       "fmt"
+       "log"
+)
+
+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"
+}