Skip to content


Subversion checkout URL

You can clone with
Download ZIP
C Python Other
Branch: master
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.
tests Add test vectors for sha1 hash
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 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.