// Matrix Construct // // Copyright (C) Matrix Construct Developers, Authors & Contributors // Copyright (C) 2016-2018 Jason Volk // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice is present in all copies. The // full license for this software is available in the LICENSE file. #pragma once #define HAVE_IRCD_M_DEVICE_H namespace ircd::m { struct device; struct device_keys; } struct ircd::m::device_keys :json::tuple < /// Required. The ID of the user the device belongs to. Must match the /// user ID used when logging in. json::property, /// Required. The ID of the device these keys belong to. Must match the /// device ID used when logging in. json::property, /// Required. The encryption algorithms supported by this device. json::property, /// Required. Public identity keys. The names of the properties should /// be in the format :. The keys themselves should /// be encoded as specified by the key algorithm. json::property, /// Required. Signatures for the device key object. A map from user ID, to /// a map from : to the signature. The signature is /// calculated using the process described at Signing JSON. json::property, /// Required. Signatures for the device key object. A map from user ID, to /// a map from : to the signature. The signature is /// calculated using the process described at Signing JSON. json::property, /// Additional data added to the device key information by intermediate /// servers, and not covered by the signatures. json::property > { using super_type::tuple; }; struct ircd::m::device :json::tuple < /// (c2s / s2s) Required. The device ID. json::property, /// (c2s) Display name set by the user for this device. Absent if no /// name has been set. json::property, /// (c2s) The IP address where this device was last seen. (May be a few /// minutes out of date, for efficiency reasons). json::property, /// (c2s) The timestamp (in milliseconds since the unix epoch) when this /// devices was last seen. (May be a few minutes out of date, for /// efficiency reasons). json::property, /// (s2s) Required. Identity keys for the device. json::property, /// (s2s) Optional display name for the device. json::property > { using super_type::tuple; };