From 24427242f7f78f7b633e43f7c5b1818c2fe2ad4f Mon Sep 17 00:00:00 2001 From: Hubert Chathi Date: Tue, 16 Jun 2020 17:00:29 -0400 Subject: [PATCH] fix more mistakes in key backup spec, and factor out room key backups --- .../definitions/room_key_backup.yaml | 38 ++++++++++ api/client-server/key_backup.yaml | 75 +++++++------------ 2 files changed, 65 insertions(+), 48 deletions(-) create mode 100644 api/client-server/definitions/room_key_backup.yaml diff --git a/api/client-server/definitions/room_key_backup.yaml b/api/client-server/definitions/room_key_backup.yaml new file mode 100644 index 000000000..5c70850fa --- /dev/null +++ b/api/client-server/definitions/room_key_backup.yaml @@ -0,0 +1,38 @@ +# Copyright 2020 The Matrix.org Foundation C.I.C. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +type: object +title: RoomKeyBackup +description: "The backed up keys for a room." +properties: + sessions: + type: object + description: "A map of session IDs to key data." + additionalProperties: + allOf: + - $ref: "key_backup_data.yaml" + example: { + "sessionid1": { + "first_message_index": 1, + "forwarded_count": 0, + "is_verified": true, + "session_data": { + "ephemeral": "base64+ephemeral+key", + "ciphertext": "base64+ciphertext+of+JSON+data", + "mac": "base64+mac+of+ciphertext" + } + } + } +required: + - sessions diff --git a/api/client-server/key_backup.yaml b/api/client-server/key_backup.yaml index a0baccc30..31c66a258 100644 --- a/api/client-server/key_backup.yaml +++ b/api/client-server/key_backup.yaml @@ -569,22 +569,7 @@ paths: description: "The backup data" name: backupData schema: - type: object - properties: - sessions: - type: object - description: |- - A map of session IDs to key data. - additionalProperties: - allOf: - - $ref: "definitions/key_backup_data.yaml" - example: { - "sessionid1": { - "ephemeral": "base64+ephemeral+key", - "ciphertext": "base64+ciphertext+of+JSON+data", - "mac": "base64+mac+of+ciphertext" - } - } + $ref: "definitions/room_key_backup.yaml" responses: 200: description: The update succeeded @@ -661,21 +646,7 @@ paths: ``sessions`` property will be returned (``{"sessions": {}}``). schema: type: object - properties: - sessions: - type: object - description: |- - A map of session IDs to key data. - additionalProperties: - allOf: - - $ref: "definitions/key_backup_data.yaml" - example: { - "sessionid1": { - "ephemeral": "base64+ephemeral+key", - "ciphertext": "base64+ciphertext+of+JSON+data", - "mac": "base64+mac+of+ciphertext" - } - } + $ref: "definitions/room_key_backup.yaml" 404: description: |- The backup was not found. @@ -761,7 +732,7 @@ paths: required: true x-example: "1" - in: body - description: "The backup data" + description: "The backup data." name: backupData schema: type: object @@ -769,23 +740,28 @@ paths: rooms: type: object description: |- - A map of room IDs to session IDs to key data. + A map of room IDs to room key backup data. additionalProperties: - type: object - additionalProperties: - allOf: - - $ref: "definitions/key_backup_data.yaml" + allOf: + - $ref: "definitions/room_key_backup.yaml" example: { "!room:example.org": { "sessions": { "sessionid1": { - "ephemeral": "base64+ephemeral+key", - "ciphertext": "base64+ciphertext+of+JSON+data", - "mac": "base64+mac+of+ciphertext" + "first_message_index": 1, + "forwarded_count": 0, + "is_verified": true, + "session_data": { + "ephemeral": "base64+ephemeral+key", + "ciphertext": "base64+ciphertext+of+JSON+data", + "mac": "base64+mac+of+ciphertext" + } } } } } + required: + - rooms responses: 200: description: The update succeeded @@ -860,19 +836,22 @@ paths: rooms: type: object description: |- - A map of room IDs to session IDs to key data. + A map of room IDs to room key backup data. additionalProperties: - type: object - additionalProperties: - allOf: - - $ref: "definitions/key_backup_data.yaml" + allOf: + - $ref: "definitions/room_key_backup.yaml" example: { "!room:example.org": { "sessions": { "sessionid1": { - "ephemeral": "base64+ephemeral+key", - "ciphertext": "base64+ciphertext+of+JSON+data", - "mac": "base64+mac+of+ciphertext" + "first_message_index": 1, + "forwarded_count": 0, + "is_verified": true, + "session_data": { + "ephemeral": "base64+ephemeral+key", + "ciphertext": "base64+ciphertext+of+JSON+data", + "mac": "base64+mac+of+ciphertext" + } } } }