Golang crypto/tls.X509KeyPair function example

package crypto/tls

X509KeyPair parses a public/private key pair from a pair of PEM encoded data.

Golang crypto/tls.X509KeyPair function usage example

 package main

  import (
 "fmt"
 "os"
 "crypto/tls"
 "crypto/rand"
 "crypto/x509"
  )

  func main() {

 var rsaCertPEM = `-----BEGIN CERTIFICATE-----
 MIICsDCCAhmgAwIBAgIJAO5D1qsH/78rMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
 aWRnaXRzIFB0eSBMdGQwHhcNMTQwODA0MDIyNzUyWhcNMTUwODA0MDIyNzUyWjBF
 MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
 gQDV9W372uXevUgcoOvcHqf5uV0mEh9Tmw+qy/vhDkZIfC8NSoUmwAL5vgvYv6c2
 YMnAKJ6ElZxVJZhPuRR6y1ttAJbiJvyJWIbIJmslOHO+IK1OCbVEl0gQ1IaJQYP2
 saz68xjG/xh8xUdxSx1zBMhKnR7erw5pekz46vKcjieQTQIDAQABo4GnMIGkMB0G
 A1UdDgQWBBQ5wLg8Q5l5TptdhBuhRYWIP6m4zDB1BgNVHSMEbjBsgBQ5wLg8Q5l5
 TptdhBuhRYWIP6m4zKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
 U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAO5D1qsH
 /78rMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAqjU+G10RfNQqqSFv
 ugASDEdbt2N3QxJRNQqjfM1mdQ0K/ghKY4mIz39/oMW/ZeLTDdBTp1GW7JWcL/yK
 PUoYcr9+iDlWmOr0YT0of4W7UmWRDOROgm3sDG+IXC0nVAHk5mzgv4oTmrMWoOTT
 nbhct5AWXmGPgIGenmpzk57aayA=
 -----END CERTIFICATE-----`

 var rsaKeyPEM = `-----BEGIN RSA PRIVATE KEY-----
 MIICXQIBAAKBgQDV9W372uXevUgcoOvcHqf5uV0mEh9Tmw+qy/vhDkZIfC8NSoUm
 wAL5vgvYv6c2YMnAKJ6ElZxVJZhPuRR6y1ttAJbiJvyJWIbIJmslOHO+IK1OCbVE
 l0gQ1IaJQYP2saz68xjG/xh8xUdxSx1zBMhKnR7erw5pekz46vKcjieQTQIDAQAB
 AoGAaQWss+hx1xCgGfVfcM/Xcfvr3ikdGWPOn+66t3DTTPcv/V0r2KZ9j2sa04zX
 nhiKT3lgvgHWF/F5PwDBLbkuKX+gFfcqXaUjOWJUig9ZtnvlxhR0qPwJnzcqtvPV
 +PeVKsF8D/dD5+vu8DK1F64i01h+y0HCS4g94Bq1ivL/tF0CQQD9B/5mNtoUSRiZ
 hKLvs+FHRSvpQgCzVSx1tHMqUtP/11/s/1TJbVQ4C+6Z6kOZ3W5H4QU8Ta5mnavC
 ot/c6awXAkEA2HgT0THf8QR81nj01QS7d/mrO5rcTc0Is0FajHQIJHfJTV1O4bBq
 yYPlKr1fUJq2TJ0yIqzjpHHrNsw7+9exOwJBAM9FnhKy+h/F5P3U1fgPXQoZ0qeo
 JpTAv8PHxtMzuHAKSI0Gd7js8yFaPOEeMrQ23GDLJpPIeoWawRmWfFUloY8CQQDX
 uqt9Qyg7yU4ka/0LwiCWi5Iz37yIKLrv8kSsTwLCXUKXwFLZpvh1heXAN2QjL1xY
 dBy/4+8mNoXEYbux2557AkBvVzGjgcUbSCKJAoN0EYVad5/CtJoZhKyIH3ONKwvU
 sbIV3y4tTpNvpBzg62ZE0M0WshIqL6yx+kQHCZdi09/E
 -----END RSA PRIVATE KEY-----`




 certificate, err := tls.X509KeyPair([]byte(rsaCertPEM), []byte(rsaKeyPEM))

 if err != nil {
 fmt.Println(err)
 os.Exit(1)
 }

 // certificate
 var cert_byte [][]byte
 cert_byte = certificate.Certificate
 fmt.Printf("Server.pem file content :\n%s\n", cert_byte)


 // private key
 fmt.Printf("Server.key(Private Key) \n%x\n", certificate.PrivateKey)


 // OCSPStaple
 var ocsp []byte
 ocsp = certificate.OCSPStaple
 fmt.Printf("OCSPStaple : \n%x\n", ocsp)

 // Leaf
 var lf *x509.Certificate

 fmt.Printf("Leaf \n%x\n", &lf)

  }

Example output :

Server.pem file content : 0E1�0�� *�H��0 0 UAU10U Some-State1!0U ......�js���k ]

Server.key(Private Key) &{{d5........7099762d3dfc4 []}}

OCSPStaple : nil

Leaf c208042020

Reference :

http://golang.org/pkg/crypto/tls/#X509KeyPair

  See also : Golang crypto/tls.LoadX509KeyPair function example

Advertisement