Skip to main content

使用以太坊登录的 Python 实现 (EIP-4361)。

项目描述

使用以太坊登录

这个包提供了 EIP-4631 的 Python 实现:用以太坊登录。

安装

SIWE 可以通过 pip 轻松安装在任何 Python 项目中:

pip install siwe

用法

SIWE 提供了一个SiweMessage实现 EIP-4361 的类。

解析 SIWE 消息

SiweMessage通过使用 EIP-4361 格式的字符串初始化对象来完成解析:

from siwe import SiweMessage
message: SiweMessage = SiweMessage(message=eip_4361_string)

SiweMessage或者,可以使用包含预期属性的字典来完成对象的初始化:

message: SiweMessage = SiweMessage(message={"domain": "login.xyz", "address": "0x1234...", ...})

验证和认证 SIWE 消息

验证和身份验证通过 EIP-191 执行,使用address字段SiweMessage作为预期的签名者。validate 方法检查消息结构完整性、签名地址有效性和基于时间的有效性属性。

try:
    message.verify(signature="0x...")
    # You can also specify other checks (e.g. the nonce or domain expected).
except siwe.ValidationError:
    # Invalid

SIWE 消息的序列化

SiweMessage实例也可以通过以下prepare_message方法序列化为它们的 EIP-4361 字符串表示:

print(message.prepare_message())

例子

解析和验证 aSiweMessage很容易:

try:
    message: SiweMessage = SiweMessage(message=eip_4361_string)
    message.verify(signature, nonce="abcdef", domain="example.com"):
except siwe.ValueError:
    # Invalid message
    print("Authentication attempt rejected.")
except siwe.ExpiredMessage:
    print("Authentication attempt rejected.")
except siwe.DomainMismatch:
    print("Authentication attempt rejected.")
except siwe.NonceMismatch:
    print("Authentication attempt rejected.")
except siwe.MalformedSession as e:
    # e.missing_fields contains the missing information needed for validation
    print("Authentication attempt rejected.")
except siwe.InvalidSignature:
    print("Authentication attempt rejected.")
    
# Message has been verified. Authentication complete. Continue with authorization/other.

待办事项

  • 支持合约钱包。

也可以看看

免责声明

我们用于登录以太坊的 Python 库尚未经过正式的安全审计。我们欢迎继续就此实施的可用性、架构和安全性提供反馈。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

siwe-2.0.0.tar.gz (13.0 kB 查看哈希)

已上传 source

内置分布

siwe-2.0.0-py3-none-any.whl (8.7 kB 查看哈希)

已上传 py3