/putty

Go package to parse PuTTY private key formats

Primary LanguageGoApache License 2.0Apache-2.0

putty

Go package to parse PuTTY private key formats. Go 1.13 or above is required.

Example

package main

import (
	"log"

	"github.com/liornabat/putty"
)

func main() {
	var privateKey interface{}

	// read the key
	puttyKey, err := putty.NewFromFile("test.ppk")
	if err != nil {
		log.Fatal(err)
	}

	// parse putty key
	if puttyKey.Encryption != "none" {
		// If the key is encrypted, decrypt it
		privateKey, err = puttyKey.ParseRawPrivateKey([]byte("testkey"))
		if err != nil {
			log.Fatal(err)
		}
	} else {
		privateKey, err = puttyKey.ParseRawPrivateKey(nil)
		if err != nil {
			log.Fatal(err)
		}
	}

  // init an empty public key with version 3
  outKey := putty.Key{Version: 3}

  // set the private key
  outKey.SetKey(privateKey)

  // print out the ppk file
  fmt.Printf("%s\n", outKey.Marshal())

	log.Printf("%+#v", privateKey)
}