* ci: build cache
* update build job
* rename steps, cache all builds, patch timestamps for ghc 8.10.7
* refactor, save O0 caches in master and stable builds
* update build to include toolchain fingerprint
* do not save cache on exact match
* remove caching docker from prs
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
* smp server: delayed AUTH responses
* plan
* update
* simplify
* simplify
* stat when sent without delay
* update schema
* round up response time to the nearest delay multiple
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
* smp protocol: require fixed size corr ID when used as nonce, and min size msg ID to use as nonce
* simpler
* fixes
* randomMsgId
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
* consider IP address protected only if it is used for the chosen host
* simplify
* simplify
* simplify
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
* resolver: queue up to 128 pending connections
* resolver: reuse connections to the node
* resolver: read each round in one multicall
* resolver: run worker processes, log durations
* resolver: keep smp-server connections alive
* resolver: test with pytest, lock dependencies
* resolver: structured logs and real client addresses
* resolver: refuse requests with a body
* resolver: harden pool, health and odd answers
* resolver: pin images, rotate logs
* resolver: stricter body check, redact RPC URL
* resolver: ship .env as .env.example
* resolver: pass settings from .env
* resolver: name the image snrc-resolve:local
* crypto: Ethereum primitives for SimpleX names
secp256k1 (vendored libsecp256k1 v0.8.0, recoverable ECDSA), BIP-39
mnemonics, BIP-32 derivation, Keccak-256, EIP-55 addresses and EIP-712
typed data hashing.
Client-side signing only: no RLP, no transaction construction, no chain
writes. The resolver path stays read-only.
Verified against published vectors — the 24 official BIP-39 English
vectors, BIP-32 spec vectors 1 and 2, the EIP-55 spec addresses and the
EIP-712 Mail example.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* tiny fixes
* plan update
* expose what's necessary for stealth addresses too"
* add string encoding
* streamline hex encoding
* core: ethereumPath takes the address index
The BIP-44 path is the same for every address under an account, so the
caller that wants one names it, rather than rebuilding the path around the
one this hard-coded.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
* core: embed the BIP-39 wordlist as the upstream file
The list was transcoded into Haskell, which can only be audited by reading
2048 words against the source. The upstream english.txt is vendored instead
and embedded at compile time, so auditing it is one sha256sum, and a test
pins that checksum so the copy cannot drift.
file-embed moves into the library, where it was already a dependency of the
executables and the test suite.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
* review fixes
* fix review findings iterate self-reviews with /goal
* next review round
* cut to the min
* cut comments
* streamline
* Update src/Simplex/Messaging/Crypto/BIP32.hs
Co-authored-by: Evgeny <evgeny@poberezkin.com>
* Update CHANGELOG.md
Co-authored-by: Evgeny <evgeny@poberezkin.com>
* Update src/Simplex/Messaging/Crypto/BIP32.hs
Co-authored-by: Evgeny <evgeny@poberezkin.com>
* Update src/Simplex/Messaging/Crypto/Secp256k1.hs
Co-authored-by: Evgeny <evgeny@poberezkin.com>
* Update src/Simplex/Messaging/Crypto/Secp256k1.hs
Co-authored-by: Evgeny <evgeny@poberezkin.com>
* opus 5.5 /goal iterations
* self-review rounds
* self-review iteration 2
* self-review iteration 3
* self-review iteration 3ff
* self-review iteration 3fff
* self-review iteration 5
* more doc tweaks
* self-review iteration 9
* self-review iteration 10
* wip
* rng preserve
* finish wip and factor in test vectors
* make wallet creation and account derivation infallible like trezor does
* review iterations
* limit derivation retries to 3
* remove unnecessary export
* random
* security, simplify, imports
* use static context
* fix test
* restore public api to use rng
* back to IO
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
Co-authored-by: Evgeny <evgeny@poberezkin.com>