Skip to content

btq-ag/btq-falcon-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

btq-falcon-js

BTQ's customized javascript implementation of FALCON

What's FALCON?

FALCON (Fast-Fourier Lattice-based Compact Signatures over NTRU) stands at the forefront of cryptographic innovation. It's a state-of-the-art post-quantum signature scheme, which has gained recognition and endorsement by the National Institute of Standards and Technology (NIST) in their fourth round of the post-quantum standardization process. FALCON is designed to withstand the potential cryptographic challenges posed by quantum computing, making it a critical tool for safeguarding digital security in the future. To delve deeper into FALCON's intricacies and its role in the cryptographic landscape, visit their official website.

In our version of FALCON, we've gone a step further. While adhering to the core principles of the original FALCON implementation, we've introduced modifications that enhance the deterministic nature of the algorithm's output. This crucial improvement aligns perfectly with our aggregate signature solution, PQScale, elevating its efficiency and reliability without compromising the fundamental aspect of security.

About this repo

This repository is a comprehensive package for compiling the C implementation of FALCON into JavaScript and WebAssembly. Drawing inspiration and building upon the remarkable work of Grammatopoulos Athanasios-Vasileios (see his implementation), our version contains these unique features:

  1. Integration of BTQ's specialized version of the FALCON algorithm.
  2. Inclusion of an additional method in the JavaScript interface, enabling the conversion of a secret key to a public key.

Local Setup and Testing

To get started, please follow these steps:

npm install
npm run test

This will install all necessary dependencies and run a series of unit tests to verify the integrity and functionality of the implementation.

Examples

For a hands-on introduction to using btq-falcon-js, the test/index.test.ts file is your go-to resource. This file not only serves as a test suite but also acts as a practical guide, demonstrating the usage of the compiled output in various scenarios.

NPM installation

The btq-falcon-js library is readily available for installation through NPM. Choose between the JavaScript or WebAssembly version based on your requirements:

For JavaScript implementation:

npm install @btq-js/falcon-js

For WebAssembly version:

npm install @btq-js/falcon-wasm

Compile from source

For those interested in compiling the original C implementation into JavaScript/WebAssembly, the following instructions will guide you through the process. Ensure you have Emscripten installed on your system:

make clean
make

Appreciation and Legal Notes

btq-falcon-js is distributed under the permissive MIT license.

This project owes its existence and evolution to:

  1. The original Falcon implementation
  2. Emscripten compiler setup by Grammatopoulos Athanasios-Vasileios

About

BTQ's customized javascript implementation of FALCON

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages