wan24-Crypto-BC
1.5.0
See the version list below for details.
dotnet add package wan24-Crypto-BC --version 1.5.0
NuGet\Install-Package wan24-Crypto-BC -Version 1.5.0
<PackageReference Include="wan24-Crypto-BC" Version="1.5.0" />
paket add wan24-Crypto-BC --version 1.5.0
#r "nuget: wan24-Crypto-BC, 1.5.0"
// Install wan24-Crypto-BC as a Cake Addin #addin nuget:?package=wan24-Crypto-BC&version=1.5.0 // Install wan24-Crypto-BC as a Cake Tool #tool nuget:?package=wan24-Crypto-BC&version=1.5.0
wan24-Crypto-BC
This library adopts
The Bouncy Castle Cryptography Library For .NET
to wan24-Crypto and extends
the wan24-Crypto
library with these algorithms:
Algorithm | ID | Name |
---|---|---|
Asymmetric | ||
CRYSTALS-Kyber | 2 | CRYSTALSKYBER |
CRYSTALS-Dilithium | 3 | CRYSTALSDILITHIUM |
FALCON | 4 | FALCON |
SPHINCS+ | 5 | SPHINCSPLUS |
FrodoKEM | 6 | FRODOKEM |
Symmetric | ||
ChaCha20 | 1 | CHACHA20 |
XSalsa20 | 2 | XSALSA20 |
NOTE: FrodoKEM is currently disabled, 'cause there seems to be a bug (missing code) in the Bouncy Castle library for FrodoKEM.
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 Bouncy Castle extension first, before you can use it:
wan24.Crypo.BC.Bootstrapper.Boot();
This will register the algorithms to the wan24-Crypto
library.
Post quantum safety
These algorithms are designed for post quantum cryptography:
- CRYSTALS-Kyber (key exchange)
- CRYSTALS-Dilithium (signature)
- FALCON (signature)
- SPHINCS+ (signature)
- FrodoKEM (key exchange)
Normally you want to use them in hybrid mode as counter algorithm for
extending a default algorithm of the wan24-Crypto
package. To do this per
default:
// Enable the post quantum algorithms as counter-defaults
CryptoHelper.ForcePostQuantumSafety();
This will use these algorithms as counter algorithms for asymmetric cryptography, in case you didn't define other post quantum algorithms already:
- CRYSTALS-Kyber (key exchange)
- CRYSTALS-Dilithium (signature)
For using other algorithms instead:
// FALCON
HybridAlgorithmHelper.SignatureAlgorithm =
AsymmetricHelper.GetAlgorithm(AsymmetricFalconAlgorithm.ALGORITHM_NAME);
// SPHINCS+
HybridAlgorithmHelper.SignatureAlgorithm =
AsymmetricHelper.GetAlgorithm(AsymmetricSphincsPlusAlgorithm.ALGORITHM_NAME);
// FrodoKEM
HybridAlgorithmHelper.KeyExchangeAlgorithm =
AsymmetricHelper.GetAlgorithm(AsymmetricFrodoKemAlgorithm.ALGORITHM_NAME);
The counter algorithm will come in effect, if you use asymmetric keys for encryption:
// Create options having a counter private key
CryptoOptions options = EncryptionHelper.GetDefaultOptions();
options.SetCounterPrivateKey(yourKyberPrivateKey);
// Encrypt using the options and your normal private key
byte[] cipherData = rawData.Encrypt(yourNormalPrivateKey, options);
rawData = cipherData.Decrypt(yourNormalPrivateKey, options);
And for signature:
// Create options having a counter private key
CryptoOptions options = AsymmetricHelper.GetDefaultSignatureOptions();
options.SetCounterPrivateKey(yourDilithiumPrivateKey);
// Sign using the options and your normal private key
SignatureContainer signature = dataToSign.Sign(yourNormalPrivateKey, options: options);
Algorithm parameters used
For CRYSTALS-Kyber and CRYSTALS-Dilithium the AES parameters are being used. When using SPHINCS+, the Haraka F hashing parameters will be used. For FrodoKEM the AES parameters will be used.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
-
net6.0
- BouncyCastle.Cryptography (>= 2.2.1)
- wan24-Core (>= 1.8.2)
- wan24-Crypto (>= 1.8.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 | |
---|---|---|---|
3.14.0 | 83 | 10/27/2024 | |
3.13.0 | 85 | 9/21/2024 | |
3.12.0 | 81 | 9/9/2024 | |
3.11.0 | 112 | 8/16/2024 | |
3.10.1 | 96 | 7/13/2024 | |
3.10.0 | 116 | 7/6/2024 | |
3.9.0 | 100 | 6/29/2024 | |
3.8.0 | 108 | 6/22/2024 | |
3.7.0 | 90 | 6/16/2024 | |
3.6.0 | 99 | 5/26/2024 | |
3.5.1 | 130 | 4/13/2024 | |
3.5.0 | 116 | 4/13/2024 | |
3.4.0 | 133 | 3/9/2024 | |
3.3.0 | 134 | 3/2/2024 | |
3.2.0 | 116 | 2/24/2024 | |
3.1.0 | 99 | 2/17/2024 | |
3.0.0 | 121 | 2/11/2024 | |
2.0.0 | 106 | 1/21/2024 | |
1.19.3 | 169 | 11/11/2023 | |
1.19.2 | 104 | 11/1/2023 | |
1.19.1 | 135 | 10/29/2023 | |
1.19.0 | 155 | 10/21/2023 | |
1.18.0 | 153 | 10/15/2023 | |
1.17.0 | 128 | 10/8/2023 | |
1.16.0 | 145 | 10/1/2023 | |
1.15.0 | 141 | 9/19/2023 | |
1.14.0 | 112 | 9/16/2023 | |
1.13.0 | 164 | 9/10/2023 | |
1.12.0 | 160 | 9/3/2023 | |
1.11.1 | 165 | 7/30/2023 | |
1.11.0 | 148 | 7/30/2023 | |
1.10.0 | 157 | 7/22/2023 | |
1.9.0 | 153 | 6/8/2023 | |
1.8.0 | 147 | 6/3/2023 | |
1.7.0 | 138 | 5/29/2023 | |
1.6.0 | 150 | 5/27/2023 | |
1.5.0 | 161 | 5/20/2023 | |
1.4.1 | 151 | 5/13/2023 | |
1.4.0 | 175 | 5/11/2023 | |
1.3.0 | 185 | 5/7/2023 | |
1.2.0 | 189 | 5/1/2023 | |
1.1.0 | 187 | 4/30/2023 | |
1.0.1 | 187 | 4/28/2023 | |
1.0.0 | 207 | 4/28/2023 |