wan24-Crypto-BC
1.14.0
See the version list below for details.
dotnet add package wan24-Crypto-BC --version 1.14.0
NuGet\Install-Package wan24-Crypto-BC -Version 1.14.0
<PackageReference Include="wan24-Crypto-BC" Version="1.14.0" />
paket add wan24-Crypto-BC --version 1.14.0
#r "nuget: wan24-Crypto-BC, 1.14.0"
// Install wan24-Crypto-BC as a Cake Addin #addin nuget:?package=wan24-Crypto-BC&version=1.14.0 // Install wan24-Crypto-BC as a Cake Tool #tool nuget:?package=wan24-Crypto-BC&version=1.14.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 |
AES-256-GCM AEAD (128 bit MAC) | 3 | AES256GCM |
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.Crypto.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.31.1)
- wan24-Crypto (>= 1.18.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 | 84 | 10/27/2024 | |
3.13.0 | 86 | 9/21/2024 | |
3.12.0 | 82 | 9/9/2024 | |
3.11.0 | 113 | 8/16/2024 | |
3.10.1 | 97 | 7/13/2024 | |
3.10.0 | 117 | 7/6/2024 | |
3.9.0 | 101 | 6/29/2024 | |
3.8.0 | 109 | 6/22/2024 | |
3.7.0 | 90 | 6/16/2024 | |
3.6.0 | 100 | 5/26/2024 | |
3.5.1 | 131 | 4/13/2024 | |
3.5.0 | 117 | 4/13/2024 | |
3.4.0 | 134 | 3/9/2024 | |
3.3.0 | 137 | 3/2/2024 | |
3.2.0 | 116 | 2/24/2024 | |
3.1.0 | 100 | 2/17/2024 | |
3.0.0 | 124 | 2/11/2024 | |
2.0.0 | 107 | 1/21/2024 | |
1.19.3 | 170 | 11/11/2023 | |
1.19.2 | 105 | 11/1/2023 | |
1.19.1 | 138 | 10/29/2023 | |
1.19.0 | 156 | 10/21/2023 | |
1.18.0 | 153 | 10/15/2023 | |
1.17.0 | 129 | 10/8/2023 | |
1.16.0 | 147 | 10/1/2023 | |
1.15.0 | 141 | 9/19/2023 | |
1.14.0 | 113 | 9/16/2023 | |
1.13.0 | 165 | 9/10/2023 | |
1.12.0 | 161 | 9/3/2023 | |
1.11.1 | 165 | 7/30/2023 | |
1.11.0 | 149 | 7/30/2023 | |
1.10.0 | 158 | 7/22/2023 | |
1.9.0 | 154 | 6/8/2023 | |
1.8.0 | 148 | 6/3/2023 | |
1.7.0 | 141 | 5/29/2023 | |
1.6.0 | 151 | 5/27/2023 | |
1.5.0 | 162 | 5/20/2023 | |
1.4.1 | 151 | 5/13/2023 | |
1.4.0 | 176 | 5/11/2023 | |
1.3.0 | 188 | 5/7/2023 | |
1.2.0 | 190 | 5/1/2023 | |
1.1.0 | 188 | 4/30/2023 | |
1.0.1 | 190 | 4/28/2023 | |
1.0.0 | 208 | 4/28/2023 |