wan24-Crypto-NaCl
2.7.0
v2.7.0 used a binary serializer which had a bugfix with missing backware compatibility. All data which was serialized with v2.7.0 may need to be re-written.
See the version list below for details.
dotnet add package wan24-Crypto-NaCl --version 2.7.0
NuGet\Install-Package wan24-Crypto-NaCl -Version 2.7.0
<PackageReference Include="wan24-Crypto-NaCl" Version="2.7.0" />
paket add wan24-Crypto-NaCl --version 2.7.0
#r "nuget: wan24-Crypto-NaCl, 2.7.0"
// Install wan24-Crypto-NaCl as a Cake Addin #addin nuget:?package=wan24-Crypto-NaCl&version=2.7.0 // Install wan24-Crypto-NaCl as a Cake Tool #tool nuget:?package=wan24-Crypto-NaCl&version=2.7.0
wan24-Crypto-NaCl
This library adopts NSec to
wan24-Crypto and extends the
wan24-Crypto
library with these algorithms:
Algorithm | ID | Name |
---|---|---|
KDF | ||
Argon2id | 1 | ARGON2ID |
How to get it
This library is available as NuGet package.
Usage
In case you don't use the wan24-Core
bootstrapper logic, you need to
initialize the NaCl extension first, before you can use it:
wan24.Crypto.NaCl.Bootstrapper.Boot();
This will register the algorithms to the wan24-Crypto
library.
To set NaCl defaults as wan24-Crypto
defaults:
NaClHelper.SetDefaults();
Per default the current wan24-Crypto
default will be set as counter
algorithms to HybridAlgorithmHelper
.
JSON configuration
You could implement a JSON configuration file using the AppConfig
logic from
wan24-Core
, and the NaClCryptoAppConfig
. There it's possible to define
disabled algorithms, which makes it possible to react to an unwanted algorithm
very fast, at any time and without having to update your app, for example. If
you use an AppConfig
, it could look like this:
public class YourAppConfig : AppConfig
{
public YourAppConfig() : base() { }
[AppConfig(AfterBootstrap = true, Priority = 20)]
public CryptoAppConfig? Crypto { get; set; }
[AppConfig(AfterBootstrap = true, Priority = 10)]
public NaClCryptoAppConfig? NaCl { get; set; }
}
await AppConfig.LoadAsync<YourAppConfig>();
NOTE: A NaClCryptoAppConfig
should be applied before a CryptoAppConfig
.
For this reason the example defines a priority in the AppConfigAttribute
.
In the config.json
in your app root folder:
{
"NaCl":{
...
}
}
Anyway, you could also place and load a NaClCryptoAppConfig
in any
configuration which supports using that custom type.
Argon2id
A simple KDF operation example:
(byte[] stretchedPwd, byte[] salt) = KdfArgon2IdAlgorithm.Instance.Stretch(pwd, len: 32);
To use Argon2id as default KDF algorithm:
KdfHelper.DefaultAlgorithm = KdfArgon2IdAlgorithm.Instance;
You may specify Argon2id specific options using the KdfArgon2IdOptions
,
which cast implicit to/from a JSON string. The default options are the OWASP
recommendations (46M memory usage):
(byte[] stretchedPwd, byte[] salt) = pwd.Stretch(len: 32, options: new KdfArgon2IdOptions()
{
// Configure the options here
});// KdfArgon2IdOptions cast implicit to CryptoOptions
Or when using CryptoOptions
:
CryptoOptions options = new()
{
KdfAlgorithm = KdfArgon2IdAlgorithm.ALGORITHM_NAME,
KdfIterations = KdfArgon2IdAlgorithm.Instance.DefaultIterations,
KdfOptions = new KdfArgon2IdOptions()
{
// Configure the options here
}
};
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- NSec.Cryptography (>= 24.4.0)
- wan24-Core (>= 2.31.0)
- wan24-Crypto (>= 2.16.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
2.11.0 | 87 | 10/27/2024 | |
2.10.0 | 76 | 9/21/2024 | |
2.9.0 | 101 | 9/9/2024 | |
2.8.0 | 120 | 8/16/2024 | |
2.7.1 | 74 | 7/13/2024 | |
2.7.0 | 100 | 7/6/2024 | |
2.6.0 | 94 | 6/22/2024 | |
2.5.0 | 113 | 6/16/2024 | |
2.4.0 | 130 | 3/9/2024 | |
2.3.0 | 130 | 3/2/2024 | |
2.2.0 | 111 | 2/24/2024 | |
2.1.2 | 111 | 2/17/2024 | |
2.1.1 | 122 | 2/11/2024 | |
2.1.0 | 105 | 2/10/2024 | |
2.0.0 | 113 | 1/21/2024 | |
1.4.2 | 153 | 11/11/2023 | |
1.4.1 | 146 | 10/21/2023 | |
1.4.0 | 137 | 10/15/2023 | |
1.3.0 | 124 | 10/8/2023 | |
1.2.0 | 131 | 10/1/2023 | |
1.1.0 | 117 | 9/19/2023 | |
1.0.0 | 112 | 9/16/2023 |