s3kr1t

Introduction

Similar to liberate, s3kr1t is primarily an abstraction library. However, rather than abstracting out platform differences, the goal is to provide abstraction from cryptographic libraries of the underlying operating system.

The library is best understood as a very narrow slice of an API for the specific cryptographic functions the other Interpeer sub-projects need.

Other than providing a stable API independent of cryptographic library used, this primarily simplifies the maintenance of builds. Cross-platform building is hard enough, so encapsulating some choices in a sub-project eases the burden on other libraries.

Currently, s3kr1t provides an API over OpenSSL in the 1.x or 3.x branches. Naturally, it should similarly be useable with LibreSSL, though that is untested. For some cryptographic primitives, libsodium may be used.

Note that e.g. on Android, the OpenSSL version that is part of the Android NDK is used, which leverages any hardware acceleration provided by the device and its drivers. In a similar fashion, OpenSSL engines can be transparently used to accelerate operations.