From 9e9a7d50970f1424245d88169de82988fd57e112 Mon Sep 17 00:00:00 2001 From: Niall Sheridan Date: Thu, 5 Jan 2017 23:28:26 +0000 Subject: Move GetPublicKey to the shared `lib` package --- client/client.go | 5 +---- cmd/cashierd/main.go | 3 +-- lib/const.go | 17 ----------------- lib/proto.go | 15 +++++++++++++++ lib/util.go | 10 ++++++++++ lib/util_test.go | 16 ++++++++++++++++ server/store/store.go | 4 ++-- server/util/util.go | 10 ---------- server/util/util_test.go | 16 ---------------- 9 files changed, 45 insertions(+), 51 deletions(-) delete mode 100644 lib/const.go create mode 100644 lib/proto.go create mode 100644 lib/util.go create mode 100644 lib/util_test.go delete mode 100644 server/util/util.go delete mode 100644 server/util/util_test.go diff --git a/client/client.go b/client/client.go index e69f353..b13c4cb 100644 --- a/client/client.go +++ b/client/client.go @@ -79,11 +79,8 @@ func Sign(pub ssh.PublicKey, token string, conf *Config) (*ssh.Certificate, erro if err != nil { return nil, err } - marshaled := ssh.MarshalAuthorizedKey(pub) - // Remove the trailing newline. - marshaled = marshaled[:len(marshaled)-1] s, err := json.Marshal(&lib.SignRequest{ - Key: string(marshaled), + Key: lib.GetPublicKey(pub), ValidUntil: time.Now().Add(validity), }) if err != nil { diff --git a/cmd/cashierd/main.go b/cmd/cashierd/main.go index 31ee240..52b6a8b 100644 --- a/cmd/cashierd/main.go +++ b/cmd/cashierd/main.go @@ -34,7 +34,6 @@ import ( "github.com/nsheridan/cashier/server/static" "github.com/nsheridan/cashier/server/store" "github.com/nsheridan/cashier/server/templates" - "github.com/nsheridan/cashier/server/util" "github.com/nsheridan/cashier/server/wkfs/vaultfs" "github.com/nsheridan/wkfs/s3" "github.com/sid77/drop" @@ -169,7 +168,7 @@ func signHandler(a *appContext, w http.ResponseWriter, r *http.Request) (int, er } json.NewEncoder(w).Encode(&lib.SignResponse{ Status: "ok", - Response: util.GetPublicKey(cert), + Response: lib.GetPublicKey(cert), }) return http.StatusOK, nil } diff --git a/lib/const.go b/lib/const.go deleted file mode 100644 index 1ba2749..0000000 --- a/lib/const.go +++ /dev/null @@ -1,17 +0,0 @@ -package lib - -import "time" - -// SignRequest represents a signing request sent to the server. -type SignRequest struct { - Key string `json:"key"` - ValidUntil time.Time `json:"valid_until"` -} - -// SignResponse is sent by the server. -// `Status' is "ok" or "error". -// `Response' contains a signed certificate or an error message. -type SignResponse struct { - Status string `json:"status"` - Response string `json:"response"` -} diff --git a/lib/proto.go b/lib/proto.go new file mode 100644 index 0000000..f3d7115 --- /dev/null +++ b/lib/proto.go @@ -0,0 +1,15 @@ +package lib + +import "time" + +// SignRequest represents a signing request sent to the server. +type SignRequest struct { + Key string `json:"key"` + ValidUntil time.Time `json:"valid_until"` +} + +// SignResponse is sent by the server. +type SignResponse struct { + Status string `json:"status"` // Status will be "ok" or "error". + Response string `json:"response"` // Response will contain either the signed certificate or the error message. +} diff --git a/lib/util.go b/lib/util.go new file mode 100644 index 0000000..b1c7b87 --- /dev/null +++ b/lib/util.go @@ -0,0 +1,10 @@ +package lib + +import "golang.org/x/crypto/ssh" + +// GetPublicKey marshals a ssh certificate to a string. +func GetPublicKey(pub ssh.PublicKey) string { + marshaled := ssh.MarshalAuthorizedKey(pub) + // Strip trailing newline + return string(marshaled[:len(marshaled)-1]) +} diff --git a/lib/util_test.go b/lib/util_test.go new file mode 100644 index 0000000..9e89297 --- /dev/null +++ b/lib/util_test.go @@ -0,0 +1,16 @@ +package lib + +import ( + "testing" + + "github.com/nsheridan/cashier/testdata" + "golang.org/x/crypto/ssh" +) + +func TestGetPublicKey(t *testing.T) { + t.Parallel() + c, _, _, _, _ := ssh.ParseAuthorizedKey(testdata.Cert) + if GetPublicKey(c.(*ssh.Certificate)) != string(testdata.Cert) { + t.Fail() + } +} diff --git a/server/store/store.go b/server/store/store.go index a447e72..8af77e3 100644 --- a/server/store/store.go +++ b/server/store/store.go @@ -5,8 +5,8 @@ import ( "golang.org/x/crypto/ssh" + "github.com/nsheridan/cashier/lib" "github.com/nsheridan/cashier/server/config" - "github.com/nsheridan/cashier/server/util" ) // New returns a new configured database. @@ -54,6 +54,6 @@ func parseCertificate(cert *ssh.Certificate) *CertRecord { Principals: cert.ValidPrincipals, CreatedAt: parseTime(cert.ValidAfter), Expires: parseTime(cert.ValidBefore), - Raw: util.GetPublicKey(cert), + Raw: lib.GetPublicKey(cert), } } diff --git a/server/util/util.go b/server/util/util.go deleted file mode 100644 index 10f5eca..0000000 --- a/server/util/util.go +++ /dev/null @@ -1,10 +0,0 @@ -package util - -import "golang.org/x/crypto/ssh" - -// GetPublicKey marshals a ssh certificate to a string. -func GetPublicKey(cert *ssh.Certificate) string { - marshaled := ssh.MarshalAuthorizedKey(cert) - // Strip trailing newline - return string(marshaled[:len(marshaled)-1]) -} diff --git a/server/util/util_test.go b/server/util/util_test.go deleted file mode 100644 index d294d86..0000000 --- a/server/util/util_test.go +++ /dev/null @@ -1,16 +0,0 @@ -package util - -import ( - "testing" - - "github.com/nsheridan/cashier/testdata" - "golang.org/x/crypto/ssh" -) - -func TestGetPublicKey(t *testing.T) { - t.Parallel() - c, _, _, _, _ := ssh.ParseAuthorizedKey(testdata.Cert) - if GetPublicKey(c.(*ssh.Certificate)) != string(testdata.Cert) { - t.Fail() - } -} -- cgit v1.2.3