func NewHandlerWrapper(handler common.HTTPHandler, authCfg *resthandler.Config, s spi.Store, verifier signatureVerifier) *HandlerWrapper {  
	ah := &HandlerWrapper{
		resolver:      handler,
		handleRequest: handler.Handler(),
	}
	ah.AuthHandler = resthandler.NewAuthHandler(authCfg, handler.Path(), handler.Method(), s, verifier,
		func(actorIRI *url.URL) (bool, error) {
			logger.Debugf("[%s] Authorized actor [%s]", ah.Path(), actorIRI)
			return true, nil
		})
	return ah
}
NewHandlerWrapper returns a new 'authenticated' handler. It verifies both tokens and signatures before proceeding.
package signature
import (
	"net/http"
	"net/url"
	"github.com/trustbloc/edge-core/pkg/log"
	"github.com/trustbloc/sidetree-core-go/pkg/restapi/common"
	"github.com/trustbloc/orb/pkg/activitypub/resthandler"
	"github.com/trustbloc/orb/pkg/activitypub/store/spi"
)
var logger = log.New("handler-with-auth-restapi")
type signatureVerifier interface {
	VerifyRequest(req *http.Request) (bool, *url.URL, error)
}
type HandlerWrapper struct {
	*resthandler.AuthHandler
	handleRequest common.HTTPRequestHandler
	resolver common.HTTPHandler
}