Thesis: Finalization of TLS Support in Legacy Internet Software
cdpxe opened this issue · comments
This issue is foreseen to be addressed in the form of a thesis and will focus on the NNTP server WendzelNNTPd.
Supervision: Steffen Wendzel (website).
Context
Thanks to the two theses works of @cgrill76 and @mich-dy, WendzelNNTPd now features TLS support in form of two development branches:
- https://github.com/cdpxe/WendzelNNTPd/tree/2.1.4-TLS-Dunsky
- https://github.com/cdpxe/WendzelNNTPd/tree/2.1.4-TLS-Grill
Goal of the Thesis
The goal of this thesis is to bring TLS support into WendzelNNTPd's main branch. This means to utilize the above-mentioned branches, pick the best components of these branches, and merge them into the main branch. Afterwards, you test the functionality of the new main branch.
Your Tasks
- Define requirements for the TLS integration into the main branch. To this end, you also consider the requirements of the previous branches.
- The PDF files of the theses of both students will be provided!
- Analyze both branches and determine the best ideas and code pieces of both branches.
- Integrate the best code fragments (that resulted from the previous point) into the main branch.
- If necessary add own code fragments.
- Combine the testing and evaluation methods of both TLS development branches so that all tests of these two branches are used for the evaluation of WendzelNNTPd.
- Perform an in-depth testing of the TLS functionality using these testing/evaluation methods.
- Optionally, add additional (own) TLS functionality tests.
- Write the thesis :)
Key Requirements
- Support for OpenSSL, GnuTLS is optional.
- Support for TLS connections without STARTTLS (most clients do not seem to make use of STARTTLS) as well as with STARTTLS.
- Intuitive use and configuration (e.g., there should be no difference between setting a TLS and a non-TLS port in the config file).
- Code must pass functionality tests with the following clients: Thunderbird, Sylpheed/Claws Mail, Pan and slrn. The handling of signals, such as SIG_PIPE, should consider potential errors (see PDF files of the theses that will be provided / code in the development branches).
- Integrated code must roughly follow coding style of the current implementation (note that the development branches do a good job here).
- Server documentation must be updated; code should be documented, configuration file too.
- Code needs to compile under at Ubuntu and Debian Linux as well as one major BSD distribution (OpenBSD, NetBSD or FreeBSD).