Hi guys,
These are things that I have been doing in the last two weeks:
1. Continue implementing the libmerkletree library. The next module of the lib is a storage backend. The implementation is at [1]. Below is a brief description of my implementation: - In each update, both tree version and STR are entirely stored to the db. (this idea is mostly from Coname authors) - The developers now can construct the tree from db or do lookup in the STR which is stored in the persistent storage. The idea is when the server has been restarted, the developers can initialize the in-memory PAD (the history hash chain) with an existing tree; or whenever the developers needs to do a lookup from the db instead of the in-memory STR (the length of the history hash chain is limited by server’s configuration).
2. Implement the key lookup protocol. This function is not finished yet, since I’m still working on the client. The source code for the server is at [2]. For the client, since we are signing the STR using Ed25519 signature scheme, the client also needs a library for verifying the signature efficiently. I’m working on a C library that makes use of libgcrypt library (which also be used currently by libotr library). It takes me time to learn how to use libgrcrypt library. When this C library is finished, I can start working on key lookup and monitoring functions on the client part.
In the next two weeks, I will try to have a working prototype (both key registration and key lookup) for Tor Messenger. Then I and my mentors can focus on refactoring and optimizing source code, as well as writing tests.
Best, Huy
— [1] https://github.com/coniks-sys/libmerkleprefixtree-go/tree/db [2] https://github.com/coniks-sys/libconiks-server-go/tree/lookup