--- id: siwe version: "4.4.0" license: MIT OR Apache-2.0 license_treatment: permissive maintenance: active --- # siwe — A Python implementation of Sign-In with Ethereum (EIP-4361). License: permissive · Maintenance: active · Downloads: 111.9K/mo ## What it is and what it does SIWE is a Python library that implements the EIP-4361 standard for Ethereum-based authentication. It provides a `SiweMessage` class that handles the full lifecycle of Sign-In with Ethereum messages: parsing EIP-4361 formatted strings, verifying signatures using EIP-191, and serializing messages back to their canonical form. The library depends on web3, eth-account, eth-typing, eth-utils, and pydantic to handle cryptographic operations and message validation. Typical usage involves creating a `SiweMessage` from a user-provided string, calling `verify()` with a signature to confirm the message was signed by the claimed address, and handling specific exceptions like `ExpiredMessage`, `DomainMismatch`, or `InvalidSignature` to reject invalid authentication attempts. The package is actively maintained and supports current Python versions. Use it for: - Build a web application login flow where users authenticate with their Ethereum wallet instead of a password. - Verify that a message claiming to be from a specific Ethereum address was actually signed by that address's private key. - Implement time-based and domain-based message validation to prevent replay attacks in authentication workflows. - Parse and validate SIWE messages from external sources to confirm their structural integrity and signature validity. - Serialize authentication messages into EIP-4361 format for transmission to users' wallet applications. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Implements EIP-4361 Sign-In with Ethereum for parsing, verifying, and serializing authentication messages signed with Ethereum private keys. Yes. SIWE is actively maintained, has no known vulnerabilities, low install friction, and is the standard Python implementation of EIP-4361. Install it if you need Ethereum-based authentication in a Python application. The disclaimer notes it has not undergone formal security audit, so review its use in high-security contexts accordingly. ## Install pip install siwe uv add siwe poetry add siwe ## Installing siwe Before you install: Low install friction with a pure-Python wheel. Active maintenance with recent commits and no known vulnerabilities. Supports Python 3.8 through 3.12. License in practice: Dual-licensed under MIT or Apache-2.0, both permissive licenses allowing commercial and private use with minimal restrictions. Quickstart: pip install siwe from siwe import SiweMessage message = SiweMessage.from_message(message=eip_4361_string) message.verify(signature="0x...") Requires web3 and eth-account dependencies; verification requires a valid EIP-191 signature from the claimed signer address. Verify before relying: - Whether the package has undergone formal security audit since the disclaimer in the description was written. - Real-world adoption rate beyond the monthly download count. ## Package facts - License: MIT OR Apache-2.0 (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 111.9K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags ethereum authentication, sign in with ethereum, EIP-4361 implementation, message verification ethereum, SIWE protocol, ethereum signature validation, web3 authentication, ethereum, web3-auth, cryptography [View on SkillFed](https://skillfed.io/packages/siwe) · [View on PyPI](https://pypi.org/project/siwe/)