QShield PQC Snap

Post-quantum ML-DSA-65 signatures for MetaMask Flask

Detecting MetaMask Flask...

Install Snap

This Snap adds NIST FIPS 204 ML-DSA-65 post-quantum cryptography to MetaMask. Generate quantum-resistant key pairs, create hybrid (ECDSA + ML-DSA-65) signatures, and verify PQC signatures — all from within MetaMask.

Getting Started

1

Install MetaMask Flask

MetaMask Flask is the developer edition that supports Snaps. Download Flask (disable regular MetaMask first).

2

Click "Install QShield Snap"

MetaMask will ask you to approve the Snap permissions: key storage, dialog prompts, and notifications.

3

Generate PQC Key Pair

Click "Generate Key" below or call qs_generateKeyPair from your dApp. A ML-DSA-65 key pair (1,952B public key) will be created and stored securely in the Snap.

4

Use with QShield L2

Connect to Web Wallet or dApp to use your PQC keys for quantum-resistant transactions on Chain 42069.

Try It

After installing, test the Snap's RPC methods:

Supported RPC Methods

qs_generateKeyPair Generate ML-DSA-65 key pair (Level 3)
qs_listKeys List all stored PQC keys
qs_getPublicKey Get public key by ID
qs_deleteKey Delete a key pair
qs_signHybrid ECDSA + ML-DSA-65 hybrid sign (3,375B)
qs_signPQCOnly ML-DSA-65 only signature (3,310B)
qs_verify Verify PQC signature component
qs_exportPublicKey Export public key as hex

For Developers

Install via npm or connect programmatically:

npm i @qshield-js/snap
// Connect from your dApp
const snapId = 'npm:@qshield-js/snap';


await window.ethereum.request({
  method: 'wallet_requestSnaps',
  params: { [snapId]: {} }
});

// Call Snap RPC
const result = await window.ethereum.request({
  method: 'wallet_invokeSnap',
  params: {
    snapId,
    request: { method: 'qs_generateKeyPair' }
  }
});