# Context The invitation process might be performed by file exchange (raw or maybe qr codes later) or though server. In the current code the first step provides first peer data without any encryption (invitation create), this has to be changed. # Requested improvement ## Library implementation An initial step shall be added befoe the current first step where the initiator will send almost only it's public key for initiating invitation. The required structure InvitationInitPayload is described in @pb/messages.proto. Invitation struct in the same file has also been adapted to the new flow. Then the full workflow is described in @doc/invitation/sq_invitation.puml this will allow to adapt the base invitation functions attached to the @client/identity.go that allow the invitation steps to be performed. Then the helper functions @client/helpers/invitation*.go allow to implement the full flow, through files exchanges or through server invitation. The "through server" flow is described in @doc/invitation/sq_srvinv*.puml ## Server implementation Most of the server code is in @server/router.go invitation process consistency with that code should be checked/upgraded ## Cli client implementation The cli client is available in @../meowcli/ it should also be adapted to the new process # Constraints The functions should be renamed according to the sequence diagrams flow stps to improve clarity, instead od create/answer/finalize... # Testing Already present test files should be adapted and improved to fit the changes, new test files may be created. # Stop condition Once all changed have beed edited, and library unit testing performed, you will stop. I will then review and commit changes, integrate new lib in server and cli, and then we'll iterate over end to end tests.