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/signer | |
parent | 19dcff5d7245295d4508a71bb0ed2a886ada7a13 (diff) |
Add grpc signer
Diffstat (limited to 'server/signer')
-rw-r--r-- | server/signer/signer.go | 15 |
1 files changed, 15 insertions, 0 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)) |