void HttpDataProcessor::verifyResponse(const IHttpResponse& response) { if (response.getStatusCode() != 200) { throw TransportException(boost::format("Invalid response code %1%") % response.getStatusCode()); } SharedBody rawResponse = response.getBody(); const std::string& signature = response.getHeaderField("X-SIGNATURE"); boost::scoped_array<std::uint8_t> decodedSignature(new std::uint8_t[signature.length() / 3 * 4]); size_t sigLength = Botan::base64_decode(decodedSignature.get(), signature); if (!encDec_->verifySignature(rawResponse.first.get(), rawResponse.second, decodedSignature.get(), sigLength)) { throw TransportException("Failed to verify signature"); } }
virtual std::string retrieveResponse(const IHttpResponse& response) { if (response.getStatusCode() != 200) { throw TransportException(boost::format("Invalid response code %1%") % response.getStatusCode()); } return getHttpDataProcessor()->retrieveOperationResponse(response); }
void HttpClient::checkError(const boost::system::error_code& code) { if (code && code != boost::asio::error::eof) { if (sock_.is_open()) { doSocketClose(); } throw TransportException(code); } }