3
lá˜_ ã @ s˜ d dl mZmZmZ d dlmZ d dlmZ d dlm Z d dl
mZmZ d dl
mZmZ d dlmZ dd „ Zd
d„ ZG dd
„ d
eƒZG dd„ deƒZdS )é )Úabsolute_importÚdivisionÚprint_function)ÚEnum)Úx509)Ú_get_backend)ÚhashesÚ
serialization)ÚecÚrsa)Ú_check_byteslikec C s t d ƒ}|j| ƒS )N)r Úload_pem_pkcs7_certificates)ÚdataÚbackend© r ú/usr/lib64/python3.6/pkcs7.pyr
s r
c C s t d ƒ}|j| ƒS )N)r Úload_der_pkcs7_certificates)r r r r r r s r c @ s> e Zd Zdg g fdd„Zdd„ Zdd„ Zdd „ Zdd
d„ZdS )
ÚPKCS7SignatureBuilderNc C s || _ || _|| _d S )N)Ú_dataÚ_signersÚ_additional_certs)Úselfr ZsignersZadditional_certsr r r Ú__init__ s zPKCS7SignatureBuilder.__init__c C s( t d|ƒ | jd k rtdƒ‚t|| jƒS )Nr zdata may only be set once)r r Ú
ValueErrorr r )r r r r r Úset_data s
zPKCS7SignatureBuilder.set_datac C sn t |tjtjtjtjtjfƒs&tdƒ‚t |tj ƒs:tdƒ‚t |t
jtj
fƒsTtdƒ‚t| j| j|||fg ƒS )NzLhash_algorithm must be one of hashes.SHA1, SHA224, SHA256, SHA384, or SHA512z&certificate must be a x509.Certificatez.Only RSA & EC keys are supported at this time.)Ú
isinstancer ZSHA1ZSHA224ZSHA256ZSHA384ZSHA512Ú TypeErrorr ÚCertificater Z
RSAPrivateKeyr
ZEllipticCurvePrivateKeyr r r )r ÚcertificateZprivate_keyZhash_algorithmr r r Ú
add_signer' s"
z PKCS7SignatureBuilder.add_signerc C s, t |tjƒstdƒ‚t| j| j| j|g ƒS )Nz&certificate must be a x509.Certificate)r r r r r r r r )r r r r r Úadd_certificateC s z%PKCS7SignatureBuilder.add_certificatec C sà t | jƒdkrtdƒ‚| jd kr(tdƒ‚t|ƒ}tdd„ |D ƒƒsJtdƒ‚|tjjtjj tjj
fkrltdƒ‚tj|krˆtj
|krˆtdƒ‚tj|kr®|tjj tjjfkr®td ƒ‚tj|krÊtj|krÊtd
ƒ‚t|ƒ}|j| ||ƒS )Nr zMust have at least one signerzYou must add data to signc s s | ]}t |tƒV qd S )N)r ÚPKCS7Options)Ú.0Úxr r r ú