libsodium-net, or better said, libsodium for .NET, is a C# wrapper around libsodium. For those that don't know, libsodium is a portable implementation of Daniel Bernstein's fantastic NaCl library. If you aren't familiar with NaCl, I highly suggest that you look into libsodium and NaCl before using this library.
NaCl is a great library in that its designed has made the right choices on what to implement and how - something most developers don't know how to do. So by using it (or a wrapper), many of those details are abstracted away where you don't need to worry about them. NaCl itself is less than portable C, only targeted for *nix systems; libsodium solves this by making it portable and making a few minor changes to better suite being distributed as a compiled binary.
Crypto is hard - much harder than your average developer understands. This effort was started to make these tools readily available to the .NET community in hopes they will be used to further the goals of defending personal privacy and security.
OSX: For OSX,
libsodium-net can easily be built in Xamarin Studio, and
libsodium can be installed easily via
brew install libsodium --universal
Linux: As with OSX, building with Xamarin Studio is simple, or there's always the option of using
libsodium, many package managers provide older versions, so it's recommended to build the latest version from source. Thankfully, this is a fairly painless process. See the travis-build-libsodium.sh file or the
libsodium README file for details.
Other: Support for other Mono supported platforms hasn't been determined. It may or may not work.
Note: For all platforms, it's critical that
libsodium be compiled for the architecture that the process is running under. If they don't match, you can expect to see errors. If your process is x86/i386, you can't use a copy of
libsodium compiled for x64.
Requirements & Versions
This library can be built in Visual Studio 2010, Xamarin Studio (MonoDevelop 3.x supported), and targets .NET 4.0; it is compiled against libsodium v1.0.7.
On OSX & Linux, your copy of
libsodium must be compiled for the same architecture as your copy of Mono. If you are running a 32bit process, your copy of
libsodium must be 32bit as well.
Any method that takes a String, has an overload that accepts a byte array; Strings are assumed to be UTF8; if this is not the case, please convert it to bytes yourself and use the overloads that accept byte arrays.
libsodium requires the Visual C++ Redistributable for Visual Studio 2015.
Starting with version 0.4.0, all files are signed via a Certum.pl Code Signing certificate. The files are signed under the name
Open Source Developer, Adam Caudill - this can be used to ensure that the files haven't been altered.
NaCl has been released to the public domain to avoid copyright issues. libsodium is subject to the ISC license, and this software is subject to the MIT license (see LICENSE).