When Clef receives a text/plain signing request, it now detects and
validates EIP-4361 (SIWE) messages:
- Parses the full ABNF structure (domain, address, statement, URI,
version, chain ID, nonce, issued-at, and all optional fields) with
strict field ordering and RFC 3339/3986 format validation
- Warns the user when a message looks like SIWE but fails to parse
- For HTTP connections, compares the HTTP Origin header against the
domain claimed in the message; a mismatch is a CRIT-level warning
that causes hard rejection in non-advanced mode (--advanced flag
suppresses rejection to a warning instead)
- Renders parsed SIWE fields as structured labelled entries in the
signing prompt rather than a raw text blob
- Adds EIP-55 address checksum validation per spec requirement
Test vectors are sourced from the reference SIWE implementation.