最小化XML签名和验证,旨在与SAML2一起使用
项目描述
minisignxml
用于签名和验证XML文档的Python库。
这个库有意只支持xmldsig规范的一部分。它主要旨在允许SAML文档的签名和验证。
支持的功能
- 简单的API。
- 仅支持封装签名 (
http://www.w3.org/2000/09/xmldsig#enveloped-signature
) - 要求并仅支持不带注释的独占XML规范化 (
http://www.w3.org/2001/10/xml-exc-c14n#
) - 支持SHA-256(默认)和SHA-1(为兼容性,不推荐)进行签名和摘要 (
https://www.w3.org/2000/09/xmldsig#sha1
,https://www.w3.org/2000/09/xmldsig#rsa-sha1
,http://www.w3.org/2001/04/xmlenc#sha256
,http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
) - 仅支持X509证书和RSA私钥
- 使用
lxml
处理XML,使用cryptography
进行加密。 - 仅支持文档中的单个签名,包含单个引用。
- 通过在验证文档时提供多个证书来支持证书轮换。
minisignxml
不执行IO,您必须自己管理和加载密钥/证书。
API
签名
minisignxml.sign.sign
def sign(
*,
element: Element,
private_key: RSAPrivateKey,
certificate: Certificate,
config: SigningConfig = SigningConfig.default(),
index: int = 0,
attribute: str = "ID"
) -> bytes:
使用给定的cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey
私钥对给定的lxml.etree._Element
进行签名,将cryptography.x509.Certificate
嵌入到签名中。使用minisignxml.config.SigningConfig
来控制使用的哈希算法(默认为SHA-256)。index
控制签名元素附加到元素的位置。
如果传入的element
没有与attribute
匹配的属性,则引发异常。确保Element
的attribute
属性在整个文档中是唯一的责任在调用者。
返回包含包含签名的序列化XML的bytes
。
SigningConfig
minisignxml.config.SigningConfig
是一个包含以下字段的dataclass
:
signature_method
:用于签名的cryptography.hazmat.primitives.hashes.HashAlgorithm
。默认为cryptography.hazmat.primitives.hashes.SHA256
的一个实例。digest_method
:用于内容摘要的cryptography.hazmat.primitives.hashes.HashAlgorithm
。默认为cryptography.hazmat.primitives.hashes.SHA256
的一个实例。
验证
minisignxml.verify.extract_verified_element
def extract_verified_element(
*,
xml: bytes,
certificate: Certificate,
config: VerifyConfig=VerifyConfig.default(),
attribute: str = "ID"
) -> Element:
验证给定的XML文档(作为字节)是否使用提供的cryptography.x509.Certificate
私钥正确签名。
对extract_verified_element
的成功调用不保证通过xml
参数传递的整个文档的完整性。仅验证了函数返回的子树。调用者应使用返回的lxml.etree._Element
进行进一步处理。
如果验证失败,则引发异常(请参阅minisignxml.errors
,尽管可能还会引发其他异常,例如ValueError
、KeyError
或其它)。否则,返回已签名的lxml.etree._Element
(不一定是传递给extract_verified_element
的整个文档),并移除签名。
您可以通过使用自定义的VerifyConfig
实例来控制允许的签名和摘要方法。默认情况下,仅允许SHA-256。
minisignxml.verify.extract_verified_element_and_certificate
def extract_verified_element_and_certificate(
*,
xml: bytes,
certificates: Collection[Certificate],
config: VerifyConfig=VerifyConfig.default(),
attribute: str = "ID"
) -> Tuple[Element, Certificate]:
类似于extract_verified_element
,但允许指定多个证书以帮助证书轮换。将返回用于签名的证书以及验证的元素。
VerifyConfig
minisignxml.config.SigningConfig
是一个包含以下字段的dataclass
:
allowed_signature_methods
:允许签名的cryptography.hazmat.primitives.hashes.HashAlgorithm
类型的容器。默认为{cryptography.hazmat.primitives.hashes.SHA256}
。allowed_digest_methods
:允许内容摘要的cryptography.hazmat.primitives.hashes.HashAlgorithm
类型的容器。默认为{cryptography.hazmat.primitives.hashes.SHA256}
。
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
minisignxml-24.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7bb2de078793cdf7b7835047b79d215eb2a7e4c948653f6ecee2d95e1674f114 |
|
MD5 | 50bf5eb5f08dbbdda7e67083b956b70c |
|
BLAKE2b-256 | 88f170fa7a930d4210558b22c6dc01df011895e589f3e7f6716f9689fa06f8ac |
minisignxml-24.6-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 83d61745607f523783ac6c8638e2ec7a9d16f3ed178c1c4b7af9bfd02c51e944 |
|
MD5 | 76348faff2fc5b4d3e3186156b771d2d |
|
BLAKE2b-256 | 919f4af6969a33cc257ee6124aa13b49355b9b04d192653fe8bbed7e55a03d2a |