From 995241fad89b04772e2132b6597f8a59dd1e7125 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 15 Feb 2016 18:41:57 +0000 Subject: [PATCH] grote created page: IntroductionClient --- IntroductionClient.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 IntroductionClient.md diff --git a/IntroductionClient.md b/IntroductionClient.md new file mode 100644 index 0000000..5087f8e --- /dev/null +++ b/IntroductionClient.md @@ -0,0 +1,42 @@ +The Introduction Client is a [BSP client](BSP) that allows to introduce two contacts to each other. They have the option to accept or decline the introduction. When the introduction is accepted, the contacts will add each other to their contact lists. + +### Group identifiers + +The Introduction Client uses the following client identifier: +`23b1 897c 198a 90ae 75b9 76ac 023d 0f32 80ca 67b1 2f23 46b2 c23a 34f3 4e24 34c3` + +The client uses a separate group for each pair of contacts. The [group descriptor](BSP#group-identifiers) is a [BDF list](BDF) containing the unique IDs of the contacts' identities, sorted in ascending order as byte strings. + +### Message types + +The introduction protocol uses three message types. It should be noted that all communication happens solely between the introduction facilitator and the contacts she introduced. The contacts themselves only start making direct connections when the protocol completes successfully. The introduction facilitator forwards the messages received from one contact to the other while observing to use the correct introduction ID with each contact. + +**1: INTRODUCTION** - This is send by the introduction facilitator to two of her contacts. The content is a BDF list with three or four elements: +* (int) The type of the message, here **1** +* (string) The name of the contact that is introduced +* (raw) The long-term public key of the contact that is introduced +* (string) A introductory message that is **optional** + +**2: RESPONSE** - This should be send by contacts that received an introduction before based on user input. If the facilitator receives this, she should forward it to the other introducee with the correct introduction ID. The content is a BDF list with these elements: +* (int) The type of the message, here **2** +* (raw) The introduction ID which is the `MessageId` of the introduction message. +* (bool) Whether the introduction is accepted or not. The following list items are **only** included if the introduction was accepted + * (int) The timestamp of the current time + * (raw) An ephemeral public key which will be used to derive a shared secret (see [BPQ](BQP)) + +**3: ACK** - This should be send by a contact that previously responded to an invitation and has received the response of the other contact. If the facilitator receives this, she should forward it to the other introducee with the correct introduction ID. The content is a BDF list with two elements: +* (int) The type of the message, here **3** +* (raw) The introduction ID which is the `MessageId` of the introduction message. + +### Validity policy + +* A message is valid if it is well-formed. + +### Storage policy + +Since the messages represent the current state of the introduction protocol, all participants need to hold on to their messages as long as the protocol did not complete or fail permanently. + +### Sharing policy + +* All local messages are shared. +* All remote messages are shared. \ No newline at end of file