Extracted function to create token from secret and caveats Change-Id: I9c9d2c6ee69b395091c4d17527439ed80279cf88 Reviewed-on: https://weave-review.googlesource.com/2082 Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/src/privet/auth_manager.cc b/src/privet/auth_manager.cc index 678faf7..bb4c3c4 100644 --- a/src/privet/auth_manager.cc +++ b/src/privet/auth_manager.cc
@@ -90,6 +90,22 @@ return claimer > curret || claimer == RootClientTokenOwner::kCloud; } +std::vector<uint8_t> CreateMacaroonToken( + const std::vector<uint8_t>& secret, + const std::vector<UwMacaroonCaveat>& caveats) { + CHECK_EQ(kSha256OutputSize, secret.size()); + UwMacaroon macaroon{}; + CHECK(uw_macaroon_new_from_root_key_(&macaroon, secret.data(), secret.size(), + caveats.data(), caveats.size())); + + std::vector<uint8_t> token(kMaxMacaroonSize); + size_t len = 0; + CHECK(uw_macaroon_dump_(&macaroon, token.data(), token.size(), &len)); + token.resize(len); + + return token; +} + } // namespace AuthManager::AuthManager(Config* config, @@ -146,6 +162,7 @@ std::vector<uint8_t> data{data_str.begin(), data_str.end()}; std::vector<uint8_t> hash{HmacSha256(access_secret_, data)}; hash.insert(hash.end(), data.begin(), data.end()); + return hash; } @@ -235,22 +252,10 @@ Caveat scope{kUwMacaroonCaveatTypeScope, kUwMacaroonCaveatScopeTypeOwner}; Caveat issued{kUwMacaroonCaveatTypeIssued, static_cast<uint32_t>(Now().ToTimeT())}; - - UwMacaroonCaveat caveats[] = { - scope.GetCaveat(), issued.GetCaveat(), - }; - - CHECK_EQ(kSha256OutputSize, auth_secret_.size()); - UwMacaroon macaroon{}; - CHECK(uw_macaroon_new_from_root_key_(&macaroon, auth_secret_.data(), - auth_secret_.size(), caveats, - arraysize(caveats))); - - std::vector<uint8_t> token(kMaxMacaroonSize); - size_t len = 0; - CHECK(uw_macaroon_dump_(&macaroon, token.data(), token.size(), &len)); - token.resize(len); - return token; + return CreateMacaroonToken(auth_secret_, + { + scope.GetCaveat(), issued.GetCaveat(), + }); } base::Time AuthManager::Now() const {