Golang crypto/x509.ParsePKCS1PrivateKey() function example

package crypto/x509

ParsePKCS1PrivateKey returns an RSA private key from its ASN.1 PKCS#1 DER encoded form.

Golang crypto/x509.ParsePKCS1PrivateKey() function usage example

 package main

 import (
 "crypto/x509"
 "os"
 "fmt"
 "encoding/pem"
 )

 func main() {

 var pemBytes = `-----BEGIN RSA PRIVATE KEY-----
 MIIEpAIBAAKCAQEAvy723k7qOmLgY+aTAKtKFfMHIeAdfEe2TTu+HyM29MEKefWp
 8Tq7vmmT1aK3/qV/VXofdlF4e7E0mei0m1fMVMecDatVfGAiVae1WhxW4Ppkh3zS
 Oz0w2dOp6iSzpo4vN1UKMdOdGLfjx/oUK4HoFBjf36AGW/JIbc9Hdaof2CMZchKR
 nuWS2+EPyqKcuTE4xlp3nTj3sUppbUKqE6d9PqsbkTmfHTFOx/itX2b+x7UbgRzI
 NgOGgO3w7YAOkRfMJpEdxBRRTWyVxONrtHEE2k1/Moy73hR1JlkEgi0IyEFGC6yF
 3/0bRgGs95l5F62jsLNo4bU3YL6p0g5eotsl/wIDAQABAoIBAQC/BePwWBU85VKj
 Pt0ezAcoSz2TIWUUqmqCXPEoF31vq/oVxdpZh3/TT5ZA3WbObvn9pBoPlHO302Vl
 atgaZu1owFEyb0DpFvz3bKyNLse33zfXEGbWfdtzqkOaCbXe8y5GMRgQlQngisxz
 IXJJznDes8Psou33rOulnHggHy3WO+4djaStsY78R+ulZs2KExeWISZtxs6USYc7
 Nl9kc0r0p8k0oNCX6z2fFAaQQhv9gf1KARvm3TmtaNHTdXj/rVQByPM9MmWupzvl
 OXSweHIk1DKkkGu4j0U1ZdH2bMF2L7JhD9iO9v8R9O2O+HrCARqxCXfan+OFDclx
 9Td/KJKxAoGBAPtNmeawj89zetS2stbw7LI7sVh1LZ0GRf6CbJ19p93H+fyq3yUf
 PSYpr3fxSBPoiI1KR06Gzd2YWo4qf4z4L9qjqs5gmuBAlTKsWNH8Q8QMX3HwG33k
 0KPGkPBMe3YAni1kkyemPFKmh0x8NY3astwRzK8qbsYtHIiAz8Hoj3jbAoGBAMLB
 thOnFn9iNgT7NBtBa3MXVg8TudUdwIMTMPUoO8i/c7oWrKYahlnqXZwXffisd+FO
 XgqVzSxTqXovqiDrXQKFX+AB1TWHPEnUwPNFI9o1A3RNan5D2I77G9CDKzKMZXEU
 /lLmja3O3mAPZxouZdeCHH4qnwe+chqwGfWKp46tAoGBAPY65O8KVP55MgM2OCku
 y10f6/a2ackPmolzlaUCt/YwuRr++cHPyASal5k4St1m3FVEUHX607+qRiBCN9QS
 YiEieHvaYCYWYZnTEPw+5s8zKFnlX6qNBnlSWDV7WwUWOeZUQ3N4CGcbUDp7AaZK
 gTHsJtgDBaMcFHcTb32Ztuo9AoGAIkynWnK03Z5YUSxEkwBEgjJ774/TzJq+ytbY
 anS5grNlGELiCSbmvnMuJU1l3CPTwRRiL48OYV4inOhEGCQbb1Q5/GOWPyUgEwir
 KqzkkYuAnjz8IlykiRnkXiabtv1O6EmAOO1tykyCkXxk9hFx0jCSAA5Vj7GUuuqE
 x9+xfskCgYBRZK9IY9+ueYZ0WFdbFl5PjCT64OPQ4fCMnlZcWoS5knnett771x24
 SAzdOyicRdsBjoDrfTlFLQdyBrtVzvj7ZHUVpEauRQE2oISiykBDyIMYqJGrj6CY
 AKLsFBOVa9bpVjgq6WtjgQzsPUUWhNxsjzFU19S7h8swri084/N2jw==
 -----END RSA PRIVATE KEY-----`


 block, _ := pem.Decode([]byte(pemBytes))


 privatekey, err := x509.ParsePKCS1PrivateKey(block.Bytes)

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

 fmt.Printf("Public Key :  : %s\n\n", privatekey.PublicKey)

 fmt.Printf("Private Key D :  : %d\n\n", privatekey.D)

 fmt.Printf("Private Key Primes :  : %d\n\n", privatekey.Primes[0])

 fmt.Printf("Precomputed :  : %v\n\n", privatekey.Precomputed)

 }

Reference :

http://golang.org/pkg/crypto/x509/#ParsePKCS1PrivateKey

Advertisement