Call ConfirmAuthToken when upload is done ConfirmAuthToken will set secret used to generate provided token as primary. BUG=25766813 Change-Id: Ib00be7d1a64db078835c78e51d7a19c4780f3a06 Reviewed-on: https://weave-review.googlesource.com/1933 Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/src/device_registration_info.cc b/src/device_registration_info.cc index f437b34..ac4ad4e 100644 --- a/src/device_registration_info.cc +++ b/src/device_registration_info.cc
@@ -936,36 +936,33 @@ auth_info_update_inprogress_ = true; std::string id = GetSettings().device_id; - std::string token = Base64Encode(auth_manager_->ClaimRootClientAuthToken()); + std::vector<uint8_t> token = auth_manager_->ClaimRootClientAuthToken(); + std::string token_base64 = Base64Encode(token); std::string fingerprint = Base64Encode(auth_manager_->GetCertificateFingerprint()); std::unique_ptr<base::DictionaryValue> auth = - BuildDeviceLocalAuth(id, token, fingerprint); + BuildDeviceLocalAuth(id, token_base64, fingerprint); // TODO(vitalybuka): Remove args from URL when server is ready. std::string url = GetDeviceURL("upsertLocalAuthInfo", {{"localid", id}, - {"clienttoken", token}, + {"clienttoken", token_base64}, {"certfingerprint", fingerprint}}); - DoCloudRequest( - HttpClient::Method::kPost, url, auth.get(), - base::Bind(&DeviceRegistrationInfo::OnSendAuthInfoDone, AsWeakPtr())); + DoCloudRequest(HttpClient::Method::kPost, url, auth.get(), + base::Bind(&DeviceRegistrationInfo::OnSendAuthInfoDone, + AsWeakPtr(), token)); } void DeviceRegistrationInfo::OnSendAuthInfoDone( + const std::vector<uint8_t>& token, const base::DictionaryValue& body, ErrorPtr error) { CHECK(auth_info_update_inprogress_); auth_info_update_inprogress_ = false; - if (!error) { - // TODO(vitalybuka): Enable this when we start uploading real data. - // Config::Transaction change{config_.get()}; - // change.set_local_auth_info_changed(false); - // change.Commit(); + if (!error && auth_manager_->ConfirmAuthToken(token)) return; - } task_runner_->PostDelayedTask( FROM_HERE, base::Bind(&DeviceRegistrationInfo::SendAuthInfo, AsWeakPtr()),
diff --git a/src/device_registration_info.h b/src/device_registration_info.h index 04fb7b6..4a1c925 100644 --- a/src/device_registration_info.h +++ b/src/device_registration_info.h
@@ -202,7 +202,9 @@ void OnUpdateDeviceResourceError(ErrorPtr error); void SendAuthInfo(); - void OnSendAuthInfoDone(const base::DictionaryValue& body, ErrorPtr error); + void OnSendAuthInfoDone(const std::vector<uint8_t>& token, + const base::DictionaryValue& body, + ErrorPtr error); // Callback from GetDeviceInfo() to retrieve the device resource timestamp // and retry UpdateDeviceResource() call.