IETF HTTP消息签名草稿标准的实现
项目描述
http-message-signatures 是Python中IETF RFC 9421 HTTP消息签名 草稿标准的实现。
安装
pip3 install http-message-signatures
摘要
from http_message_signatures import HTTPMessageSigner, HTTPMessageVerifier, HTTPSignatureKeyResolver, algorithms
import requests, base64, hashlib, http_sfv
class MyHTTPSignatureKeyResolver(HTTPSignatureKeyResolver):
keys = {"my-key": b"top-secret-key"}
def resolve_public_key(self, key_id: str):
return self.keys[key_id]
def resolve_private_key(self, key_id: str):
return self.keys[key_id]
request = requests.Request('POST', 'https://example.com/foo?param=Value&Pet=dog', json={"hello": "world"})
request = request.prepare()
request.headers["Content-Digest"] = str(http_sfv.Dictionary({"sha-256": hashlib.sha256(request.body).digest()}))
signer = HTTPMessageSigner(signature_algorithm=algorithms.HMAC_SHA256, key_resolver=MyHTTPSignatureKeyResolver())
signer.sign(request, key_id="my-key", covered_component_ids=("@method", "@authority", "@target-uri", "content-digest"))
verifier = HTTPMessageVerifier(signature_algorithm=algorithms.HMAC_SHA256, key_resolver=MyHTTPSignatureKeyResolver())
verifier.verify(request)
请注意,验证正文内容摘要不在本包功能范围内,因此仍由调用者负责。 requests-http-signature 库基于此包提供请求正文的集成签名和验证。
给定一个 HTTP 请求可能包含多个签名,verify() 方法返回一个 VerifyResult 列表。然而,当前实现仅支持一个签名,因此返回的列表当前仅包含一个元素。如果在请求中找到更多签名,则抛出 InvalidSignature。
此外,如果发生错误(无法加载 PEM 密钥、签名输入中指定了不支持的算法、签名与摘要不匹配等),verify() 方法会抛出 HTTPMessageSignaturesException 或从这个类派生的异常。
链接
错误
请将错误、问题、功能请求等报告在 GitHub 上。
许可证
根据Apache License, Version 2.0 许可证条款。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源分布
http-message-signatures-0.5.0.tar.gz (24.8 kB 查看哈希值)
构建分布
关闭
http-message-signatures-0.5.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5a59de19b90dce0eaf62021ee776d6562e5a166c96e4107db36f9c01f25552a3 |
|
MD5 | a7be4ec54c31c3b9b4fcc3bf12661947 |
|
BLAKE2b-256 | dcc99396cc932aaf2e79d9cbced8826138751de89e4c65c5b04a431e7f5e5032 |
关闭
http_message_signatures-0.5.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 719933cba48943b5e148fe7bbbf520927573f72c6ca00855cb2c79fdecee2cb2 |
|
MD5 | 8e65eeab79ef4f134a196b246051abd6 |
|
BLAKE2b-256 | 21db353399e056ec284c64ed6c3baa818bcd248f81029f98cc5dcdb0a7f12fa9 |