Replace expirationTimeoutSec with expirationTime expirationTimeoutSec was relative time. expirationTime is absolute j2000 time. BUG: 27313743 Change-Id: I9a6d04cf5c9f623a36e815dc2466cf93d9a6a608 Reviewed-on: https://weave-review.googlesource.com/2711 Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/src/access_api_handler.cc b/src/access_api_handler.cc index 9d97d9e..fc7b97b 100644 --- a/src/access_api_handler.cc +++ b/src/access_api_handler.cc
@@ -11,6 +11,7 @@ #include "src/commands/schema_constants.h" #include "src/data_encoding.h" #include "src/json_error_codes.h" +#include "src/utils.h" namespace weave { @@ -21,7 +22,7 @@ const char kStateCapacity[] = "_accessRevocationList.capacity"; const char kUserId[] = "userId"; const char kApplicationId[] = "applicationId"; -const char kExpirationTimeout[] = "expirationTimeoutSec"; +const char kExpirationTime[] = "expirationTime"; const char kBlackList[] = "revocationListEntries"; bool GetIds(const base::DictionaryValue& parameters, @@ -64,7 +65,7 @@ "applicationId": { "type": "string" }, - "expirationTimeoutSec": { + "expirationTime": { "type": "integer" } } @@ -83,6 +84,9 @@ }, "applicationId": { "type": "string" + }, + "expirationTime": { + "type": "integer" } }, "additionalProperties": false @@ -128,13 +132,15 @@ return; } - int timeout_sec = 0; - parameters.GetInteger(kExpirationTimeout, &timeout_sec); + int time_j2k = 0; + if (!parameters.GetInteger(kExpirationTime, &time_j2k)) { + Error::AddToPrintf(&error, FROM_HERE, errors::commands::kInvalidPropValue, + "Expiration time is missing"); + command->Abort(error.get(), nullptr); + return; + } - base::Time expiration = - base::Time::Now() + base::TimeDelta::FromSeconds(timeout_sec); - - manager_->Block(user_id, app_id, expiration, + manager_->Block(user_id, app_id, FromJ2000Time(time_j2k), base::Bind(&AccessApiHandler::OnCommandDone, weak_ptr_factory_.GetWeakPtr(), cmd)); }
diff --git a/src/access_api_handler_unittest.cc b/src/access_api_handler_unittest.cc index 25dd4da..79f2d49 100644 --- a/src/access_api_handler_unittest.cc +++ b/src/access_api_handler_unittest.cc
@@ -104,7 +104,7 @@ "applicationId": { "type": "string" }, - "expirationTimeoutSec": { + "expirationTime": { "type": "integer" } } @@ -123,6 +123,9 @@ }, "applicationId": { "type": "string" + }, + "expirationTime": { + "type": "integer" } }, "additionalProperties": false @@ -159,7 +162,7 @@ 'parameters': { 'userId': 'AQID', 'applicationId': 'AwQF', - 'expirationTimeoutSec': 1234 + 'expirationTime': 1234 } })");
diff --git a/src/privet/auth_manager.cc b/src/privet/auth_manager.cc index 795dafa..90cf62b 100644 --- a/src/privet/auth_manager.cc +++ b/src/privet/auth_manager.cc
@@ -17,6 +17,7 @@ #include "src/privet/constants.h" #include "src/privet/openssl_utils.h" #include "src/string_utils.h" +#include "src/utils.h" extern "C" { #include "third_party/libuweave/src/macaroon.h" @@ -28,20 +29,11 @@ namespace { -const time_t kJ2000ToTimeT = 946684800; const size_t kMaxMacaroonSize = 1024; const size_t kMaxPendingClaims = 10; const char kInvalidTokenError[] = "invalid_token"; const int kSessionIdTtlMinutes = 1; -uint32_t ToJ2000Time(const base::Time& time) { - return std::max(time.ToTimeT(), kJ2000ToTimeT) - kJ2000ToTimeT; -} - -base::Time FromJ2000Time(uint32_t time) { - return base::Time::FromTimeT(time + kJ2000ToTimeT); -} - template <class T> void AppendToArray(T value, std::vector<uint8_t>* array) { auto begin = reinterpret_cast<const uint8_t*>(&value);
diff --git a/src/utils.cc b/src/utils.cc index 28828d7..5d1c3e3 100644 --- a/src/utils.cc +++ b/src/utils.cc
@@ -26,6 +26,8 @@ const char kErrorCodeKey[] = "code"; const char kErrorMessageKey[] = "message"; +const time_t kJ2000ToTimeT = 946684800; + } // anonymous namespace namespace errors { @@ -69,4 +71,12 @@ return output; } +uint32_t ToJ2000Time(const base::Time& time) { + return std::max(time.ToTimeT(), kJ2000ToTimeT) - kJ2000ToTimeT; +} + +base::Time FromJ2000Time(uint32_t time) { + return base::Time::FromTimeT(time + kJ2000ToTimeT); +} + } // namespace weave
diff --git a/src/utils.h b/src/utils.h index 99d7bda..40c76b4 100644 --- a/src/utils.h +++ b/src/utils.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include <base/time/time.h> #include <base/values.h> #include <weave/error.h> @@ -31,6 +32,9 @@ std::unique_ptr<base::DictionaryValue> ErrorInfoToJson(const Error& error); +uint32_t ToJ2000Time(const base::Time& time); +base::Time FromJ2000Time(uint32_t time); + } // namespace weave #endif // LIBWEAVE_SRC_UTILS_H_