Skip to content

_GSoC 2019 E2EE reports

Alexey Andreyev edited this page Aug 25, 2019 · 2 revisions

Google Summer of Code 2019

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

Name: Alexey Andreyev

e-mail: [email protected]

matrix: @aa13q:matrix.org

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

Mentors: Alexey Rusakov, Hubert Chathi

Contribution: libQuotient GSoC E2EE PRs list

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.encryption, m.room.encrypted, m.room_key events)
  • Downloading the device list for users in the room

History

  • 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

1st evaluation passed

  • 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.room.encrypted events support, help from mentors about implementation structure
  • 8th week: (15/07 - 21/07) Implementing olm/megolm context managing at Room class
  • 9th week: (22/07 - 28/07) Finishing "E2EE: introduce EncryptedEvent" PR

2nd evaluation passed

  • 10th week: (29/07 - 04/08) Working on EncryptedEvent missed parts (megolm message_index), working on m.room_key support
  • 11th week (05/08 - 11/08) Implementing olm decryption logic
  • 12th week (12/08 - 18/08) Implemening megolm decryption logic
  • 13th week (19/08 - 25/08) Actively fixing bugs, adding missing parts, refactoring, testing decryption, providing PR, final evaluation

Final evaluation time: August 26, 2019 -- September 2, 2019

Clone this wiki locally