Skip to content

GSoC 2019 reports

Alexey Andreyev edited this page Jul 19, 2019 · 19 revisions

Google Summer of Code 2019

Matrix project contribution reports: libQuotient end-to-end encryption

Name: Alexey Andreyev



Idea: "Adding end-to-end encryption to more clients"

Mentors: Alexey Rusakov, Hubert Chathi

Working branch: aa13q-E2EE

Weekly plan

  • Update the epic at the github repo
  • Implement EncryptionManager with qtolm
  • * Implement qt5keychain based olm pickle saving (side task)
  • Implement creating and registering one-time keys
  • Implement configuring a room to use encryption
  • Handle incoming events (,, m.room_key events)
  • Downloading the device list for users in the room


  • 1st bonding week: (6/05 - 12/05) formed manuals list, dived into the documentation. Formed a task to research libqtolm possible integration
  • 2nd bonding week: (13/05 - 19/05) worked on a side task: "User color coding", added PRs to the Quotient library and the Quaternion client.
  • 3rd bonding week: (20/05 - 26/05) trying libqtolm integration options: found qt5.10 qrandomgenerator usage

Coding officially begins

  • 1st week: (27/05 - 2/06): added initial Qt<5.10 support to qtolm, integrated qtolm to quotient

  • 2nd week: (03/06 - 09/06) started working at issue quotient-im#87 "Upload device public keys". Saved for later (as TODO) a task of saving olm account pickle via qt5keychain.

  • 3rd week: (10/06 - 16/06) worked on "Upload one-time keys task", OneTimeKeysManager class.

  • 4th week: (17/06 - 23/06) finishing "Upload one-time keys task, moving from OneTimeKeysManager to EncryptionManager, changed settings API to appropriate AccountSettings::encryptionAccountPickle

  • 5th week: (24/06 - 30/06) finished EncryptionManager implementation draft, pushed PR, planning to implement handling incoming encryption events

  • 6th week: (01/07 - 07/07) olm PR, libQtOlm MR about in-tree dependencies building. Time to finish the first PR and focus on message receiving

  • 7th week: (08/07 - 14/07) minor matrix-doc PR and libQuotient PR about the constants naming. Implementing m.encrypted events support, help from mentors about implementation structure

  • 8th week: (15/07 - 21/07) Implementing olm/megolm context managing at Room class

Clone this wiki locally
You can’t perform that action at this time.