Getting Started with MetaMUI Crypto Primitives

Side-channel claim limit. Nothing on this page claims constant-time behaviour or side-channel resistance for any target: the side-channel harness covers nothing (finding A48) and no measurement exists. The Rust and C cores are designed for constant time and unmeasured; managed runtimes (JIT, GC, bounds checks) make no timing claim. Where this page names constant-time or side-channel techniques, in prose or in code, they are design intent or recommendations, not measured properties.

MetaMUI Crypto is a release candidate (1.0.0-rc.7) with no package published on a public registry yet; see the Installation Guide for building from source and for the decided package coordinates.

Choose Your Platform

Quick example

One ML-KEM-768 round trip in three of the ten targets; the Quick Start page has every language, and each snippet there was run against a locally built candidate of the 1.0.0-rc.7 tree.

Python

from metamui_crypto.facade import profile

kem = profile("ml-kem-768")
ek, dk = kem.generate_keypair()
ct, ss = kem.encapsulate(ek)
assert kem.decapsulate(dk, ct) == ss

Rust

use metamui_crypto::mlkem768;

let mut rng = rand::rngs::OsRng;
let kem = mlkem768::generate_keypair(&mut rng)?;
let (ct, ss) = mlkem768::encapsulate(&kem.encapsulation_key, &mut rng)?;
assert_eq!(mlkem768::decapsulate(&kem.decapsulation_key, &ct)?, ss);

TypeScript

import { mlkem768 } from '@metamui/crypto';

const receiver = await mlkem768.generateKeyPair();
const { ciphertext, sharedSecret } = await mlkem768.encapsulate(receiver.encapsulationKey);
const same = await mlkem768.decapsulate(receiver.decapsulationKey, ciphertext);

Core concepts

1. Own implementations

Every algorithm is MetaMUI’s own implementation; no package wraps an external cryptography library. Each is validated against the algorithm’s upstream test vectors (NIST ACVP, the Round-3 and KpqC reference files, the RFC appendices), and a missing vector file fails the test run.

2. Explicit profiles

A profile identifier (ml-kem-768, falcon-512.r3-padded, …) names one algorithm, one parameter set and one wire encoding, and never changes meaning. A family name is refused rather than substituted; ML-DSA, SLH-DSA, HAETAE and AIMer sign under a required context string.

3. What is not claimed

Next Steps

  1. Installation Guide - Build from source instructions
  2. Platform Guides - Platform-specific documentation
  3. API Reference - Complete API documentation
  4. Security Best Practices - Security guidelines
  5. Algorithm Details - In-depth algorithm information
  6. Integration Examples - Real-world usage examples

Getting Help


Ready to build quantum-resistant applications? Let’s get started!