From d45d854926486e5f2655e1447be537f8fbdcac77 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 5 Nov 2011 23:30:46 +0900 Subject: [PATCH] Rewritten base64::decode and base64::encode --- src/HttpRequest.cc | 20 +-- src/HttpResponse.cc | 2 +- src/HttpServer.cc | 3 +- src/Makefile.am | 2 +- src/RpcMethodImpl.cc | 8 +- src/XmlRpcRequestParserStateImpl.cc | 3 +- src/base64.cc | 208 ---------------------------- src/base64.h | 184 +++++++++++++++++------- src/json.cc | 4 +- test/Base64Test.cc | 153 +++++++------------- test/JsonTest.cc | 6 +- 11 files changed, 209 insertions(+), 384 deletions(-) delete mode 100644 src/base64.cc diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index a23197fb..731952ea 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -219,10 +219,10 @@ std::string HttpRequest::createRequest() builtinHds.push_back(getProxyAuthString()); } if(authConfig_) { - builtinHds.push_back - (std::make_pair("Authorization:", - strconcat("Basic ", - Base64::encode(authConfig_->getAuthText())))); + std::string authText = authConfig_->getAuthText(); + std::string val = "Basic "; + val += base64::encode(authText.begin(), authText.end()); + builtinHds.push_back(std::make_pair("Authorization:", val)); } if(getPreviousURI().size()) { builtinHds.push_back(std::make_pair("Referer:", getPreviousURI())); @@ -298,12 +298,12 @@ std::string HttpRequest::createProxyRequest() const std::pair HttpRequest::getProxyAuthString() const { - return std::make_pair - ("Proxy-Authorization:", - strconcat("Basic ", - Base64::encode(strconcat(proxyRequest_->getUsername(), - ":", - proxyRequest_->getPassword())))); + std::string authText = proxyRequest_->getUsername(); + authText += ':'; + authText += proxyRequest_->getPassword(); + std::string val = "Basic "; + val += base64::encode(authText.begin(), authText.end()); + return std::make_pair("Proxy-Authorization:", val); } void HttpRequest::enableContentEncoding() diff --git a/src/HttpResponse.cc b/src/HttpResponse.cc index 6c67bc4c..59438d1a 100644 --- a/src/HttpResponse.cc +++ b/src/HttpResponse.cc @@ -416,7 +416,7 @@ void HttpResponse::getDigest(std::vector& result) const break; } util::lowercase(hashType); - digest = Base64::decode(digest); + digest = base64::decode(digest.begin(), digest.end()); if(!MessageDigest::supports(hashType) || MessageDigest::getDigestLength(hashType) != digest.size()) { continue; diff --git a/src/HttpServer.cc b/src/HttpServer.cc index 67e72993..d55c1e34 100644 --- a/src/HttpServer.cc +++ b/src/HttpServer.cc @@ -225,8 +225,7 @@ bool HttpServer::authenticate() A2_AUTHMETHOD, vend(A2_AUTHMETHOD)-1)) { return false; } - std::string userpass = Base64::decode(std::string(p.second.first, - p.second.second)); + std::string userpass = base64::decode(p.second.first, p.second.second); std::pair up; util::divide(up, userpass.begin(), userpass.end(), ':'); return util::streq(up.first.first, up.first.second, diff --git a/src/Makefile.am b/src/Makefile.am index 34b91058..8549b622 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -48,7 +48,7 @@ SRCS = Socket.h\ DefaultDiskWriterFactory.cc DefaultDiskWriterFactory.h\ File.cc File.h\ Option.cc Option.h\ - base64.cc base64.h\ + base64.h\ base32.cc base32.h\ LogFactory.cc LogFactory.h\ TimerA2.cc TimerA2.h\ diff --git a/src/RpcMethodImpl.cc b/src/RpcMethodImpl.cc index c152b8df..73453b6f 100644 --- a/src/RpcMethodImpl.cc +++ b/src/RpcMethodImpl.cc @@ -271,7 +271,9 @@ SharedHandle AddTorrentRpcMethod::process SharedHandle tempTorrentParam; if(req.jsonRpc) { - tempTorrentParam = String::g(Base64::decode(torrentParam->s())); + tempTorrentParam = String::g + (base64::decode(torrentParam->s().begin(), + torrentParam->s().end())); torrentParam = tempTorrentParam.get(); } std::vector uris; @@ -317,7 +319,9 @@ SharedHandle AddMetalinkRpcMethod::process SharedHandle tempMetalinkParam; if(req.jsonRpc) { - tempMetalinkParam = String::g(Base64::decode(metalinkParam->s())); + tempMetalinkParam = String::g + (base64::decode(metalinkParam->s().begin(), + metalinkParam->s().end())); metalinkParam = tempMetalinkParam.get(); } SharedHandle