aboutsummaryrefslogtreecommitdiff
path: root/client/client.go
diff options
context:
space:
mode:
authorfuero <fuero@users.noreply.github.com>2017-06-05 23:28:13 +0200
committerNiall Sheridan <nsheridan@gmail.com>2017-06-05 22:28:13 +0100
commit321e26fae746e661d713cedfb6642609e680cafe (patch)
tree4be9496c75aabc54325aac1b8b511223e986b8f7 /client/client.go
parent8ee3c6473f3e2373303b9cb16ab5f059f9e6369e (diff)
Saving private keys (#61)
* enables saving private keys * renames public_file_prefix to key_file_prefix and updates its docs to better reflect the changes
Diffstat (limited to 'client/client.go')
-rw-r--r--client/client.go21
1 files changed, 19 insertions, 2 deletions
diff --git a/client/client.go b/client/client.go
index 305d0d2..8ebe29a 100644
--- a/client/client.go
+++ b/client/client.go
@@ -5,6 +5,7 @@ import (
"crypto/tls"
"encoding/base64"
"encoding/json"
+ "encoding/pem"
"fmt"
"io/ioutil"
"net/http"
@@ -33,14 +34,30 @@ func SavePublicFiles(prefix string, cert *ssh.Certificate, pub ssh.PublicKey) er
pubTxt := ssh.MarshalAuthorizedKey(pub)
certPubTxt := []byte(cert.Type() + " " + base64.StdEncoding.EncodeToString(cert.Marshal()))
- if err := ioutil.WriteFile(prefix+".pub", pubTxt, 0644); err != nil {
+ _prefix := prefix + "/id_" + cert.KeyId
+
+ if err := ioutil.WriteFile(_prefix+".pub", pubTxt, 0644); err != nil {
return err
}
- err := ioutil.WriteFile(prefix+"-cert.pub", certPubTxt, 0644)
+ err := ioutil.WriteFile(_prefix+"-cert.pub", certPubTxt, 0644)
return err
}
+// SavePrivateFiles installs the private part of the key.
+func SavePrivateFiles(prefix string, cert *ssh.Certificate, key Key) error {
+ if prefix == "" {
+ return nil
+ }
+ _prefix := prefix + "/id_" + cert.KeyId
+ pemBlock, err := pemBlockForKey(key);
+ if err != nil {
+ return err
+ }
+ err = ioutil.WriteFile(_prefix, pem.EncodeToMemory(pemBlock), 0600)
+ return err
+}
+
// InstallCert adds the private key and signed certificate to the ssh agent.
func InstallCert(a agent.Agent, cert *ssh.Certificate, key Key) error {
t := time.Unix(int64(cert.ValidBefore), 0)