Clarify the key object definition for the key management API

Fixes https://github.com/matrix-org/matrix-doc/issues/1907


One too far
pull/2083/head
Travis Ralston 5 years ago
parent 9ac89cc915
commit a19eb59f13

@ -59,22 +59,41 @@ paths:
by the key algorithm. by the key algorithm.
May be absent if no new one-time keys are required. May be absent if no new one-time keys are required.
additionalProperties: additionalProperties:
type: type:
- string - string
- object - type: object
example: title: KeyObject
"curve25519:AAAAAQ": "/qyvZvwjiTxGdGU0RCguDCLeR+nmsb3FfNG3/Ve4vU8" properties:
signed_curve25519:AAAAHg: key:
key: "zKbLg+NrIjpnagy+pIY6uPL4ZwEG2v+8F9lmgsnlZzs" type: string
signatures: description: The key, encoded using unpadded base64.
"@alice:example.com": signatures:
ed25519:JLAFKJWSCS: "FLWxXqGbwrb8SM3Y795eB6OA8bwBcoMZFXBqnTn58AYWZSqiD45tlBVcDa2L7RwdKXebW/VzDlnfVJ+9jok1Bw" type: object
signed_curve25519:AAAAHQ: description: |-
key: "j3fR3HemM16M7CWhoI4Sk5ZsdmdfQHsKL1xuSft6MSw" Signature for the device. Mapped from user ID to signature object.
signatures: additionalProperties:
"@alice:example.com": type: string
ed25519:JLAFKJWSCS: "IQeCEPb9HFk217cU9kw9EOiusC6kMIkoIRnbnfOh5Oc63S1ghgyjShBGpu34blQomoalCyXWyhaaT3MrLZYQAA" required: ['key', 'signatures']
example: {
"curve25519:AAAAAQ": "/qyvZvwjiTxGdGU0RCguDCLeR+nmsb3FfNG3/Ve4vU8",
"signed_curve25519:AAAAHg": {
"key": "zKbLg+NrIjpnagy+pIY6uPL4ZwEG2v+8F9lmgsnlZzs",
"signatures": {
"@alice:example.com": {
"ed25519:JLAFKJWSCS": "FLWxXqGbwrb8SM3Y795eB6OA8bwBcoMZFXBqnTn58AYWZSqiD45tlBVcDa2L7RwdKXebW/VzDlnfVJ+9jok1Bw"
}
}
},
"signed_curve25519:AAAAHQ": {
"key": "j3fR3HemM16M7CWhoI4Sk5ZsdmdfQHsKL1xuSft6MSw",
"signatures": {
"@alice:example.com": {
"ed25519:JLAFKJWSCS": "IQeCEPb9HFk217cU9kw9EOiusC6kMIkoIRnbnfOh5Oc63S1ghgyjShBGpu34blQomoalCyXWyhaaT3MrLZYQAA"
}
}
}
}
responses: responses:
200: 200:
description: description:
@ -205,12 +224,12 @@ paths:
"@alice:example.com": { "@alice:example.com": {
"ed25519:JLAFKJWSCS": "dSO80A01XiigH3uBiDVx/EjzaoycHcjq9lfQX0uWsqxl2giMIiSPR8a4d291W1ihKJL/a+myXS367WT6NAIcBA" "ed25519:JLAFKJWSCS": "dSO80A01XiigH3uBiDVx/EjzaoycHcjq9lfQX0uWsqxl2giMIiSPR8a4d291W1ihKJL/a+myXS367WT6NAIcBA"
} }
}, },
"unsigned": { "unsigned": {
"device_display_name": "Alice's mobile phone" "device_display_name": "Alice's mobile phone"
} }
} }
tags: tags:
- End-to-end encryption - End-to-end encryption
"/keys/claim": "/keys/claim":
@ -246,8 +265,9 @@ paths:
type: string type: string
description: algorithm description: algorithm
example: "signed_curve25519" example: "signed_curve25519"
example: example: {
"@alice:example.com": { "JLAFKJWSCS": "signed_curve25519" } "@alice:example.com": { "JLAFKJWSCS": "signed_curve25519" }
}
required: required:
- one_time_keys - one_time_keys
responses: responses:
@ -263,7 +283,7 @@ paths:
If any remote homeservers could not be reached, they are If any remote homeservers could not be reached, they are
recorded here. The names of the properties are the names of recorded here. The names of the properties are the names of
the unreachable servers. the unreachable servers.
If the homeserver could be reached, but the user or device If the homeserver could be reached, but the user or device
was unknown, no failure is recorded. Instead, the corresponding was unknown, no failure is recorded. Instead, the corresponding
user or device is missing from the ``one_time_keys`` result. user or device is missing from the ``one_time_keys`` result.
@ -281,14 +301,37 @@ paths:
type: type:
- string - string
- object - object
example: # XXX: We can't define an actual object here, so we have to hope
"@alice:example.com": # that people will look at the swagger source or can figure it out
JLAFKJWSCS: # from the other endpoints/example.
signed_curve25519:AAAAHg: # - type: object
key: "zKbLg+NrIjpnagy+pIY6uPL4ZwEG2v+8F9lmgsnlZzs" # title: KeyObject
signatures: # properties:
"@alice:example.com": # key:
ed25519:JLAFKJWSCS: "FLWxXqGbwrb8SM3Y795eB6OA8bwBcoMZFXBqnTn58AYWZSqiD45tlBVcDa2L7RwdKXebW/VzDlnfVJ+9jok1Bw" # type: string
# description: The key, encoded using unpadded base64.
# signatures:
# type: object
# description: |-
# Signature for the device. Mapped from user ID to signature object.
# additionalProperties:
# type: string
# required: ['key', 'signatures']
example: {
"@alice:example.com": {
"JLAFKJWSCS": {
"signed_curve25519:AAAAHg": {
"key": "zKbLg+NrIjpnagy+pIY6uPL4ZwEG2v+8F9lmgsnlZzs",
"signatures": {
"@alice:example.com": {
"ed25519:JLAFKJWSCS": "FLWxXqGbwrb8SM3Y795eB6OA8bwBcoMZFXBqnTn58AYWZSqiD45tlBVcDa2L7RwdKXebW/VzDlnfVJ+9jok1Bw"
}
}
}
}
}
}
required: ['one_time_keys']
tags: tags:
- End-to-end encryption - End-to-end encryption
"/keys/changes": "/keys/changes":

@ -77,25 +77,34 @@ paths:
additionalProperties: additionalProperties:
type: type:
- string - string
- object - type: object
required: ['one_time_keys'] title: KeyObject
examples: properties:
application/json: { key:
"one_time_keys": { type: string
"@alice:example.com": { description: The key, encoded using unpadded base64.
"JLAFKJWSCS": { signatures:
"signed_curve25518:AAAAHg": { type: object
"key": "zKbLg+NrIjpnagy+pIY6uPL4ZwEG2v+8F9lmgsnlZzs", description: |-
"signatures": { Signature for the device. Mapped from user ID to signature object.
"@alice:example.com": { additionalProperties:
"ed25519:JLAFKJWSCS": "FLWxXqGbwrb8SM3Y795eB6OA8bwBcoMZFXBqnTn58AYWZSqiD45tlBVcDa2L7RwdKXebW/VzDlnfVJ+9jok1Bw" type: string
required: ['key', 'signatures']
example: {
"@alice:example.com": {
"JLAFKJWSCS": {
"signed_curve25519:AAAAHg": {
"key": "zKbLg+NrIjpnagy+pIY6uPL4ZwEG2v+8F9lmgsnlZzs",
"signatures": {
"@alice:example.com": {
"ed25519:JLAFKJWSCS": "FLWxXqGbwrb8SM3Y795eB6OA8bwBcoMZFXBqnTn58AYWZSqiD45tlBVcDa2L7RwdKXebW/VzDlnfVJ+9jok1Bw"
}
} }
} }
} }
} }
} }
} required: ['one_time_keys']
}
"/user/keys/query": "/user/keys/query":
post: post:
summary: Download device identity keys. summary: Download device identity keys.

@ -0,0 +1 @@
Clarify the key object definition for the key management API.

@ -0,0 +1 @@
Clarify the key object definition for the key management API.
Loading…
Cancel
Save