diff options
Diffstat (limited to 'server/certutil')
-rw-r--r-- | server/certutil/util.go | 10 | ||||
-rw-r--r-- | server/certutil/util_test.go | 15 |
2 files changed, 25 insertions, 0 deletions
diff --git a/server/certutil/util.go b/server/certutil/util.go new file mode 100644 index 0000000..eb1900b --- /dev/null +++ b/server/certutil/util.go @@ -0,0 +1,10 @@ +package certutil + +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/certutil/util_test.go b/server/certutil/util_test.go new file mode 100644 index 0000000..abb8f10 --- /dev/null +++ b/server/certutil/util_test.go @@ -0,0 +1,15 @@ +package certutil + +import ( + "testing" + + "github.com/nsheridan/cashier/testdata" + "golang.org/x/crypto/ssh" +) + +func TestGetPublicKey(t *testing.T) { + c, _, _, _, _ := ssh.ParseAuthorizedKey(testdata.Cert) + if GetPublicKey(c.(*ssh.Certificate)) != string(testdata.Cert) { + t.Fail() + } +} |