0 purchases
custom post quantum
post_quantum #
Dart implementation of NIST's post-quantum algorithm candidates.
Features #
This library includes the following algorithms:
Kyber, a post-quantum Key Encapsulation Mechanism.
Dilithium, a post quantum Signature scheme.
Usage #
Key Encapsulation with Kyber #
// Instantiate Kyber KEM.
var kyber = Kyber.kem512();
// Define a key generation seed.
var seed = base64Decode("AAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8AAQIDBAUGBwgJCgsMDQ4PAAECAwQFBgcICQoLDA0ODw==");
// Generate keys from seed.
var (pk, sk) = kyber.generateKeys(seed);
// Define a KEM nonce.
var nonce = base64Decode("Dw8ODg0NDAwLCwoKCQkICAcHBgYFBQQEAwMCAgEBAAA=");
// Encapsulate nonce and retrieve cipher and shared key.
var (cipher, sharedKey1) = kyber.encapsulate(pk, nonce);
// Or decapsulate the cipher and retrieve the shared key.
var sharedKey2 = kyber.decapsulate(cipher, sk);
copied to clipboard
Encryption and decryption with the internal Kyber PKE #
// Instantiate Kyber's internal PKE.
var kyber = KyberPKE.pke512();
// Define a key generation seed.
var seed = base64Decode("AAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8=");
// Generate keys from seed.
var (pk, sk) = kyber.generateKeys(seed);
// Set the message.
var msg = base64Decode("Dw4NDAsKCQgHBgUEAwIBAA8ODQwLCgkIBwYFBAMCAQA=");
// Define an encryption randomizer.
var coins = base64Decode("Dw8ODg0NDAwLCwoKCQkICAcHBgYFBQQEAwMCAgEBAAA=");
// Encrypt the message with the public key.
var cipher = kyber.encrypt(pk, msg, coins);
// Decrypt the cipher with the private key.
var decryptedMsg = kyber.decrypt(sk, cipher);
copied to clipboard
Signing and validating with Dilithium #
// Instantiate Dilithium.
var dilithium = Dilithium.level2();
// Define a key generation seed.
var seed = base64Decode("AAECAwQFBgcICQoLDA0ODwABAgMEBQYHCAkKCwwNDg8=");
// Generate keys from seed.
var (pk, sk) = dilithium.generateKeys(seed);
// Set the message.
var msg = base64Decode("Dw4NDAsKCQgHBgUEAwIBAA8ODQwLCgkIBwYFBAMCAQA=");
// Sign the message with the private key.
var signature = dilithium.sign(sk, msg);
// Verify the signature with the public key.
var isValid = dilithium.verify(pk, msg, signature);
copied to clipboard
Disclaimer #
This library has not been reviewed by security specialists, and therefore should not be treated as cryptographically secure.
Acknowledgements #
This implementation is based on the python implementation written by Giacomo Pope. Please go and check and support all of his projects.
step para levantar la app
traerse las dependencias de dart
---> dart pub get
correr los test
---> dart pub global run coverage:test_with_coverage
correr los ejemplos
dentro de la carpeta example ejecutar
---> dart run nombreArchivo
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.