KS.Fiks.Crypto
3.1.0
dotnet add package KS.Fiks.Crypto --version 3.1.0
NuGet\Install-Package KS.Fiks.Crypto -Version 3.1.0
<PackageReference Include="KS.Fiks.Crypto" Version="3.1.0" />
<PackageVersion Include="KS.Fiks.Crypto" Version="3.1.0" />
<PackageReference Include="KS.Fiks.Crypto" />
paket add KS.Fiks.Crypto --version 3.1.0
#r "nuget: KS.Fiks.Crypto, 3.1.0"
#:package KS.Fiks.Crypto@3.1.0
#addin nuget:?package=KS.Fiks.Crypto&version=3.1.0
#tool nuget:?package=KS.Fiks.Crypto&version=3.1.0
kryptering-dotnet
Common encryption and decryption logic required by various KS FIKS clients on the dotnet platform. All code is released under a MIT license
All crypto is performed using a portable C# version of the BouncyCastle library
Prerequisites
- This library targets .Net Core 3.1 as well as .Net Standard 2.1 and .Net Standard 2.0.
- A PEM file containing the BASE64 encoded public certificate to be used for encryption
- A PEM file containing the BASE64 encoded private key to be used for decryption
Example
Encryption
var encryptionService = EncryptionService.Create(/* public certificate */);
using (var encryptedOutStream = /* create out stream */)
using (var dataStream = /* the stream containing the unencrypted data */)
{
encryptionService.Encrypt(dataStream, encryptedOutStream);
}
Decryption
var decryptionService = DecryptionService.Create(/* private key */);
using (var encryptedDataInStream = /* stream containing the encrypted data */)
using (var decryptedOutStream = /* a stream to write the unencrypted data to */)
using (var decryptBufferStream = decryptionService.Decrypt(encryptedDataInStream))
{
decryptBufferStream.CopyTo(decryptedOutStream);
}
Decryption with multiple private keys
The key-only DecryptionService.Create overloads try RSA-OAEP recipients when multiple
private keys are supplied. Messages produced by this library include an RSA-OAEP recipient.
With BouncyCastle 2.7 and later, a failed legacy RSA PKCS#1 v1.5 unwrap returns a random
session key rather than throwing, so it cannot reliably identify the correct private key.
For automatic key selection with legacy-only messages, associate each private key with its matching certificate. The service matches CMS recipient identifiers (issuer and serial number, or subject key identifier) before opening the decrypted stream:
var decryptionService = DecryptionService.Create(new[]
{
new DecryptionKey(oldCertificate, oldPrivateKey),
new DecryptionKey(currentCertificate, currentPrivateKey)
});
The certificate and private key parameters are BouncyCastle X509Certificate and
AsymmetricKeyParameter instances. Key/certificate mismatches are rejected when creating
a DecryptionKey. No certificate trust or validity check is performed by this association.
If no certificate matches a recipient, decryption throws a CmsException.
For legacy-only messages without certificates, select a single private key explicitly;
supplying multiple unassociated keys throws a CmsException.
Decrypted content remains streamed; it is not buffered to guess which key succeeded.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- BouncyCastle.Cryptography (>= 2.7.0)
-
.NETStandard 2.1
- BouncyCastle.Cryptography (>= 2.7.0)
-
net10.0
- BouncyCastle.Cryptography (>= 2.7.0)
-
net8.0
- BouncyCastle.Cryptography (>= 2.7.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on KS.Fiks.Crypto:
| Package | Downloads |
|---|---|
|
KS.Fiks.IO.Crypto
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.1.0 | 95 | 11/4/2026 |
| 3.0.8 | 8,540 | 9/11/2026 |
| 3.0.3 | 3,959 | 4/21/2026 |
| 3.0.2 | 26,456 | 9/18/2025 |
| 3.0.1 | 299,124 | 4/9/2025 |
| 3.0.0 | 350 | 4/2/2025 |
| 2.0.5 | 336 | 4/2/2025 |
| 2.0.4 | 2,864 | 1/24/2025 |
| 2.0.3 | 71,421 | 9/18/2024 |
| 2.0.2 | 253,803 | 6/19/2024 |
| 2.0.1 | 42,692 | 11/14/2023 |
| 2.0.0 | 3,835 | 6/14/2023 |
| 1.0.6 | 923 | 5/31/2023 |