Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.privora.xyz/llms.txt

Use this file to discover all available pages before exploring further.

User recovery enables users to decrypt their own encrypted values locally without MPC participation.

How It Works

With dual encryption:
  • FHE ciphertext: For homomorphic computation
  • User ciphertext: For local recovery (X25519)

Setting Up UserCrypto

let keypair = Keypair::new();
let user_crypto = UserCrypto::from_keypair(&keypair)?;

Encrypting with Recovery

let encrypted = encryptor.encrypt(100u8)?;
let with_recovery = user_crypto.add_recovery(encrypted, &100u8.to_le_bytes())?;
let hash = privora.submit(&with_recovery).await?;

Decrypting Locally

let recovery = encrypted.user_recovery().unwrap();
let plaintext = user_crypto.decrypt_recovery(recovery)?;
let value = u8::from_le_bytes(plaintext.try_into().unwrap());

Decrypting MPC Results

let plaintext = user_crypto.decrypt_from_mpc(
    &result.ciphertext,
    &result.nonce,
    &result.ephemeral_pubkey,
)?;

When to Use Recovery

Use CaseUse Recovery?
User’s own balanceYes
User’s order detailsYes
Counterparty dataNo
System-generated valuesNo