From da1961cdf96beb4e79738d145f086008f4f47a02 Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Tue, 25 Aug 2020 16:01:16 +0300 Subject: [PATCH] [#13] services/util: Support server-side stream request verify Signed-off-by: Leonard Lyubich --- pkg/services/util/sign.go | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/pkg/services/util/sign.go b/pkg/services/util/sign.go index 28e58d8d4..5b40014b8 100644 --- a/pkg/services/util/sign.go +++ b/pkg/services/util/sign.go @@ -23,7 +23,26 @@ func NewUnarySignService(key *ecdsa.PrivateKey, handler UnaryHandler) *UnarySign } } +func (s *UnarySignService) HandleServerStreamRequest(ctx context.Context, req interface{}) (interface{}, error) { + return s.verifyAndProc(ctx, req) +} + func (s *UnarySignService) HandleUnaryRequest(ctx context.Context, req interface{}) (interface{}, error) { + // verify and process request + resp, err := s.verifyAndProc(ctx, req) + if err != nil { + return nil, err + } + + // sign the response + if err := signature.SignServiceMessage(s.key, resp); err != nil { + return nil, errors.Wrap(err, "could not sign response") + } + + return resp, nil +} + +func (s *UnarySignService) verifyAndProc(ctx context.Context, req interface{}) (interface{}, error) { // verify request signatures if err := signature.VerifyServiceMessage(req); err != nil { return nil, errors.Wrap(err, "could not verify request") @@ -35,10 +54,5 @@ func (s *UnarySignService) HandleUnaryRequest(ctx context.Context, req interface return nil, errors.Wrap(err, "could not handle request") } - // sign the response - if err := signature.SignServiceMessage(s.key, resp); err != nil { - return nil, errors.Wrap(err, "could not sign response") - } - return resp, nil }