Index: chrome/browser/local_discovery/privetv3_session.h |
diff --git a/chrome/browser/local_discovery/privetv3_session.h b/chrome/browser/local_discovery/privetv3_session.h |
index 82c44402276a42b233948f34cbd53dcaa14da11b..57b0753a092ed3be501c14fff909842a9de14a5d 100644 |
--- a/chrome/browser/local_discovery/privetv3_session.h |
+++ b/chrome/browser/local_discovery/privetv3_session.h |
@@ -12,14 +12,21 @@ |
#include "base/memory/scoped_vector.h" |
#include "base/memory/weak_ptr.h" |
#include "chrome/common/extensions/api/gcd_private.h" |
+#include "net/url_request/url_fetcher.h" |
namespace base { |
class DictionaryValue; |
} |
+namespace crypto { |
+class P224EncryptedKeyExchange; |
+} |
+ |
namespace local_discovery { |
class PrivetHTTPClient; |
+class PrivetJSONOperation; |
+class PrivetURLFetcher; |
// Manages secure communication between browser and local Privet device. |
class PrivetV3Session { |
@@ -41,27 +48,63 @@ class PrivetV3Session { |
explicit PrivetV3Session(scoped_ptr<PrivetHTTPClient> client); |
~PrivetV3Session(); |
- // Initialized session. |
+ // Initializes session. Queries /privet/info and returns supported pairing |
+ // types in callback. |
void Init(const InitCallback& callback); |
+ // Starts pairing by calling /privet/v3/pairing/start. |
void StartPairing(PairingType pairing_type, const ResultCallback& callback); |
+ // Confirms pairing code by calling /privet/v3/pairing/confirm. |
+ // TODO(vitalybuka): Call /privet/v3/pairing/auth after pairing. |
void ConfirmCode(const std::string& code, const ResultCallback& callback); |
- // Create a single /privet/v3/session/call request. |
+ // TODO(vitalybuka): Make HTTPS request to device with certificate validation. |
void SendMessage(const std::string& api, |
const base::DictionaryValue& input, |
const MessageCallback& callback); |
private: |
+ void OnInfoDone(const InitCallback& callback, |
+ Result result, |
+ const base::DictionaryValue& response); |
+ void OnPairingStartDone(const ResultCallback& callback, |
+ Result result, |
+ const base::DictionaryValue& response); |
+ void OnPairingConfirmDone(const ResultCallback& callback, |
+ Result result, |
+ const base::DictionaryValue& response); |
void RunCallback(const base::Closure& callback); |
+ void StartGetRequest(const std::string& api, const MessageCallback& callback); |
+ void StartPostRequest(const std::string& api, |
+ const base::DictionaryValue& input, |
+ const MessageCallback& callback); |
+ PrivetURLFetcher* CreateFetcher(const std::string& api, |
+ net::URLFetcher::RequestType request_type, |
+ const MessageCallback& callback); |
void DeleteFetcher(const FetcherDelegate* fetcher); |
+ // Creates instances of PrivetURLFetcher. |
scoped_ptr<PrivetHTTPClient> client_; |
- bool code_confirmed_; |
+ |
+ // Current authentication token. |
+ std::string privet_auth_token_; |
+ |
+ // ID of the session received from pairing/start. |
+ std::string session_id_; |
+ |
+ // Device commitment received from pairing/start. |
+ std::string commitment_; |
+ |
+ // Key exchange algorithm for pairing. |
+ scoped_ptr<crypto::P224EncryptedKeyExchange> spake_; |
+ |
+ // HTTPS certificate fingerprint received during pairing. |
+ std::string fingerprint_; |
+ |
+ // List of fetches to cancel when session is destroyed. |
ScopedVector<FetcherDelegate> fetchers_; |
base::WeakPtrFactory<PrivetV3Session> weak_ptr_factory_; |
- std::string privet_auth_token_; |
DISALLOW_COPY_AND_ASSIGN(PrivetV3Session); |
}; |