diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2017-02-19 00:25:42 +0000 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2017-02-19 00:43:10 +0000 |
commit | e8ff7ffe8e8c25195c64950b61c6c5754bbcd3ba (patch) | |
tree | 52dd38d68c07991bbbb6b8757b0769f4c5fab20e /server | |
parent | 19dcff5d7245295d4508a71bb0ed2a886ada7a13 (diff) |
Add grpc signer
Diffstat (limited to 'server')
-rw-r--r-- | server/signer/signer.go | 15 | ||||
-rw-r--r-- | server/store/store.go | 2 |
2 files changed, 16 insertions, 1 deletions
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)), } } |