NKalkan 0.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package NKalkan --version 0.1.1                
NuGet\Install-Package NKalkan -Version 0.1.1                
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="NKalkan" Version="0.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NKalkan --version 0.1.1                
#r "nuget: NKalkan, 0.1.1"                
#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 NKalkan as a Cake Addin
#addin nuget:?package=NKalkan&version=0.1.1

// Install NKalkan as a Cake Tool
#tool nuget:?package=NKalkan&version=0.1.1                

NKalcan

Библиотека для работы с криптопровайдером АО "НУЦ" KalkanCrypt

Данная библиотека использует C API, в том числе на Windows. KalkanCryptCOM.dll не используется.

Особенности работы с Windows.

В настройках Windows надо установить системную локаль на Kazakh (Kazakhstan). Это позволит прочитать названия организаций корректно.

Так как НУЦ не разрешает распространять бинарники, то надо самостоятельно положить KalkanCrypt_x64.dll в папку с конечным исполняемым файлом. Как например NKalcan.TestBed\bin\Debug\net7.0.

Особенности настройки Linux

Эта библиотека требует чтобы стандартные механизмы загрузки SO файлов на Linux заработали для libkalkancryptwr-64.so Или настройте в соответсвии с инструкциями в файле C/Linux/C/README.txt или можете выполнить следующие операции

  • скопируйте файлы setup.sh и ld.kalkan.conf в папку C/Linux/C/ вашего SDK
  • перейдите в папку C/Linux/C/
  • запустите setup.sh

Поддержка MacOS

У меня нету Мака, потому есть вероятность что какие то проблемы есть. Если обнаружите баг, то создайте тикет в Гитхабе.

Примеры использования

Подпись XML документа

using NKalkan;

var certificatePath = "GOSTKNCA_60e31061cedbcc9f917a2be0fb8ec3c04eb4b598.p12";
var certificatePassword = "Qwerty12";
var documentToSign = "<xml><MyData /></xml>";
var client = new KalkanApi();

client.LoadKeyStore(KalkanStorageType.PKCS12, certificatePath, certificatePassword);
var signedXml = client.SignXml(documentToSign);

Console.WriteLine(signedXml);

Проверка XML документа

try
{
    api.VerifyXml(signedXml);
    Console.WriteLine("XML verified successfully!");
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

Загрузка ключа из памяти

Загрузка из массива байт

var certificateBytes = File.ReadAllBytes(certificatePath);
api.LoadKeyStore(KalkanStorageType.PKCS12, certificateBytes, certificatePassword);

Загрузка из потока

using var stream = File.OpenRead(certificatePath);
api.LoadKeyStore(KalkanStorageType.PKCS12, stream, certificatePassword);

Загрузка из массива байт

var base64Content = Convert.ToBase64String(File.ReadAllBytes(certificatePath));
api.LoadKeyStoreFromBase64(KalkanStorageType.PKCS12, base64Content, certificatePassword);

Реализованные API методы

Если вам нужны определенные методы прямо сейчас, создайте задачу в Гитхабе, и с большой вероятностью вы увидите это в следующем релизе.

Метод Статус
KC_GetTokens
KC_GetCertificatesList
KC_LoadKeyStore
X509LoadCertificateFromFile
X509LoadCertificateFromBuffer
X509ExportCertificateFromStore
X509CertificateGetInfo
X509ValidateCertificate
HashData
SignHash
SignData
SignXML
VerifyData
VerifyXML
KC_getCertFromXML
KC_getSigAlgFromXML
KC_GetLastError
KC_GetLastErrorString
KC_XMLFinalize
KC_Finalize
KC_TSASetUrl
KC_GetTimeFromSig
KC_SetProxy
KC_GetCertFromCMS
SignWSSE
ZipConVerify
ZipConSign

Лицензия

Данное ПО опубликовано под MIT лицензией.

Product 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.  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. 
.NET Framework net472 is compatible.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.7.2

    • No dependencies.
  • net6.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.6.1 136 10/29/2024
0.6.0 101 10/26/2024
0.5.0 1,362 1/18/2024
0.4.0 133 1/14/2024
0.3.0 180 10/3/2023
0.2.0 197 5/13/2023
0.1.1 187 4/6/2023
0.1.0 184 4/6/2023