// legal
Cookies & Local Storage
Two cookies, five local-storage entries and one database — all of them either strictly necessary or the wallet itself. Every one is named below, with what it holds and what happens if you delete it. There is no tracking here, so there is no banner asking you to accept any.
Nothing here follows you anywhere.
ccprime sets two cookies, both strictly necessary: one keeps you signed in, the other carries the short-lived state of a passkey ceremony. Neither is used for analytics or advertising, and neither can identify you on any other site.
Beyond cookies, your browser holds the wallet: an encrypted seed, the salt its key is derived from, your public key, and a display preference. That storage is the product — it is what makes the wallet yours rather than ours.
Clearing this site's storage deletes your wallet from this browser. If you do not have your 24-word recovery phrase and do not have the passkey that unlocks the stored backup, the wallet is gone and nobody can restore it.
Two, and both are necessary.
| Name | Purpose | Lifetime |
|---|---|---|
| __Host-ccp_sess | Your signed-in session. Holds a random token; the server keeps only its hash | 30 days by default, or until you sign out or revoke the session |
| __Host-ccp_chal | A signed cookie carrying the short-lived handle for a sign-in ceremony — a passkey registration or assertion, a linked sign-in, or a pending second factor. The ceremony's actual state lives on the server; the cookie only names it | The browsing session, and consumed as soon as the ceremony finishes |
Both are set with HttpOnly, Secure and
SameSite=Lax, on path /. The
__Host- prefix is applied when the site is served over HTTPS —
it tells the browser to refuse the cookie unless it is host-locked and secure, so
no other host can set one in its place. HttpOnly means script running
on the page cannot read them.
Neither cookie is set until you interact with an account. A visitor who only reads the site is issued neither.
Five entries, under keys you can read yourself.
These live in this origin's localStorage. None is sent to our
servers.
| Key | What it holds |
|---|---|
| ccprime:wallet:public_key_hex | Your wallet's Ed25519 public key, in hex. Public by nature — it is what your Canton party id commits to |
| ccprime:vault:prf_salt | The random salt your passkey's PRF output is combined with to derive the key that wraps your seed, plus its format version |
| ccprime:vault:credential_id | Which passkey credential this browser's vault is bound to |
| ccprime:vault:passphrase_backup:v1 | Only if you create one. Your wallet seed encrypted under a key derived from a passphrase you chose (PBKDF2-SHA256, 600,000 iterations) with its salt and initialisation vector. Never leaves this browser |
| ccprime:ui:hide_balances | Whether the privacy veil over your balances is on. A display preference, nothing more |
Where the key actually lives.
- Database
- ccprime_vault
- Object store
- v1
- Record
- account
- Contents
- The AES-GCM ciphertext of your 32-byte wallet seed, its initialisation vector, and the metadata needed to unwrap it — which mode wrapped it, and under which salt version.
The seed is decrypted only inside a scoped signing boundary, after a live passkey gesture, and is zeroed from memory immediately afterwards. It is never held decrypted between actions.
A copy of this ciphertext is also stored on our servers, if you enable the portable backup, so you can restore the wallet on another device. It is the same opaque bytes: the key that opens it is derived from your passkey and never leaves your device. See Privacy § 03.
Only where a third-party surface is actually used.
The page loads no third-party script origin. Two exceptions exist, each active only when that feature is configured and only on the surface that uses it:
- Stripe — on the checkout surface, when you subscribe to a paid plan. Stripe sets its own storage under its own domains, governed by Stripe's privacy policy.
- Cloudflare Turnstile — the bot check at registration, when enabled. Turnstile sets its own storage under Cloudflare's domain, governed by Cloudflare's privacy policy.
If you use the USDC deposit route, your own Ethereum wallet software runs in your browser under its own rules. It is not ours and this notice does not cover it.
How to remove each of these — and what it costs you.
- Sign out to clear the session cookie on this device. Revoke sessions from your account page to invalidate them everywhere, including devices you no longer have.
- Blocking cookies for this site prevents you from signing in at all. There is no other mechanism; the session cookie is not optional.
- Clearing site data in your browser removes the local-storage entries and the wallet database together. See the warning in § 01.
- The privacy veil preference can be toggled in the wallet at any time.
- Deleting your ccprime account removes the server-side copy of the vault ciphertext, but not the copy in this browser. Both are only ever ciphertext.
Before clearing anything: write down the 24-word recovery phrase, confirm you can still see it, and confirm your passkey is synced to somewhere other than the device in front of you. Then clear.
There is nothing here to consent to.
Consent banners exist because sites set storage that is not necessary to provide the service — analytics, advertising, profiling, cross-site identity. ccprime sets none of it. Everything listed on this page is either strictly necessary to sign you in or is the wallet itself, which is the thing you came for.
That is enforced structurally rather than promised: the site's Content-Security-Policy permits no third-party script origin at all, because script execution on this origin would be equivalent to compromising every wallet on it. An analytics tag could not be added here without breaking the wallet's security model.
[[OPERATOR: confirm this position with counsel for any jurisdiction where a notice or consent obligation attaches to non-cookie browser storage]]
This notice describes the ccprime service as it is built. It is not legal advice.
See also · Privacy Policy · Terms of Service · Risk Disclosure