一个库,用于在Sigstore Bundles和PEP-740认证对象之间进行转换
项目描述
PyPI认证模型
一个库,用于在Sigstore Bundles和PEP 740认证对象之间进行转换
安装
python -m pip install pypi-attestation-models
使用
请参阅完整的API文档此处。
签名和验证
使用这些API通过签名Python工件(例如:sdist或wheel文件)来创建PEP 740兼容的Attestation
对象,并验证Attestation
对象与Python工件。
from pathlib import Path
from pypi_attestation_models import Attestation, AttestationPayload
from sigstore.oidc import Issuer
from sigstore.sign import SigningContext
from sigstore.verify import Verifier, policy
artifact_path = Path("test_package-0.0.1-py3-none-any.whl")
# Sign a Python artifact
issuer = Issuer.production()
identity_token = issuer.identity_token()
signing_ctx = SigningContext.production()
with signing_ctx.signer(identity_token, cache=True) as signer:
attestation = AttestationPayload.from_dist(artifact_path).sign(signer)
print(attestation.model_dump_json())
# Verify an attestation against a Python artifact
attestation_path = Path("test_package-0.0.1-py3-none-any.whl.attestation")
attestation = Attestation.model_validate_json(attestation_path.read_bytes())
verifier = Verifier.production()
policy = policy.Identity(identity="example@gmail.com", issuer="https://#")
attestation.verify(verifier, policy, attestation_path)
低级别模型转换
这些转换假定作为输入使用的任何Sigstore Bundle都是通过签名AttestationPayload
对象创建的。
from pathlib import Path
from pypi_attestation_models import pypi_to_sigstore, sigstore_to_pypi, Attestation
from sigstore.models import Bundle
# Sigstore Bundle -> PEP 740 Attestation object
bundle_path = Path("test_package-0.0.1-py3-none-any.whl.sigstore")
with bundle_path.open("rb") as f:
sigstore_bundle = Bundle.from_json(f.read())
attestation_object = sigstore_to_pypi(sigstore_bundle)
print(attestation_object.model_dump_json())
# PEP 740 Attestation object -> Sigstore Bundle
attestation_path = Path("attestation.json")
with attestation_path.open("rb") as f:
attestation = Attestation.model_validate_json(f.read())
bundle = pypi_to_sigstore(attestation)
print(bundle.to_json())
项目详情
关闭
pypi_attestation_models-0.0.5.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | cceb48aec1c9d93d880d2a6c8c9581bedb503b66203e37081e1ba2e863b6bac9 |
|
MD5 | 2cb2f386cfa00c84962715dff3be245c |
|
BLAKE2b-256 | f047c5c791a553e6b07d8bdebaec8239921aa4f70134ddc804ac0aa95a575f56 |
关闭
pypi_attestation_models-0.0.5-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | d105bc4cf167d4d1db180177bc464bcc4cea8437cdc583c6598424b712c8b068 |
|
MD5 | 9b8e71696f4b954f5cc7e4583b5ab4eb |
|
BLAKE2b-256 | 0e06accdc6d290d52eaa398dd7c6d1d8dced62075550325b1145c76502e0f442 |