func getKey(keyfile string) (*utils.PrivateKey, error) { _, err := os.Stat(filepath.Dir(keyfile)) if _, err := os.Stat(keyfile); err != nil { err := os.MkdirAll(filepath.Dir(keyfile), 0755) if err != nil { return nil, err } key := utils.GeneratePrivateKey() pem, err := key.MarshalText() err = ioutil.WriteFile(keyfile, pem, 0644) if err != nil { return nil, err } fmt.Printf(" -> Create a new private key: %s\n", keyfile) } pem, err := ioutil.ReadFile(keyfile) if err != nil { return nil, err } var key utils.PrivateKey err = key.UnmarshalText(pem) if err != nil { return nil, err } return &key, nil }