End-to-end technical pipeline

How ProofRoom verifies every step

Explore the five security layers that ensure your confidential fundraising documents are never exposed in plaintext to server operators or cloud hosts.

Layer 1 - Browser Client

1. Local AES-256-GCM document encryption

The document is read into browser memory and encrypted before touching the network. Our servers only ever receive ciphertext and commitment hashes.

Code implementation
// Generated locally in user's browser memory
const dek = crypto.getRandomValues(new Uint8Array(32));
const iv = crypto.getRandomValues(new Uint8Array(12));

const ciphertext = await crypto.subtle.encrypt(
  { name: "AES-GCM", iv, tagLength: 128 },
  await crypto.subtle.importKey("raw", dek, "AES-GCM", false, ["encrypt"]),
  plaintextBytes
);

Ready to explore ProofRoom?

Connect your testnet wallet to inspect our live workspace, upload files, and verify attestation.