diff options
author | Vitaly Buka <vitalybuka@google.com> | 2015-12-16 13:45:35 -0800 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2015-12-17 00:28:21 +0000 |
commit | 483d5970e88b56442f19baea841f6af75b5a0006 (patch) | |
tree | 6826076156c2d6b6d6b7c0c38a36e3975ccbc52f /src/privet/auth_manager.cc | |
parent | 3264eca548566ffc0bddf43204537351bde6ede7 (diff) | |
download | libweave-483d5970e88b56442f19baea841f6af75b5a0006.tar.gz |
Add 'sessionId' into privet/info
Current implementation is a Unix timestamp plus counter.
BUG=26140026
Change-Id: Idfe0aa81c49e6dab5d638cbedfbeb460b70b5864
Reviewed-on: https://weave-review.googlesource.com/2010
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
Diffstat (limited to 'src/privet/auth_manager.cc')
-rw-r--r-- | src/privet/auth_manager.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/privet/auth_manager.cc b/src/privet/auth_manager.cc index 62a640f..51d7592 100644 --- a/src/privet/auth_manager.cc +++ b/src/privet/auth_manager.cc @@ -27,6 +27,12 @@ const size_t kCaveatBuffetSize = 32; const size_t kMaxMacaroonSize = 1024; const size_t kMaxPendingClaims = 10; +template <class T> +void AppendToArray(T value, std::vector<uint8_t>* array) { + auto begin = reinterpret_cast<const uint8_t*>(&value); + array->insert(array->end(), begin, begin + sizeof(value)); +} + // Returns "scope:id:time". std::string CreateTokenData(const UserInfo& user_info, const base::Time& time) { return base::IntToString(static_cast<int>(user_info.scope())) + @@ -230,5 +236,12 @@ bool AuthManager::IsValidAuthToken(const std::vector<uint8_t>& token) const { return uw_macaroon_verify_(&macaroon, secret_.data(), secret_.size()); } +std::vector<uint8_t> AuthManager::CreateSessionId() { + std::vector<uint8_t> result; + AppendToArray(Now().ToTimeT(), &result); + AppendToArray(++session_counter_, &result); + return result; +} + } // namespace privet } // namespace weave |