Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

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.


No releases published


No packages published

Contributors 4