使用以太坊登录的 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
查看哈希)
内置分布
siwe-2.0.0-py3-none-any.whl
(8.7 kB
查看哈希)