diff options
Diffstat (limited to 'server/util')
-rw-r--r-- | server/util/util.go | 10 | ||||
-rw-r--r-- | server/util/util_test.go | 16 |
2 files changed, 26 insertions, 0 deletions
diff --git a/server/util/util.go b/server/util/util.go new file mode 100644 index 0000000..10f5eca --- /dev/null +++ b/server/util/util.go @@ -0,0 +1,10 @@ +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 new file mode 100644 index 0000000..d294d86 --- /dev/null +++ b/server/util/util_test.go @@ -0,0 +1,16 @@ +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() + } +} |