Summary
A protocol to coordinate mediation configuration between a mediating agent and the recipient.
Motivation
Use of the forward message in the Routing Protocol 2.0 requires an exchange of information. The Recipient must know which endpoint and routing key(s) to share, and the Mediator needs to know which keys should be routed via this relationship.
Roles
There are two roles in this protocol:
mediator
: The agent that will be receivingforward
messages on behalf of the recipient.recipient
: The agent for whom theforward
message payload is intended.
Requirements
The return_route
extension must be supported by both agents (recipient
and mediator
).
The common use of this protocol is for the reply messages from the mediator
to be synchronous, utilizing the same connection channel for the reply. In order to have this synchronous behavior the recipient
should specify return_route
header to all
.
This header must be set each time the communication channel is established: once per established websocket, and every message for an HTTP POST.
Connectivity
This protocol consists of three different message requests from the recipient
that should be replied by the mediator
:
- Mediate Request -> Mediate Grant or Mediate Deny
- Keylist Update -> Keylist Update Response
- Keylist Query -> Keylist
States
This protocol follows the request-response message exchange pattern, and only requerires the simple state of waiting for a response or to produce a response.
Basic Walkthrough
A recipient
may discover an agent capable of routing using the Discover Features Protocol 2.0. If protocol is supported with the mediator
, a recipient
may send a mediate-request
to initiate a routing relationship.
First, the recipient
sends a mediate-request
message to the mediator
. If the mediator
is willing to route messages, it will respond with a mediate-grant
message, otherwise with a mediate-deny
message. The recipient
will share the routing information in the grant message with other contacts.
When a new key is used by the recipient
, it must be registered with the mediator
to enable route identification. This is done with a keylist-update
message.
The keylist-update
and keylist-query
methods are used over time to identify and remove keys that are no longer in use by the recipient
.
Design By Contract
No protocol specific errors exist. Any errors related to headers or other core features are documented in the appropriate places.
Security
This protocol expects messages to be encrypted during transmission, and repudiable.
Composition
Supported Goal Code | Notes |
---|
Message Reference
Mediate Request
This message serves as a request from the recipient
to the mediator
, asking for the permission (and routing information) to publish the endpoint as a mediator.
Message Type URI: https://didcomm.org/coordinate-mediation/2.0/mediate-request
{
"id": "123456780",
"type": "https://didcomm.org/coordinate-mediation/2.0/mediate-request",
"return_route": "all"
}
Mediate Deny
This message serves as notification of the mediator
denying the recipient
's request for mediation.
Message Type URI: https://didcomm.org/coordinate-mediation/2.0/mediate-deny
{
"id": "123456780",
"type": "https://didcomm.org/coordinate-mediation/2.0/mediate-deny",
}
Mediate Grant
A mediate grant message is a signal from the mediator
to the recipient
that permission is given to distribute the included information as an inbound route.
Message Type URI: https://didcomm.org/coordinate-mediation/2.0/mediate-grant
{
"id": "123456780",
"type": "https://didcomm.org/coordinate-mediation/2.0/mediate-grant",
"body": {
"routing_did": "did:peer:z6Mkfriq1MqLBoPWecGoDLjguo1sB9brj6wT3qZ5BxkKpuP6"
}
}
where:
routing_did
: DID of the mediator where forwarded messages should be sent. Therecipient
may use this DID as an enpoint as explained in Using a DID as an endpoint section of the specification.
NOTE: After receiving a mediate-grant
message the recipient
should update his recipient_did
with a keylist-update
message and add DIDs. In order for the mediator
to start accepting Forward Message for those DIDs.
Keylist Update
Used to notify the mediator
of keys in use by the recipient
.
Message Type URI: https://didcomm.org/coordinate-mediation/2.0/keylist-update
{
"id": "123456780",
"type": "https://didcomm.org/coordinate-mediation/2.0/keylist-update",
"body": {
"updates": [
{
"recipient_did": `did<img class="emoji-icon" alt="emoji-key" data-icon="emoji-key" style="" src="data:image/png;base64, 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" title="emoji-key" />z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH`,
"action": "add"
}
]
},
"return_route": "all"
}
where:
recipient_did
: DID subject of the update.action
: one ofadd
orremove
.
Keylist Response
Confirmation of requested keylist updates.
Message Type URI: https://didcomm.org/coordinate-mediation/2.0/keylist-update-response
{
"id": "123456780",
"type": "https://didcomm.org/coordinate-mediation/2.0/keylist-update-response",
"body": {
"updated": [
{
"recipient_did": `did<img class="emoji-icon" alt="emoji-key" data-icon="emoji-key" style="" src="data:image/png;base64, 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" title="emoji-key" />z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH`,
"action": "" // "add" or "remove"
"result": "" // [client_error | server_error | no_change | success]
}
]
}
}
where:
recipient_did
: DID subject of the update.action
: one ofadd
orremove
.result
: one ofclient_error
,server_error
,no_change
,success
; describes the resulting state of the keylist update.
Keylist Query
Query mediator
for a list of keys registered for this connection.
Message Type URI: https://didcomm.org/coordinate-mediation/2.0/keylist-query
{
"id": "123456780",
"type": "https://didcomm.org/coordinate-mediation/2.0/keylist-query",
"body": {
"paginate": {
"limit": 30,
"offset": 0
}
},
"return_route": "all"
}
where:
paginate
: is optional, and if present must includelimit
andoffset
.
Keylist
Response to key list query, containing retrieved keys.
Message Type URI: https://didcomm.org/coordinate-mediation/2.0/keylist
{
"id": "123456780",
"type": "https://didcomm.org/coordinate-mediation/2.0/keylist",
"body": {
"keys": [
{
"recipient_did": `did<img class="emoji-icon" alt="emoji-key" data-icon="emoji-key" style="" src="data:image/png;base64, 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" title="emoji-key" />z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH`
}
],
"pagination": {
"count": 30,
"offset": 30,
"remaining": 100
}
}
}
where:
pagination
: is optional, and if present must includecount
,offset
andremaining
.
L10n
No localization is required.
Implementations
Endnotes
Future Considerations
- Should we allow listing keys by date? You could query keys in use by date?
- We are missing a way to check a single key (or a few keys) without doing a full list.
- Mediation grant supports only one endpoint. What can be done to support multiple endpoint options i.e. http, ws, etc.
- Requiring proof of key ownership (with a signature) would prevent an edge case where a malicious party registers a key for another party at the same mediator, and before the other party.
- How do we express terms and conditions for mediation?