github.com/s7techlab/cckit@v0.10.5/extensions/encryption/middleware_after.go (about) 1 package encryption 2 3 import ( 4 "github.com/s7techlab/cckit/router" 5 ) 6 7 func encryptIfEncodeKeyExists(encryptionRequired bool) router.MiddlewareFunc { 8 return func(pre router.HandlerFunc, pos ...int) router.HandlerFunc { 9 return func(ctx router.Context) (interface{}, error) { 10 res, err := pre(ctx) 11 12 if err != nil || ctx.Handler().Type != router.MethodInvoke { 13 return res, err 14 } 15 if _, err = KeyFromTransient(ctx); err != nil { 16 if err == ErrKeyNotDefinedInTransientMap && !encryptionRequired { 17 return res, nil 18 } 19 return nil, err 20 } 21 22 return EncryptWithTransientKey(ctx, res) 23 } 24 } 25 } 26 27 // EncryptInvokeResponse returns middleware function for encrypt chaincode invocation response 28 func EncryptInvokeResponse() router.MiddlewareFunc { 29 return encryptIfEncodeKeyExists(true) 30 } 31 32 // EncryptInvokeResponseIfKeyProvided returns middleware function for encrypt chaincode invocation response if 33 // encryption key provided in transient map 34 func EncryptInvokeResponseIfKeyProvided() router.MiddlewareFunc { 35 return encryptIfEncodeKeyExists(false) 36 }