Skip to content


Subversion checkout URL

You can clone with
Download ZIP
C Python Other
Failed to load latest commit information.
extern/cmockery Fixup tests for c89 stylisms
include add some basic tests for arrays
lib fix typo
misc Start trusted CA cert db, by using the certificates trusted by NSS/Mo…
site_scons Support Python 2.5 by not using a with statement.
tools Add SO_REUSEADDR to server socket
.gitignore fix .gitignore typo
Doxyfile add doxygen support
LICENSE Stub out basic structure, build system, header layout and the like.
NOTICE Import a port of APR's arrays -- I give up trying to get by without a… reformat, update README
SConstruct fix scons format command

Selene - A SSL/TLS library

Selene has a few goals that makes it different from a more traditional SSL libraries:

  • Completely Asynchronous: Selene does no IO itself, it only provides notifications to the user that IO should be done.

  • Asynchronous Callbacks: Callback functions provide their own callback to notify Selene when the user has finished an operation.

  • Test Driven: A test framework to test all code paths.

  • Plugable Backends for Cryptography: Currently only focusing on OpenSSL, but others are possible.

  • Liberal License: Under the Apache License, version 2.0.

Selene is named after the Greek Goddess of the Moon, because I am terrible at naming projects.


A prototype backend (openssl-threaded) was used to validate the basics of the selene_* API. I am currently slowly working on the native Selene TLS backend, which only uses OpenSSL for cryptographic operations, but not the actual protocol parsing.

Hacking Notes:

  • All contributors must sign an Apache Software Foundation CLA, and agree that Selene may be moved to the ASF at a future date.
  • External Functions and types are prefixed with selene_*
  • Internal Functions and types are prefixed with sln_*
  • Style: Google C++ Style Guide, even though this is C. Use clang-format -style=Google on all source code.
  • Write test cases for all code paths, including errors.
Something went wrong with that request. Please try again.