diff options
Diffstat (limited to 'lib/csapi/definitions/device_keys.h')
-rw-r--r-- | lib/csapi/definitions/device_keys.h | 73 |
1 files changed, 43 insertions, 30 deletions
diff --git a/lib/csapi/definitions/device_keys.h b/lib/csapi/definitions/device_keys.h index 8ebe1125..3065f218 100644 --- a/lib/csapi/definitions/device_keys.h +++ b/lib/csapi/definitions/device_keys.h @@ -6,38 +6,51 @@ #include "converters.h" -#include <QtCore/QHash> +namespace Quotient { +/// Device identity keys +struct DeviceKeys { + /// The ID of the user the device belongs to. Must match the user ID used + /// when logging in. + QString userId; -namespace QMatrixClient -{ - // Data structures + /// The ID of the device these keys belong to. Must match the device ID used + /// when logging in. + QString deviceId; - /// Device identity keys - struct DeviceKeys + /// The encryption algorithms supported by this device. + QStringList algorithms; + + /// Public identity keys. The names of the properties should be in the + /// format ``<algorithm>:<device_id>``. The keys themselves should be + /// encoded as specified by the key algorithm. + QHash<QString, QString> keys; + + /// Signatures for the device key object. A map from user ID, to a map from + /// ``<algorithm>:<device_id>`` to the signature. + /// + /// The signature is calculated using the process described at `Signing + /// JSON`_. + QHash<QString, QHash<QString, QString>> signatures; +}; + +template <> +struct JsonObjectConverter<DeviceKeys> { + static void dumpTo(QJsonObject& jo, const DeviceKeys& pod) { - /// The ID of the user the device belongs to. Must match the user ID used - /// when logging in. - QString userId; - /// The ID of the device these keys belong to. Must match the device ID used - /// when logging in. - QString deviceId; - /// The encryption algorithms supported by this device. - QStringList algorithms; - /// Public identity keys. The names of the properties should be in the - /// format ``<algorithm>:<device_id>``. The keys themselves should be - /// encoded as specified by the key algorithm. - QHash<QString, QString> keys; - /// Signatures for the device key object. A map from user ID, to a map from - /// ``<algorithm>:<device_id>`` to the signature. - /// - /// The signature is calculated using the process described at `Signing - /// JSON`_. - QHash<QString, QHash<QString, QString>> signatures; - }; - template <> struct JsonObjectConverter<DeviceKeys> + addParam<>(jo, QStringLiteral("user_id"), pod.userId); + addParam<>(jo, QStringLiteral("device_id"), pod.deviceId); + addParam<>(jo, QStringLiteral("algorithms"), pod.algorithms); + addParam<>(jo, QStringLiteral("keys"), pod.keys); + addParam<>(jo, QStringLiteral("signatures"), pod.signatures); + } + static void fillFrom(const QJsonObject& jo, DeviceKeys& pod) { - static void dumpTo(QJsonObject& jo, const DeviceKeys& pod); - static void fillFrom(const QJsonObject& jo, DeviceKeys& pod); - }; + fromJson(jo.value("user_id"_ls), pod.userId); + fromJson(jo.value("device_id"_ls), pod.deviceId); + fromJson(jo.value("algorithms"_ls), pod.algorithms); + fromJson(jo.value("keys"_ls), pod.keys); + fromJson(jo.value("signatures"_ls), pod.signatures); + } +}; -} // namespace QMatrixClient +} // namespace Quotient |