diykey
A Safe signer you build, or try with a passkey
Not connected

How a transaction gets checked

The device works out the hash.
Not the computer.

This page works out the hash, claims it USB Cardputer works out its own, shows every page 3.3V Grove 608 ATECC608 the key, made inside, never leaves
  1. 1
    Fields over USBThis page sends the transaction as one line of text.
  2. 2
    Hash on the deviceThe Cardputer rebuilds the EIP-712 hash and answers with it.
  3. 3
    Every page reviewedYou page through it on the Cardputer. Del rejects.
  4. 4
    The key signs
Firmware—
Chipconnect to read it
Locks—
Counter 0—

—

The Cardputer's screen for this page

What the signer says

    The fields

    How the hash is made EIP-712, Safe 1.3.0 and later

    Domain separatorkeccak256(EIP712Domain, , )
    SafeTx structkeccak256(SafeTx, to, value, keccak256(data), operation, safeTxGas, baseGas, gasPrice, gasToken, refundReceiver, nonce)
    safeTxHashkeccak256(0x19 0x01 ‖ domain ‖ struct)

    Send it to the Cardputer

    
          
    Connect the Cardputer to send.
    This page claims
    ?waiting
    The Cardputer worked out
    — — — —
    send it to find out
    Signature: milestone 3

    The firmware doesn't sign yet. When it does, the chip's signature over the hash the Cardputer worked out comes back here, and this page checks it against the chip's public key.

    Firmware

    Flash the signer onto a Cardputer

    One image at address 0: the bootloader, the partition table and the signer, built from this repository by web/build.sh. The browser checks its SHA-256 before writing.

    This replaces whatever is on the board. To keep what's there, save a full image first: esptool.py read_flash 0 ALL backup.bin.

    Image
    loading…
    Serial what goes over the cable