cryptnox-pos 1.0.0
Standalone USDC payment terminal firmware (ESP32 + Cryptnox smart card)
Loading...
Searching...
No Matches
main Directory Reference

Directories

 
fonts

Files

 
addr_check.h
 Structural address checks for the config portal.
 
assets.h
 What each selectable asset IS — one row per pos_chain_t.
 
boot.cpp
 Bring-up: NVS, panel, reader, wallet, addresses, setup wizard, Wi-Fi and clock — everything before the main loop.
 
card_io.cpp
 The card on the reader: is it usable, open a channel, sign, read the payout addresses off it.
 
card_status.h
 What a tapped card is missing, read from its SELECT response.
 
chain_icons.c
 
chain_icons.h
 
civil_time.cpp
 TZ-independent calendar arithmetic and date-string parsing.
 
civil_time.h
 TZ-independent calendar arithmetic and date-string parsing.
 
config_defaults.h
 config.h, plus a default for every key added after the first config.h files shipped — so an older config.h still builds.
 
eth_addr.cpp
 Implementation of the hex Ethereum-address parser, with EIP-55 checksum verification (HARDENING.md §7.1).
 
eth_addr.h
 Hex Ethereum-address parsing — a pure, dependency-free unit so it can be unit-tested and fuzzed on the host (see fuzz/fuzz_parse_address.cpp).
 
eth_json.cpp
 Implementation of the JSON-RPC response parsing helpers.
 
eth_json.h
 JSON-RPC response parsing helpers — kept in their own unit (cJSON + CW_Utils only, no ESP-IDF networking) so they can be fuzzed on the host (see fuzz/fuzz_eth_rpc_json.cpp).
 
eth_rlp.cpp
 RLP encoder implementation for EIP-1559 (type 2) transactions.
 
eth_rlp.h
 Minimal RLP encoder for EIP-1559 (type 2) Ethereum transactions.
 
eth_rpc.cpp
 Ethereum JSON-RPC client implementation (HTTPS). Network bring-up (Wi-Fi, SNTP) lives in net.cpp.
 
eth_rpc.h
 Ethereum JSON-RPC client over HTTPS (nonce / ecrecover parity / raw-tx broadcast / receipt polling). Network bring-up (Wi-Fi, SNTP) lives in net.h.
 
eth_sig.cpp
 secp256k1 verification + recovery bit, on mbedTLS's ECP module.
 
eth_sig.h
 The recovery bit of a secp256k1 signature, computed on the device.
 
form_parse.h
 application/x-www-form-urlencoded field extraction.
 
hardening.cpp
 Anomaly handling (§3.3): local fail-closed + persisted counter and a RAM ring buffer for on-site inspection. Never bricks.
 
hardening.h
 Decision-integrity primitives (see docs/HARDENING.md §3, §4).
 
https_post.cpp
 HTTPS JSON POST with the authenticated-Date clock cross-check.
 
https_post.h
 One HTTPS JSON POST, shared by every RPC client in the firmware.
 
json_out.h
 Escaping for values the config portal puts inside a JSON string.
 
keccak256.cpp
 Original (pre-NIST) Keccak-256 implementation, 0x01 padding.
 
keccak256.h
 Original Keccak-256 digest as used by Ethereum.
 
logo_mid.c
 
logo_mid.h
 
main.cpp
 cryptnox-pos entry point: touchscreen USDC payment terminal.
 
money.h
 The sale's arithmetic: keypad cents, base units, wei, fees, calldata.
 
net.cpp
 Wi-Fi station bring-up (init/scan/connect/RSSI) and SNTP time sync.
 
net.h
 Network bring-up: Wi-Fi station (init/scan/connect/RSSI) and SNTP time sync. No application-protocol logic lives here — the Ethereum JSON-RPC client is in eth_rpc.h.
 
ota.cpp
 Firmware slot handling. See ota.h for the why.
 
ota.h
 Firmware slot handling: receive an image into the idle slot, verify it, and install it only once somebody accepts it on the panel.
 
ota_version.h
 Dotted version comparison, for deciding whether an update goes forwards or backwards.
 
pay.cpp
 What a sale is paid with and to, and the sale between broadcast and verdict.
 
pay_evm.cpp
 Ethereum and Polygon: endpoint, fees, pre-flight balance, sign and broadcast an EIP-1559 transfer.
 
pay_tron.cpp
 Tron: pre-flight balance, sign and broadcast a TRX or TRC-20 transfer.
 
portal_fonts.h
 
portal_page.h
 The config portal's document — the HTML/CSS half and the script half.
 
pos_app.h
 Private to the application files (main, boot, card_io, pay, pay_evm, pay_tron): the state they share and the calls between them.
 
provision.cpp
 The config portal: a SoftAP and a captive portal, for setup and for administration alike, one page for both. See provision.h for the why.
 
provision.h
 The config portal: one web app for setting a terminal up and for administering it afterwards, in two modes.
 
rpc_error.h
 Turn a node's JSON-RPC refusal into a line an operator can act on.
 
settings.cpp
 NVS-backed implementation of the persistent device settings.
 
settings.h
 Persistent device settings stored in NVS (backlight, Wi-Fi creds).
 
settings_rules.h
 What a setting may be, apart from where it is stored.
 
tap_icon.c
 
tap_icon.h
 
touch_cal.h
 Touch arithmetic: two-point calibration, and the second-contact guard.
 
tron_rpc.cpp
 Tron HTTP API client implementation.
 
tron_rpc.h
 Tron HTTP API client (Nile testnet): build a TRX transfer, broadcast it signed, poll its receipt.
 
tron_tx.cpp
 Implementation of the Tron transaction hex helpers.
 
tron_tx.h
 Tron transaction hex helpers — protobuf varints, the TransferContract integrity check and the signed-Transaction envelope.
 
ui.cpp
 Touchscreen UI implementation built on LVGL 8.x.
 
ui.h
 Touchscreen UI API: screens, events and transaction states for the CYD (ILI9341 + XPT2046) payment flow.
 
ui_admin.cpp
 The settings page, touch calibration and the admin-code screens.
 
ui_hal.cpp
 Panel and touch hardware: TFT_eSPI flush, XPT2046 reads, the LVGL display and input drivers, backlight PWM.
 
ui_internal.h
 Private to the ui*.cpp files: the state and helpers they share.
 
ui_sale.cpp
 The sale flow: amount, confirm, PIN, transaction status, and their page chrome.
 
ui_setup.cpp
 First-run setup on the panel: welcome, the browser hand-off, card reads, Wi-Fi.
 
ui_theme.cpp
 Colours, the LVGL theme and the shared layout metrics.
 
ui_widgets.cpp
 Widget helpers shared by every screen, and the Wi-Fi signal mark.
 
wdt.h
 Task-watchdog feed that is safe to call from any task.