NSec is available as a NuGet package from nuget.org. It can be added to a project in a number of ways, depending on the project type and tools used:
$ dotnet add package NSec.Cryptography --version 22.4.0
PM> Install-Package NSec.Cryptography -Version 22.4.0
<PackageReference Include="NSec.Cryptography" Version="22.4.0"/>
NSec is intended to run on supported versions of .NET on the following platforms:
- Windows
win-x64
win-x86
- Linux
linux-x64
(Most desktop distributions like CentOS, Debian, Fedora, Ubuntu, and derivatives)linux-musl-x64
(Lightweight distributions using musl like Alpine Linux)linux-arm
(Linux distributions running on ARM like Raspbian on Raspberry Pi Model 2+)linux-arm64
(Linux distributions running on 64-bit ARM like Ubuntu Server 64-bit on Raspberry Pi Model 3+)
- macOS
osx-x64
osx-arm64
Specifically, NSec 22.4.0 has been tested to run on the following platforms and .NET versions:
OS | Version | Architectures | .NET | .NET Core |
---|---|---|---|---|
Windows 10 Client | 20H2 | x64 / x86 | 6.0 / 5.0 | 3.1 |
Windows Server | 2022 | x64 | 6.0 / 5.0 | 3.1 |
macOS | 10.15.5 | x64 | 6.0 / 5.0 | 3.1 |
11.6.2 | x64 | 6.0 / 5.0 | 3.1 | |
12.2.1 | x64 | 6.0 / 5.0 | 3.1 | |
Alpine | 3.14 | x64 | 6.0 | 3.1 |
3.15 | x64 | 6.0 | ||
CentOS | 7.9.2009 | x64 | 6.0 / 5.0 | 3.1 |
Debian | 9.13 | x64 | 6.0 / 5.0 | 3.1 |
10.11 | x64 | 6.0 / 5.0 | 3.1 | |
11.1 | x64 | 6.0 / 5.0 | 3.1 | |
Fedora | 33 | x64 | 6.0 / 5.0 | 3.1 |
34 | x64 | 6.0 / 5.0 | 3.1 | |
35 | x64 | 6.0 / 5.0 | 3.1 | |
OpenSUSE | 15.2 | x64 | 6.0 / 5.0 | 3.1 |
Ubuntu | 16.04 | x64 | 6.0 / 5.0 | 3.1 |
18.04 | x64 | 6.0 / 5.0 | 3.1 | |
20.04 | x64 | 6.0 / 5.0 | 3.1 |
Other, similar platforms supported by .NET should work as well but have not been tested.
Using NSec on Windows requires the Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017, 2019, and 2022. This dependency is included in the .NET SDK but might not be present, for example, when deploying a self-contained application.
The implementation of AES-GCM in NSec is hardware-accelerated and requires an
x64 processor with the AES-NI extension. The availability of this extension can
be determined at runtime using the static IsSupported
property of the
NSec.Cryptography.Aes256Gcm
class.