aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNiall Sheridan <nsheridan@gmail.com>2017-01-05 23:28:26 +0000
committerNiall Sheridan <nsheridan@gmail.com>2017-01-05 23:28:26 +0000
commit9e9a7d50970f1424245d88169de82988fd57e112 (patch)
tree25aca2f5e18fe3ff454af34d5d75f8c5204d81fb /lib
parent8066efd45861e7c024fc1daabc6d002266a527e7 (diff)
Move GetPublicKey to the shared `lib` package
Diffstat (limited to 'lib')
-rw-r--r--lib/proto.go (renamed from lib/const.go)6
-rw-r--r--lib/util.go10
-rw-r--r--lib/util_test.go16
3 files changed, 28 insertions, 4 deletions
diff --git a/lib/const.go b/lib/proto.go
index 1ba2749..f3d7115 100644
--- a/lib/const.go
+++ b/lib/proto.go
@@ -9,9 +9,7 @@ type SignRequest struct {
}
// 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"`
+ 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()
+ }
+}