LOCAL MODE · CODE INTEGRITY v1

Transparency

Raziel's local mode encrypts your files entirely in your browser. This page lets you — or anyone — verify that the crypto code we serve is exactly the code described here, and that it has not been silently swapped.

How the verification chain works

  1. Every client-side crypto file is hashed (SHA-384) into a manifest.
  2. The manifest is signed with the Raziel release key (Ed25519). The private key is kept offline of the web root.
  3. The site's loader (/js/integrity-loader.js) pins the hash of the main module and refuses to run local mode if the served bytes differ — your browser enforces this on every use.
  4. To verify independently: recompute hashes from the upstream library source and compare with the manifest below.

Upstream source: github.com/dajiaji/mlkem — tag v2.7.0, tarball SHA-256 in the table below. The public key above is the raw Ed25519 public point; to derive the DER file for openssl, decode it: openssl base64 -d -A -in pubkey.b64 > raziel_release.pub (the base64 string itself is DER-encoded SPKI).

Pinned module

Module/js/raziel-local.mjs
SHA-3849lBBT1gqu2ZXgja7x/dH0g58vZn0+gnxWJApN9/7JgWijR7AbesI6+udpW/G3h6h
KEM librarydajiaji/mlkem v2.7.0 (vendored at /vendor/mlkem-esm/, MIT license) — FIPS 203 ML-KEM-768 pure TypeScript
Upstream tarball SHA-2564a85db57ce8cf3e6ab5e7a25f2ccbefc6a3a1121de91b0a0349c76c69825bd48
Wire formatRZWB v2 (segmented): header = ML-KEM-768 ct(1088B) + 12B file nonce + segment size (u32be); payload split into 8 MiB segments, each AES-256-GCM sealed with key SHA-256(ss‖nonce‖u32be seg_idx) and AAD binding seg_idx (reorder/splice fails auth). Legacy v1 whole-file boxes remain decryptable.

Release signature

Manifest signature (Ed25519, base64):

ROka6FD5L6z9zn3aBS/nwvcmtPZ9oOgB7J4el/3tB5RzvV4s4kNE4c4m0blKNH5Xf7OM8+ENvwSI9qpuiVHvDQ==

Verify with the public key:

pubkey base64: MCowBQYDK2VwAyEA3usuC7OBB2OnjYmnCiFeI0ln2rfaNt7NlYciT85oO/g=

# verify:
openssl pkeyutl -verify -pubin -inkey raziel_release.pub \
  -rawin -in integrity-manifest.txt \
  -sigfile <(openssl base64 -d -A -in integrity-manifest.txt.sig.b64)

Full manifest (20 files)

sha384-9lBBT1gqu2ZXgja7x/dH0g58vZn0+gnxWJApN9/7JgWijR7AbesI6+udpW/G3h6h  js/raziel-local.mjs
sha384-0x2JwP42aAIxytvR7FKURtdYCBX2ogpeToQ3qOoDLbFt3wMNubL3SkOrjdjNOz9T  vendor/mlkem-esm/mod.js
sha384-xzxzOOmtngUpFaQZGZh5j1SlURJF6p9DwzEVoqiUlHoB0h86s6NA75J/68BHoR6t  vendor/mlkem-esm/_dnt.shims.js
sha384-9KrU7ISW6bCxWu7rGkNBM4M48aa69cv8V9ZXJk4CmQTSNk8nFZznTbbXuWtoSwdd  vendor/mlkem-esm/src/consts.js
sha384-K6eZ88/UNkto5SiPJuwnn8bKUvW4WU8A3rEFmD7XrfzzOj0BHqUfNvvFcnIl6VoI  vendor/mlkem-esm/src/deps.js
sha384-z2lO8VxAtHgEbQ3frIchfwtnj5Twp4qG9xUt4wu4HRrm7gmd5ATALqPx5HnJny4c  vendor/mlkem-esm/src/errors.js
sha384-z0dQZuTpVhlJhRpzBVjQTCgdq+BUSh89DMD4c8ea5gn4XTF+416jeLVKPWSl2O8q  vendor/mlkem-esm/src/interfaces.js
sha384-xIIDMbPdbMilCiOXwi3oOMh491YW4/gcDVfEAPbebzqWOeWzJPCWFImc1o5kgyi6  vendor/mlkem-esm/src/mlKem1024Base.js
sha384-HviZ2jNeFSb27Y9NI/wg0NMGg7T/pTjr2dYzpUmKMQ4b7gpioyCVx+4oYXRIuyt0  vendor/mlkem-esm/src/mlKem1024Impl.js
sha384-T9mCouNwbuwHWty8+WyPyktnPidPh0PE/TuxHRlCJCsZ9HWJkJgylfsyyAr4KYiK  vendor/mlkem-esm/src/mlKem1024.js
sha384-uHv0HfCc0Fx1U2jSoNhHA15ZKYPaGn1fl6An4zPc2CBdj4B7/qXm5QGOsv34aQzZ  vendor/mlkem-esm/src/mlKem512Base.js
sha384-xyvc98DZqsgmz93WniKiaKVMNWyr96IbDdYiVfvoOHxN6bbxiEB2CBqfSLZXdyL0  vendor/mlkem-esm/src/mlKem512Impl.js
sha384-tqQ9pT7cHq/xuMBKUqdJsK4vgWEYCv01JoTKJi+58M7fz3HjJBi98tlqfE8zl/a1  vendor/mlkem-esm/src/mlKem512.js
sha384-5xlVHP2axEx+4xqye3IvZajjTnyrgnx2hyR8mAYCFdjEQ+8m7Wt9jlQPPT+l5zyy  vendor/mlkem-esm/src/mlKem768Impl.js
sha384-JdA54hEd523LGoIKk1Cyp+D77APZT0gohtuSQ1OCDBbPLfMltrIxqFmz5Djqx2Tt  vendor/mlkem-esm/src/mlKem768.js
sha384-g0b4w/aD8a2eg0CYdGshjtkrpDEs5SHqisfriHC/BN2S56v8Kd2o9tZ6yII1s0hO  vendor/mlkem-esm/src/mlKemBase.js
sha384-DqjQqykaRBczkkJFwYdUa6daLmldcQ8sOMAQGSCe4SJQtcXZ4tnX1+674bbCaU4M  vendor/mlkem-esm/src/sha3/sha3.js
sha384-1lvBiBIIcXKZL8OSGQtnvtYDHXz7tSEtUgmkUcYk/mX7iCkMHWBc8xPNEGDQfS5W  vendor/mlkem-esm/src/sha3/_u64.js
sha384-APle4r3FaHxNZpTCJYq78LI11f14BfU4JmoBsCcQZgFPmEHH9VmcjxIhTHozUzAA  vendor/mlkem-esm/src/sha3/utils.js
sha384-yTM7vIFPwvDYo64LAKSR2WYu2PwZBmB1J5K694IzwQxrOfK6aTwNmDbh+DCniif5  vendor/mlkem-esm/src/utils.js

Honest limits

← Back to Raziel