CryptoSys Home > CryptoSys PQC > Documentation

Documentation for CryptoSys PQC


Links to documentation for programming languages

A quick guide to using with the supported programming languages

For more details, see the main documentation (above) and the example test files.

C# and VB.NET

  1. In your source code use as appropriate:
    using CryptoSysPQC;
    
    Imports CryptoSysPQC
    
  2. In your .NET project EITHER add a reference to diCrSysPQCNet.dll (which you should find installed in C:\Program Files (x86)\CryptoSysPQC\DotNet), OR include the C# source code module CryptoSysPQC.cs directly in your project.

C++

  1. In your source code
    #include "crsyspqc.hpp"
  2. Compile your app code together with crsyspqc.cpp, and have the files crsyspqc.hpp and diCrPQC.h in the same directory.
  3. Link to the library file diCrPQC.lib

Python

  1. Install crsyspqc from PyPi pypi.org/project/crsyspqc/
  2. In your source code
    import crsyspqc
    

ANSI C

  1. In your source code
    #include "diCrPQC.h"
  2. Link to the library file diCrPQC.lib

Technical Details

The core executable diCrPQC.dll is a native Windows DLL compiled using Microsoft Visual C++ for both Win32 (x86) and X64 platforms (there are separate DLL files for each platform). This type of file used to be called a Win32 DLL. All programming language interfaces require this core native DLL to exist in the library search path of the user's system. The executable diCrPQC.dll is compatible with all versions of Windows XP and above. It does not require any other special libraries to work apart from the standard Win32 libraries available in all modern versions of Windows.

The wrapper executable diCrSysPQCNet.dll is a .NET Class Library created with Microsoft Visual C# set to target Microsoft .NET Framework 4.0 and above. It is compiled for all target platforms: Win32 and X64. This requires at least .NET 4.0 and should be upwardly compatible with all later .NET versions. It can be called from programs written in C# and VB.NET (aka VB2010+). The .NET class library calls the functions in the core native DLL using System.Runtime.InteropServices. The source code for this wrapper DLL is provided in the distribution, which you can use directly in your C# projects instead of referencing the .NET DLL.

The source code is written in pure ANSI C with extensive internal checks for memory leaks and overflow issues. It uses code derived from the NIST round 3 public domain Reference Implementations (see below) with full memory zeroization of all intermediate values and fixes to make all comparisons constant time.

Acknowledgements

The source code used in CryptoSys PQC uses code derived from the NIST round 3 public domain Reference Implementation code for

Includes SHA2 and SHAKE code based on the public domain implementations in

Thanks to Chris Celi (at) nist.gov for maintaining the ACVP test vectors which we have used extensively.

Contact us

To contact us, please send us a message. To comment on this page, see comments below.

[Go to top]

This page last updated 8 July 2025

Comments

   [Go to last comment] [Our comments policy]
[Go to first comment]