From e8ff7ffe8e8c25195c64950b61c6c5754bbcd3ba Mon Sep 17 00:00:00 2001 From: Niall Sheridan Date: Sun, 19 Feb 2017 00:25:42 +0000 Subject: Add grpc signer --- server/signer/signer.go | 15 +++++++++++++++ server/store/store.go | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'server') diff --git a/server/signer/signer.go b/server/signer/signer.go index 2a15849..2a8fc98 100644 --- a/server/signer/signer.go +++ b/server/signer/signer.go @@ -10,7 +10,9 @@ import ( "go4.org/wkfs" _ "go4.org/wkfs/gcs" // Register "/gcs/" as a wkfs. + "github.com/golang/protobuf/ptypes" "github.com/nsheridan/cashier/lib" + "github.com/nsheridan/cashier/proto" "github.com/nsheridan/cashier/server/config" "github.com/nsheridan/cashier/server/store" "github.com/stripe/krl" @@ -51,6 +53,19 @@ func (s *KeySigner) setPermissions(cert *ssh.Certificate) { } } +// SignUserKeyFromRPC returns a signed ssh certificate. +func (s *KeySigner) SignUserKeyFromRPC(req *proto.SignRequest, username string) (*ssh.Certificate, error) { + valid, err := ptypes.Timestamp(req.GetValidUntil()) + if err != nil { + return nil, err + } + r := &lib.SignRequest{ + Key: string(req.GetKey()), + ValidUntil: valid, + } + return s.SignUserKey(r, username) +} + // SignUserKey returns a signed ssh certificate. func (s *KeySigner) SignUserKey(req *lib.SignRequest, username string) (*ssh.Certificate, error) { pubkey, _, _, _, err := ssh.ParseAuthorizedKey([]byte(req.Key)) diff --git a/server/store/store.go b/server/store/store.go index d157fd1..cf69225 100644 --- a/server/store/store.go +++ b/server/store/store.go @@ -53,6 +53,6 @@ func parseCertificate(cert *ssh.Certificate) *CertRecord { Principals: types.StringSlice(cert.ValidPrincipals), CreatedAt: parseTime(cert.ValidAfter), Expires: parseTime(cert.ValidBefore), - Raw: lib.GetPublicKey(cert), + Raw: string(lib.GetPublicKey(cert)), } } -- cgit v1.2.3