| Index: net/http/http_mac_signature.cc
|
| ===================================================================
|
| --- net/http/http_mac_signature.cc (revision 85309)
|
| +++ net/http/http_mac_signature.cc (working copy)
|
| @@ -8,7 +8,6 @@
|
| #include "base/rand_util.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/string_util.h"
|
| -#include "base/time.h"
|
| #include "crypto/hmac.h"
|
|
|
| namespace net {
|
| @@ -51,11 +50,13 @@
|
| }
|
|
|
| bool HttpMacSignature::AddStateInfo(const std::string& id,
|
| + const base::Time& creation_date,
|
| const std::string& mac_key,
|
| const std::string& mac_algorithm) {
|
| DCHECK(id_.empty());
|
|
|
| if (!IsPlainString(id) || id.empty() ||
|
| + creation_date.is_null() ||
|
| mac_key.empty() ||
|
| mac_algorithm.empty()) {
|
| return false;
|
| @@ -69,6 +70,7 @@
|
| return false;
|
|
|
| id_ = id;
|
| + creation_date_ = creation_date;
|
| mac_key_ = mac_key;
|
| return true;
|
| }
|
| @@ -97,33 +99,32 @@
|
| DCHECK(!id_.empty()) << "Call AddStateInfo first.";
|
| DCHECK(!method_.empty()) << "Call AddHttpInfo first.";
|
|
|
| - std::string timestamp = base::Int64ToString((base::Time::Now() -
|
| - base::Time::UnixEpoch()).InSeconds());
|
| + std::string age = base::Int64ToString(
|
| + (base::Time::Now() - creation_date_).InSeconds());
|
| std::string nonce = GenerateNonce();
|
|
|
| - return GenerateHeaderString(timestamp, nonce);
|
| + return GenerateHeaderString(age, nonce);
|
| }
|
|
|
| -std::string HttpMacSignature::GenerateHeaderString(
|
| - const std::string& timestamp,
|
| - const std::string& nonce) {
|
| - std::string mac = GenerateMAC(timestamp, nonce);
|
| +std::string HttpMacSignature::GenerateHeaderString(const std::string& age,
|
| + const std::string& nonce) {
|
| + std::string mac = GenerateMAC(age, nonce);
|
|
|
| - DCHECK(IsPlainString(timestamp));
|
| + DCHECK(IsPlainString(age));
|
| DCHECK(IsPlainString(nonce));
|
| DCHECK(IsPlainString(mac));
|
|
|
| return "MAC id=\"" + id_ +
|
| - "\", nonce=\"" + timestamp + ":" + nonce +
|
| + "\", nonce=\"" + age + ":" + nonce +
|
| "\", mac=\"" + mac + "\"";
|
| }
|
|
|
| std::string HttpMacSignature::GenerateNormalizedRequest(
|
| - const std::string& timestamp,
|
| + const std::string& age,
|
| const std::string& nonce) {
|
| static const std::string kNewLine = "\n";
|
|
|
| - std::string normalized_request = timestamp + ":" + nonce + kNewLine;
|
| + std::string normalized_request = age + ":" + nonce + kNewLine;
|
| normalized_request += method_ + kNewLine;
|
| normalized_request += request_uri_ + kNewLine;
|
| normalized_request += host_ + kNewLine;
|
| @@ -134,9 +135,9 @@
|
| return normalized_request;
|
| }
|
|
|
| -std::string HttpMacSignature::GenerateMAC(const std::string& timestamp,
|
| +std::string HttpMacSignature::GenerateMAC(const std::string& age,
|
| const std::string& nonce) {
|
| - std::string request = GenerateNormalizedRequest(timestamp, nonce);
|
| + std::string request = GenerateNormalizedRequest(age, nonce);
|
|
|
| crypto::HMAC hmac(mac_algorithm_);
|
| hmac.Init(mac_key_);
|
|
|