PHP code example of paragonie / ext-pqcrypto
1. Go to this page and download the library: Download paragonie/ext-pqcrypto library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
paragonie / ext-pqcrypto example snippets
var_dump(extension_loaded('pqcrypto')); // bool(true)
[$sk, $pk] = PQCrypto\XWing::generateKeypair();
[$sharedSecret, $ciphertext] = $pk->encapsulate();
$recipientSecret = $sk->decapsulate($ciphertext);
assert(hash_equals($recipientSecret, $sharedSecret));
// ML-KEM-768 (also: MLKem512, MLKem1024)
[$sk, $pk] = PQCrypto\MLKem768::generateKeypair();
[$sharedSecret, $ciphertext] = $pk->encapsulate();
$recipientSecret = $sk->decapsulate($ciphertext);
assert(hash_equals($recipientSecret, $sharedSecret));
// Serialize / restore
$skBytes = $sk->bytes(); // 64-byte seed
$sk2 = PQCrypto\MLKem768\DecapsulationKey::fromBytes($skBytes);
// ML-DSA-44 (also: MLDSA65, MLDSA87)
[$signingKey, $verifyingKey] = PQCrypto\MLDSA44::generateKeypair();
$signature = $signingKey->sign('message');
$valid = $verifyingKey->verify($signature, 'message'); // true
$invalid = $verifyingKey->verify($signature, 'wrong'); // false
// Serialize / restore
$seed = $signingKey->bytes(); // 32-byte seed
$sk2 = PQCrypto\MLDSA44\SigningKey::fromBytes($seed);
// Parameters: hash function + speed
// Hash: 'shake128', 'shake192', 'shake256',
// 'sha2-128', 'sha2-192', 'sha2-256'
// Speed: 'fast' (larger sigs) or 'small' (smaller sigs)
$slh = new PQCrypto\SLHDSA('shake256', 'fast');
[$signingKey, $verifyingKey] = $slh->generateKeypair();
$signature = $signingKey->sign('message');
$valid = $verifyingKey->verify($signature, 'message');
// Import keys
$sk2 = $slh->importSigningKey($signingKey->bytes());
$vk2 = $slh->importVerifyingKey($verifyingKey->bytes());