summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorrsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-30 05:18:01 +0000
committerrsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-30 05:18:01 +0000
commit6df5b9e3d5890b559b903c74b57cf7ab7c1b6310 (patch)
tree79b1d83dc536e153169387337c863e2a4394b555 /net
parent80ec9ba8e66350c61b8e1911f54f9d9228b58d63 (diff)
downloadchromium_src-6df5b9e3d5890b559b903c74b57cf7ab7c1b6310.zip
chromium_src-6df5b9e3d5890b559b903c74b57cf7ab7c1b6310.tar.gz
chromium_src-6df5b9e3d5890b559b903c74b57cf7ab7c1b6310.tar.bz2
Add WARN_UNUSED_RESULT to crypto/hmac.h
BUG=none TEST=none Review URL: http://codereview.chromium.org/7522014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94826 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/http/http_mac_signature.cc55
-rw-r--r--net/http/http_mac_signature.h16
-rw-r--r--net/http/http_mac_signature_unittest.cc9
-rw-r--r--net/url_request/url_request_http_job.cc8
4 files changed, 58 insertions, 30 deletions
diff --git a/net/http/http_mac_signature.cc b/net/http/http_mac_signature.cc
index 32f1e0c..1e3ea95 100644
--- a/net/http/http_mac_signature.cc
+++ b/net/http/http_mac_signature.cc
@@ -95,28 +95,38 @@ bool HttpMacSignature::AddHttpInfo(const std::string& method,
return true;
}
-std::string HttpMacSignature::GenerateAuthorizationHeader() {
- DCHECK(!id_.empty()) << "Call AddStateInfo first.";
- DCHECK(!method_.empty()) << "Call AddHttpInfo first.";
+bool HttpMacSignature::GenerateAuthorizationHeader(std::string* header) {
+ if (id_.empty()) {
+ NOTREACHED() << "Call AddStateInfo first.";
+ return false;
+ }
+ if (method_.empty()) {
+ NOTREACHED() << "Call AddHttpInfo first.";
+ return false;
+ }
std::string age = base::Int64ToString(
(base::Time::Now() - creation_date_).InSeconds());
std::string nonce = GenerateNonce();
- return GenerateHeaderString(age, nonce);
+ return GenerateHeaderString(age, nonce, header);
}
-std::string HttpMacSignature::GenerateHeaderString(const std::string& age,
- const std::string& nonce) {
- std::string mac = GenerateMAC(age, nonce);
+bool HttpMacSignature::GenerateHeaderString(const std::string& age,
+ const std::string& nonce,
+ std::string* header) {
+ std::string mac;
+ if (!GenerateMAC(age, nonce, &mac))
+ return false;
DCHECK(IsPlainString(age));
DCHECK(IsPlainString(nonce));
DCHECK(IsPlainString(mac));
- return "MAC id=\"" + id_ +
+ *header = "MAC id=\"" + id_ +
"\", nonce=\"" + age + ":" + nonce +
"\", mac=\"" + mac + "\"";
+ return true;
}
std::string HttpMacSignature::GenerateNormalizedRequest(
@@ -135,25 +145,34 @@ std::string HttpMacSignature::GenerateNormalizedRequest(
return normalized_request;
}
-std::string HttpMacSignature::GenerateMAC(const std::string& age,
- const std::string& nonce) {
+bool HttpMacSignature::GenerateMAC(const std::string& age,
+ const std::string& nonce,
+ std::string* mac) {
std::string request = GenerateNormalizedRequest(age, nonce);
crypto::HMAC hmac(mac_algorithm_);
- hmac.Init(mac_key_);
+ if (!hmac.Init(mac_key_)) {
+ NOTREACHED();
+ return false;
+ }
std::string signature;
size_t length = hmac.DigestLength();
char* buffer = WriteInto(&signature, length);
- bool result = hmac.Sign(request,
- reinterpret_cast<unsigned char*>(buffer),
- length);
- DCHECK(result);
+ if (!hmac.Sign(request, reinterpret_cast<unsigned char*>(buffer),
+ length)) {
+ NOTREACHED();
+ return false;
+ }
std::string encoded_signature;
- result = base::Base64Encode(signature, &encoded_signature);
- DCHECK(result);
- return encoded_signature;
+ if (!base::Base64Encode(signature, &encoded_signature)) {
+ NOTREACHED();
+ return false;
+ }
+
+ mac->swap(encoded_signature);
+ return true;
}
} // namespace net
diff --git a/net/http/http_mac_signature.h b/net/http/http_mac_signature.h
index 00191e1..7a1e971 100644
--- a/net/http/http_mac_signature.h
+++ b/net/http/http_mac_signature.h
@@ -39,20 +39,24 @@ class NET_TEST HttpMacSignature {
const std::string& host,
int port);
- // Returns the value of the Authorization header for use in an HTTP request.
- std::string GenerateAuthorizationHeader();
+ // Generates the Authorization header for use in an HTTP request. If
+ // successfully generated, returns true and stores the resultant header in
+ // |*header|.
+ bool GenerateAuthorizationHeader(std::string* header);
private:
FRIEND_TEST_ALL_PREFIXES(HttpMacSignatureTest, GenerateHeaderString);
FRIEND_TEST_ALL_PREFIXES(HttpMacSignatureTest, GenerateNormalizedRequest);
FRIEND_TEST_ALL_PREFIXES(HttpMacSignatureTest, GenerateMAC);
- std::string GenerateHeaderString(const std::string& age,
- const std::string& nonce);
+ bool GenerateHeaderString(const std::string& age,
+ const std::string& nonce,
+ std::string* header);
std::string GenerateNormalizedRequest(const std::string& age,
const std::string& nonce);
- std::string GenerateMAC(const std::string& age,
- const std::string& nonce);
+ bool GenerateMAC(const std::string& age,
+ const std::string& nonce,
+ std::string* mac);
std::string id_;
base::Time creation_date_;
diff --git a/net/http/http_mac_signature_unittest.cc b/net/http/http_mac_signature_unittest.cc
index e0c6be2..74064dd 100644
--- a/net/http/http_mac_signature_unittest.cc
+++ b/net/http/http_mac_signature_unittest.cc
@@ -55,10 +55,12 @@ TEST(HttpMacSignatureTest, GenerateHeaderString) {
std::string age = "239034";
std::string nonce = "mn4302j0n+32r2/f3r=";
+ std::string header_string;
+ EXPECT_TRUE(signature.GenerateHeaderString(age, nonce, &header_string));
EXPECT_EQ("MAC id=\"dfoi30j0qnf\", "
"nonce=\"239034:mn4302j0n+32r2/f3r=\", "
"mac=\"GrkHtPKzB1m1dCHfa7OCWOw6EQ==\"",
- signature.GenerateHeaderString(age, nonce));
+ header_string);
}
@@ -100,7 +102,8 @@ TEST(HttpMacSignatureTest, GenerateMAC) {
std::string age = "239034";
std::string nonce = "mn4302j0n+32r2/f3r=";
- EXPECT_EQ("GrkHtPKzB1m1dCHfa7OCWOw6EQ==",
- signature.GenerateMAC(age, nonce));
+ std::string mac;
+ EXPECT_TRUE(signature.GenerateMAC(age, nonce, &mac));
+ EXPECT_EQ("GrkHtPKzB1m1dCHfa7OCWOw6EQ==", mac);
}
}
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index 7e989a8..1315472 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -75,9 +75,11 @@ void AddAuthorizationHeader(
}
if (!signature.AddHttpInfo(method, request_uri, host, port))
continue;
- request_info->extra_headers.SetHeader(
- HttpRequestHeaders::kAuthorization,
- signature.GenerateAuthorizationHeader());
+ std::string authorization_header;
+ if (!signature.GenerateAuthorizationHeader(&authorization_header))
+ continue;
+ request_info->extra_headers.SetHeader(HttpRequestHeaders::kAuthorization,
+ authorization_header);
return; // Only add the first valid header.
}
}