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>
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 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 @@
   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