Factor/GSoC/2010/SSL on Windows

Skills required

  • Knowledge of C
  • Knowledge of the Win32 API
  • Knowledge of SSL
  • Secure code development

Level

Intermediate

Technical outline

First, a binding needs to be written to the Windows SSL API, Schannel. Once the binding is place, some high-level abstractions will need to be built on top, to automate memory management and other such details -- Factor's destructors will be useful here. After that, an implementation of the high-level abstraction defined in io.sockets.secure will need to be written.

All the code should integrate with the overlapped I/O implementation in io.backend.windows.nt to ensure that SSL-based clients and servers can handle multiple simultaneous connections.

Validation

The project will be deemed complete when all the unit tests in the io.sockets.secure.unix vocabulary are moved to the io.sockets.secure vocabulary, and the tests pass Windows. Additionally, there will be code review to ensure the code is of sufficient quality to ensure future maintainability, and a load tester will be run against the HTTP server serving HTTPS pages to ensure stability.

Benefit to the student

The student gains experience working with low-level networking code, and will be better equipped to develop debug server-side applications in the future.

Benefit to the community

Lack of SSL support on Windows is the only stumbling block between compete feature parity in Factor's I/O library on Windows and Unix. Since SSL is widespread today, lack of it makes it hard to develop certain types of applications in Factor on Windows.

This revision created on Thu, 25 Feb 2010 19:13:24 by jckarter (Copy over 2009)