FluentCrossPlatformCrypto 0.1.0
dotnet add package FluentCrossPlatformCrypto --version 0.1.0
NuGet\Install-Package FluentCrossPlatformCrypto -Version 0.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FluentCrossPlatformCrypto" Version="0.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FluentCrossPlatformCrypto --version 0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FluentCrossPlatformCrypto, 0.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FluentCrossPlatformCrypto as a Cake Addin #addin nuget:?package=FluentCrossPlatformCrypto&version=0.1.0 // Install FluentCrossPlatformCrypto as a Cake Tool #tool nuget:?package=FluentCrossPlatformCrypto&version=0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Overview
FluentCrossPlatformCrypto is a wrapper offering
- a fluent interface on top of some .NET native cryptography functions
- the same interface in a browser-wasm environment using interop to the JavaScript Web Crypto API
Warning
Please keep in mind that this library is a wrapper around cryptography APIs and the keys might be visible to any code having access to the computer memory.
Available Algorithms
Feature | .NET System.Security.Cryptography | Web Crypto API |
---|---|---|
Digest | SHA1 / SHA256 / SHA384 / SHA512 | subtle.digest |
Encrypt / Decrypt | Aes / RSA | subtle.encrypt / decrypt |
Sign / Verify | RSA / ECDsa / HMAC | subtle.sign / verify |
Key Derivation | ECDiffieHellman / Rfc2898DeriveBytes / HKDF | subtle.deriveBits |
Examples
RSA signature verification
var rsaPublicKey = await Algorithm.Rsa.Pss[Algorithm.Digest.Sha256].Import
.Spki("the signer public key in base64".FromBase64());
var isValid = await rsaPublicKey.Verify(
Encoding.UTF8.GetBytes("the signed message"),
"the signature in base64".FromBase64()
);
AES encryption after PBKDF2 password derivation
var pbkdf2 = await Algorithm.Pbkdf2[Algorithm.Digest.Sha256].Import.Text("My password");
var aes = await pbkdf2.With(iterations:1000).DeriveToAes();
var encrypted = await aes.Encrypt("My secret information");
EC DiffieHellman exchange followed by HKDF derivation
var import = Algorithm.Ec.P521.Dh[Algorithm.Digest.Sha384].Import;
var alicePrivateKey = await import.Pkcs8("Alice private key".FromBase64());
var bobPublicKey = await import.Spki("Bob public key".FromBase64());
var sharedSecret = await alicePrivateKey.With(bobPublicKey).Derive();
var hkdf = await Algorithm.Hkdf[Algorithm.Digest.Sha256].Import.Raw(sharedSecret);
var dedicatedKey = await hkdf.With(info: "for some intent").DeriveToAes();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net7.0
- No dependencies.
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 |
---|---|---|
0.1.0 | 512 | 9/27/2023 |