The JS module of the post-quantum digital signature algorithm (FALCON).
For more information about the FALCON post-quantum digital signature algorithm, please refer to the following link: FALCON
npm install falcon-sign
git clone git@github.com:pqcsf/falcon-sign-js.git
cd falcon-sign-js
const { getKernel } = require('falcon-sign');
(async () =>
{
let Falcon512 = await getKernel('falcon512_n3_v1'); //get falcon512_n3_v1 Kernel
//gernkey
let keypair = Falcon512.genkey(); //return { sk, pk, genKeySeed }
//sign
let text = 'TEST MSG';
let sign = Falcon512.sign(text, keypair.sk);
//verify
console.log(Falcon512.verify(sign, text, keypair.pk));
//create public key by private key
let pk = Falcon512.publicKeyCreate(keypair.sk);
})();
Only the name of getKernel needs to be changed. (falcon512_n3_v1 -> falcon1024_n3_v1)
const { getKernel } = require('falcon-sign');
(async () =>
{
let Falcon1024 = await getKernel('falcon1024_n3_v1'); //get falcon512_n3_v1 Kernel
//gernkey
let keypair = Falcon1024.genkey(); //return { sk, pk, genKeySeed }
//sign
let text = 'TEST MSG';
let sign = Falcon1024.sign(text, keypair.sk);
//verify
console.log(Falcon1024.verify(sign, text, keypair.pk));
//create public key by private key
let pk = Falcon1024.publicKeyCreate(keypair.sk);
})();
let seed = new Uint8Array(.....);
let keypair = Falcon512.genkey(seed);
Seed length according to: Falcon512.genkeySeedByte, different algorithms may have different lengths.
const salt = new Uint8Array(.....);
let sign = Falcon512.sign(text, keypair.sk, salt);
Salt length according to: Falcon512.signSaltByte, different algorithms may have different lengths.
The API is here: API Reference
The license is here: License
- PQCSF (pqcsecondfoundation@gmail.com)