1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package main
- import (
- "crypto/rsa"
- "fmt"
- "crypto/x509"
- "encoding/pem"
- "os"
- "crypto/rand"
- "flag"
- )
- func main(){
- var keyfilename string
- var keylen int
- var help bool
- flag.IntVar(&keylen, "l", 2048, "Key Length (default: 2048)")
- flag.StringVar(&keyfilename, "o", "sshhost.key", "Output File Name (default: sshhost.key)")
- flag.BoolVar(&help, "h", false, "Show Help")
- if help{
- fmt.Println("Usage: HostKeyGen [-h] [-l <keylenth>] [-o <out_file>]")
- flag.PrintDefaults()
- return
- }
- GenerateRSAKey(keyfilename, keylen)
- }
- func GenerateRSAKey(keyfn string,keyLength int) {
- privateKey, err := rsa.GenerateKey(rand.Reader, keyLength)
- if err != nil {
- fmt.Println("Failed to Generate RSA Private Key: ", err)
- return
- }
- derStream := x509.MarshalPKCS1PrivateKey(privateKey)
- block := &pem.Block{
- Type: "RSA PRIVATE KEY",
- Bytes: derStream,
- }
- file, err := os.Create(keyfn)
- if err != nil {
- fmt.Println("Failed to Create Key File: ", err)
- return
- }
- err = pem.Encode(file, block)
- if err != nil {
- fmt.Println("Failed to Encode Key: ", err)
- return
- }
- fmt.Println("SSH Host Key Generated Successfully..")
- }
|