> For the complete documentation index, see [llms.txt](https://argon-4.gitbook.io/argon-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://argon-4.gitbook.io/argon-docs/suresign/suresign.md).

# The core that powers Enclave

SureSign is the Rust signing kernel that powers Enclave: the only component that constructs, explains, and signs transactions.

SureSign is a signing kernel. It is written in Rust, compiled to WebAssembly, and it is the only part of Enclave that may construct a transaction, decide what a transaction means, hold a key, or produce a signature. Everything else in the product, from the buttons to the dApp provider to the nodes and indexers it reads from, is treated as untrusted input to SureSign.

The idea is one sentence long, and it is the first law of the project:

> Minimize the *trusted* wallet, not the total wallet.

Most wallets are large programs in which any bug anywhere can move money. Enclave is a large program too, but the part that can move money is small, written in a memory-safe language with `unsafe` code forbidden, pinned to the reference Kaspa implementation, tested against golden vectors, and reachable only through a narrow, typed interface. The interface renders what the kernel decides. It never decides for itself.

## What SureSign does

| Responsibility       | In one line                                                                                                                    |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Keys**             | Generates and derives keys from a BIP39 phrase, keeps them in an encrypted vault, and never releases them.                     |
| **Construction**     | Selects Notes, derives change, computes mass and fee, and builds every transaction, on Kaspa and for Igra.                     |
| **Meaning**          | Decodes each transaction into a canonical `ReviewPlan`: outputs, fees, effects, findings, and a hash that binds them.          |
| **Policy**           | Checks every plan against a fixed set of invariants and refuses anything it cannot fully understand.                           |
| **Signing**          | Signs only a plan the user approved, then decodes the signed bytes and checks them against that plan before release.           |
| **Protocols**        | Carries the pinned rules of each protocol it supports, KRC-20, KRC-721, KNS, INS, covenants, Igra contracts, as in-repo packs. |
| **Sealed messaging** | Encrypts and decrypts Deal Desk messages and verifies deal cards against the covenants they describe.                          |

## What SureSign is not

It is not a wallet. It has no user interface, no network access, and no opinion about how anything looks. It cannot fetch a balance or broadcast a transaction; the host does both and hands the results in. It is not an interpreter for arbitrary contracts or scripts: it understands a pinned set and refuses the rest. And it is not a service: it runs inside your browser, on your device, and nowhere else.

## How Enclave uses it

Enclave is the host. It runs SureSign inside the extension, collects Notes from your node, supplies the intent you expressed on a form, receives a `ReviewPlan`, renders it, reports your approval bound to the plan's hash, and broadcasts the signed transaction the kernel returns. TypeScript in Enclave contains **0 lines** of transaction construction and **0 lines** of private-key operations.

The same design allows the reverse: another host could use SureSign. See [Roadmap](/argon-docs/suresign/roadmap.md).

## In this section

| Page                                                             | What it covers                                                                                      |
| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [Trust model](/argon-docs/suresign/trust-model.md)               | Zones, what is trusted, what is not, and the twenty-five invariants                                 |
| [The ReviewPlan](/argon-docs/suresign/review-plan.md)            | The canonical plan, how it is hashed, how approval binds to it, and how it is checked after signing |
| [Fail closed](/argon-docs/suresign/fail-closed.md)               | Why unknown things are refused rather than guessed, and what that looks like                        |
| [Keys and the vault](/argon-docs/suresign/keys-and-vault.md)     | Derivation, the encrypted vault, passwords, passkeys, and what stays in memory                      |
| [Transactions](/argon-docs/suresign/transactions.md)             | Note selection, change, mass and fee, packages, Igra carriers, PSKT                                 |
| [Protocol packs](/argon-docs/suresign/protocol-packs.md)         | The pinned protocol rules that ship in the repository                                               |
| [Covenants](/argon-docs/suresign/covenants.md)                   | Kaspa covenants, the template catalog, identity, and spend paths                                    |
| [Deal Desk protocol](/argon-docs/suresign/deal-desk-protocol.md) | Sealed messaging, deal cards, and verification                                                      |
| [Kernel API](/argon-docs/suresign/kernel-api.md)                 | The interface a host uses                                                                           |
| [Verification](/argon-docs/suresign/verification.md)             | Tests, fixtures, upstream pins, reproducible builds                                                 |
| [Roadmap](/argon-docs/suresign/roadmap.md)                       | SureSign as a project of its own                                                                    |
