public AuthorizationResult Authorize(HttpRequestBase request)
        {
            var requestData = new AuthorizeRequestData(request.Form);

            if (!VerifyDataIsIntact(requestData))
            {
                return(AuthorizationResult.MissingData);
            }

            if (!VerifyTimestamp(requestData.Timestamp))
            {
                return(AuthorizationResult.Expired);
            }

            var consumer = _consumerRepository.GetConsumerByPublicKey(requestData.PublicKey);

            if (consumer == null)
            {
                return(AuthorizationResult.NonExistantConsumer);
            }

            if (!VerifySignature(consumer.PrivateKey, requestData))
            {
                return(AuthorizationResult.BadSignature);
            }

            return(AuthorizationResult.Success);
        }