Use a PKCS#11 token in your apps with a few lines of code

NCryptoki is a library for .NET framework, and Java that implements the PKCS#11 specifications and supplies an API for C#, VB.NET, Visual Basic 6, Delphi and other COM interop languages for integrating a PKCS#11 compliant token in any application.

NCryptoki maps the cryptoki's functions defined in PKCS#11 specification in a set of high level classes for C#, VB.NET, and Java and proposes a programming paradigm that allows to integrate your PKCS#11 compliant token in your applications with a few lines of code.

NCryptoki supplies also a COM interface that allows to use the supplied classes in any language that supports COM interop like Visual Basic 6, Delphi etc.

Main Features:
- Compliant with PKCS#11 2.20 specifications
- Compliant with any PKCS#11 smart card/token/HSM
- 32 or 64 bit platform
- .NET Framework 3.5 or later
- Java 6 or later

Why should I use NCryptoki?

NCryptoki allows to avoid from the extremely tedious work needed to import in your favorite programming language the PKCS#11 functions exposed by PKCS#11 native implementations. Thanks to NCryptoki you can reduce the complexity of your code and save a lot of development time.

More in depth, PKCS#11 functions for accessing smart cards and tokens, described in PKCS#11 specifications, are implemented in a native, unmanaged, dynamic link library (dll) written in C/C++. If you want to call PKCS#11 functions in your C# and/or VB.NET and/or Java code you have no chance to avoid from using platform invoke services (P-Invoke) supplied by .NET Framework or by JNI, to import the unmanaged functions of the native PKCS#11 library in your managed code. But importing functions from an unmanaged dll, especially from a highly complex PKCS#11 dll, requires very advanced skills in C/C++ and .NET and compels a lot of tedious work to declare the function prototypes using the P-Invoke or JNI rules and to deal with the marshalling of custom parameters.

NCryptoki allows to avoid from dealing hard with P-Invoke or JNI declarations giving a easy way to reduce the complexity of your code and to save a lot of development time.