// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_CRYPTAUTH_REMOTE_DEVICE_H_ #define COMPONENTS_CRYPTAUTH_REMOTE_DEVICE_H_ #include #include #include "components/cryptauth/proto/cryptauth_api.pb.h" namespace cryptauth { struct RemoteDevice { public: std::string user_id; std::string name; std::string public_key; std::string bluetooth_address; std::string persistent_symmetric_key; bool unlock_key; bool supports_mobile_hotspot; int64_t last_update_time_millis; // Note: To save space, the BeaconSeeds may not necessarily be included in // this object. bool are_beacon_seeds_loaded = false; std::vector beacon_seeds; RemoteDevice(); RemoteDevice(const std::string& user_id, const std::string& name, const std::string& public_key, const std::string& bluetooth_address, const std::string& persistent_symmetric_key, bool unlock_key, bool supports_mobile_hotspot, int64_t last_update_time_millis); RemoteDevice(const RemoteDevice& other); ~RemoteDevice(); // Loads a vector of BeaconSeeds for the RemoteDevice. void LoadBeaconSeeds(const std::vector& beacon_seeds); // Returns a unique ID for the device. std::string GetDeviceId() const; // Returns a shortened device ID for the purpose of concise logging (device // IDs are often so long that logs are difficult to read). Note that this // ID is not guaranteed to be unique, so it should only be used for log. std::string GetTruncatedDeviceIdForLogs() const; bool operator==(const RemoteDevice& other) const; // Compares devices via their public keys. Note that this function is // necessary in order to use |RemoteDevice| as a key of a std::map. bool operator<(const RemoteDevice& other) const; // Generates the device ID for a device given its public key. static std::string GenerateDeviceId(const std::string& public_key); // Derives the public key that was used to generate the given device ID; // returns empty string if |device_id| is not a valid device ID. static std::string DerivePublicKey(const std::string& device_id); // Static method for truncated device ID for logs. static std::string TruncateDeviceIdForLogs(const std::string& full_id); }; typedef std::vector RemoteDeviceList; } // namespace cryptauth #endif // COMPONENTS_CRYPTAUTH_REMOTE_DEVICE_H_