Sample code for the toolkit. Each directory has one or more self-contained programs inside demonstrating how to use the toolkit for a specific purpose:
aead_chacha20_poly1305
— Encrypt/decrypt using ChaCha20/Poly1305 for authenticated encryption.chacha20
— Encrypt/decrypt using ChaCha20.classicmceliece
— Generate keys, encapsulate and decapsulate data using the Classic McEliece KEM.common
— A small library of functions common to the samples.dilithium
— Generate Dilithium keys, sign a file's data with a Dilithium key, and verify a Dilithium signature.hash
— Hash a file's data using SHA2-256, SHA2-384, SHA2-512, SHA3-256, or SHA3-512.hss
— Generate keys, sign a file's data, detach signatures from a private key's state, and verify a signature using the HSS algorithm.integration
— Integrating the toolkit with other software.kdf
— Derive a key (some pseudorandom data) using the specified key derivation function.kyber
— Generate keys, encapsulate and decapsulate data using Kyber.mac
— Generate a message authentication code using the specified MAC algorithm.rng
— Generate pseudorandom bytes using HMAC-DRBG.sphincs
— Generate keys, sign a file's data, and verify a signature using the SPHINCS+ algorithm.version
— Display the library's version information.VisualStudio
— Visual Studio solution and project files.xmss
— Generate keys, sign a file's data, detach signatures from a private key's state, and verify a signature using the XMSS algorithm.
The integration
directory has samples showing how to integrate external
implementations with the toolkit. These samples may have external dependencies
on specific software such as OpenSSL, or specific operating system features such
as having a /dev/urandom
device available.
integration/hash-openssl
- Demonstrates using OpenSSL's SHA-256 and SHA-512 with the toolkit's hash API.integration/rng-cng
- Demonstrates using the Windows Cryptography API: Next Generation (CNG) with the toolkit's random number generator API.integration/rng-urandom
- Demonstrates using/dev/urandom
with the toolkit's random number generator API.
For an evaluation copy of the ISARA Radiate™ Quantum-Safe Library, please contact our sales team.
NOTE
In addition to your platform's usual development tools, you'll need a recent
version of cmake
(version 3.7 or newer): https://cmake.org/ For most systems,
you can use your platform's normal package tools to install it, but you may
need to build an up-to-date version. Binaries are also available on the CMake
website.
The samples use the IQR_TOOLKIT_ROOT
CMake or environment variable to
determine the location of the toolkit to build against. CMake requires that
environment variables are set on the same line as the CMake command, or are
exported environment variables in order to be read properly. If
IQR_TOOLKIT_ROOT
is a relative path, it must be relative to the directory
where you're running the cmake
command.
- Install the toolkit somewhere, e.g.
/path/to/toolkit/
. cd
to thesamples
directory, such as/path/to/toolkit/samples/
.- Use
mkdir
to make abuild
directory;cd
into thebuild
directory. - Run CMake:
cmake -DIQR_TOOLKIT_ROOT=/path/to/toolkit/ ..
orIQR_TOOLKIT_ROOT=/path/to/toolkit cmake ..
The..
in there refers to the parent of yourbuild
directory, so it'll pick up theCMakeLists.txt
in the mainsamples
directory. - Run make:
make
This will build all of the samples in individual directories under the build
directory.
Use -DSTATIC=ON
to link against the static toolkit library instead of the
default shared library.
NOTE
Don't build the samples on macOS using gcc
8, they will crash before main()
due to a problem with -fstack-protector-all
. Use clang
to produce Mac
binaries.
Windows developers can also use Visual Studio to build the samples, using the
solution and project files found in VisualStudio
.
To build individual samples:
- Install the toolkit somewhere, e.g.
/path/to/toolkit/
. cd
to the specificsamples
directory, such as/path/to/toolkit/samples/hash
.- Use
mkdir
to make abuild
directory;cd
into thebuild
directory. - Run CMake:
cmake -DIQR_TOOLKIT_ROOT=/path/to/toolkit/ ..
orIQR_TOOLKIT_ROOT=/path/to/toolkit cmake ..
The..
in there refers to the parent of yourbuild
directory, so it'll pick up theCMakeLists.txt
in the specificsamples
directory (the one inhash
in this case). - Run make:
make
This will build the specific sample in the build
directory.
See individual README.md
files in the sample subdirectories for instructions
on running specific samples.
Execute the samples with no arguments to use the default parameters, or use
--help
to list the available options.
For information about reporting security issues, please read the SECURITY document.
You can read the toolkit documentation online at ISARA's website:
See the LICENSE
file for details:
Copyright © 2016-2023, ISARA Corporation
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
ISARA Radiate™ is a trademark of ISARA Corporation.