B
    M]g              
   @   s>  d Z ddlmZmZmZmZ yddlZW n ek
r@   dZY nX ddlm	Z	m
Z
mZmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddl m!Z! ddl"m#Z# dd	l$m%Z% dd
l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, G dd deZ-G dd deZ.G dd deZ/G dd deZ0G dd deZ1G dd deZ2G dd deZ3G dd deZ4G dd deZ5G dd deZ6G dd  d eZ7G d!d" d"eZ8G d#d$ d$eZ9G d%d& d&eZ:G d'd( d(eZ;G d)d* d*eZ<G d+d, d,eZ=G d-d. d.eZ>G d/d0 d0eZ?G d1d2 d2eZ@G d3d4 d4eZAG d5d6 d6eZBG d7d8 d8eZCG d9d: d:eZDG d;d< d<eZEG d=d> d>eZFG d?d@ d@eZGG dAdB dBeZHG dCdD dDeZIG dEdF dFeZJG dGdH dHeZKG dIdJ dJeZLG dKdL dLeZMG dMdN dNeZNG dOdP dPeZOG dQdR dReZPG dSdT dTeZQG dUdV dVeZRG dWdX dXeZSG dYdZ dZeZTG d[d\ d\eZUG d]d^ d^eZVG d_d` d`eZWG dadb dbeZXG dcdd ddeZYG dedf dfeZZG dgdh dheZ[G didj djeZ\G dkdl dleZ]G dmdn dneZ^G dodp dpeZ_G dqdr dreZ`G dsdt dteZaG dudv dveZbG dwdx dxeZcG dydz dzeZdG d{d| d|eZeG d}d~ d~eZfG dd deZgG dd deZhG dd deZiG dd deZjG dd deZkG dd deZlG dd deZmG dd deZnG dd deZoG dd deZpG dd deZqG dd deZrG dd deZsG dd de	eZtG dd deZuG dd deZvG dd deZwG dd deZxG dd deZyG dd deZzG dd deZ{G dd deZ|G dd deZ}G dd deZ~G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG ddĄ deZG ddƄ deZG ddȄ deZG ddʄ deZeepeeeeeeed˜	eb_epeeeeeeed̜ed_e4e5e6eoece8ececd͜e9_dS )a  
ASN.1 type classes for cryptographic message syntax (CMS). Structures are also
compatible with PKCS#7. Exports the following items:

 - AuthenticatedData()
 - AuthEnvelopedData()
 - CompressedData()
 - ContentInfo()
 - DigestedData()
 - EncryptedData()
 - EnvelopedData()
 - SignedAndEnvelopedData()
 - SignedData()

Other type classes are defined that help compose the types listed above.

Most CMS structures in the wild are formatted as ContentInfo encapsulating one of the other types.
    )unicode_literalsdivisionabsolute_importprint_functionN   )_ForceNullParametersDigestAlgorithmEncryptionAlgorithmHmacAlgorithmKdfAlgorithmRSAESOAEPParamsSignedDigestAlgorithm)Any	BitStringChoice
EnumeratedGeneralizedTimeIntegerObjectIdentifierOctetBitStringOctetStringParsableOctetStringSequence
SequenceOfSetOfUTCTime
UTF8String)CertificateList)PublicKeyInfo)OCSPResponse)
AttributesCertificate
ExtensionsGeneralNameGeneralNamesNamec               @   s"   e Zd ZdefdefdefgZdS )ExtendedCertificateInfoversioncertificate
attributesN)__name__
__module____qualname__r   r!   r    _fields r.   r.   -lib/python3.7/site-packages/asn1crypto/cms.pyr&   @   s   r&   c               @   s"   e Zd ZdefdefdefgZdS )ExtendedCertificateZextended_certificate_infosignature_algorithm	signatureN)r*   r+   r,   r&   r   r   r-   r.   r.   r.   r/   r0   H   s   r0   c               @   s   e Zd ZdddddddZdS )	
CMSVersionZv0v1v2Zv3Zv4Zv5)r   r               N)r*   r+   r,   _mapr.   r.   r.   r/   r3   V   s   r3   c            	   @   s"   e Zd Zddddddddd	Zd
S )CMSAttributeTypecontent_typemessage_digestsigning_timecounter_signaturesignature_time_stamp_tokencms_algorithm_protectionmicrosoft_nested_signaturemicrosoft_time_stamp_token)z1.2.840.113549.1.9.3z1.2.840.113549.1.9.4z1.2.840.113549.1.9.5z1.2.840.113549.1.9.6z1.2.840.113549.1.9.16.2.14z1.2.840.113549.1.9.52z1.3.6.1.4.1.311.2.4.1z1.3.6.1.4.1.311.3.3.1N)r*   r+   r,   r:   r.   r.   r.   r/   r;   a   s   r;   c               @   s   e Zd ZdefdefgZdS )TimeZutc_timeZgeneralized_timeN)r*   r+   r,   r   r   _alternativesr.   r.   r.   r/   rD   v   s   rD   c            
   @   s$   e Zd Zddddddddd	d
	ZdS )ContentTypedatasigned_dataenveloped_datasigned_and_enveloped_datadigested_dataencrypted_dataauthenticated_datacompressed_dataauthenticated_enveloped_data)	z1.2.840.113549.1.7.1z1.2.840.113549.1.7.2z1.2.840.113549.1.7.3z1.2.840.113549.1.7.4z1.2.840.113549.1.7.5z1.2.840.113549.1.7.6z1.2.840.113549.1.9.16.1.2z1.2.840.113549.1.9.16.1.9z1.2.840.113549.1.9.16.1.23N)r*   r+   r,   r:   r.   r.   r.   r/   rF   }   s   rF   c               @   s2   e Zd ZdefdedddfdedddfgZdS )	CMSAlgorithmProtectiondigest_algorithmr1   r   T)implicitoptionalmac_algorithmr6   N)r*   r+   r,   r   r   r
   r-   r.   r.   r.   r/   rP      s   rP   c               @   s   e Zd ZeZdS )SetOfContentTypeN)r*   r+   r,   rF   _child_specr.   r.   r.   r/   rU      s   rU   c               @   s   e Zd ZeZdS )SetOfOctetStringN)r*   r+   r,   r   rV   r.   r.   r.   r/   rW      s   rW   c               @   s   e Zd ZeZdS )	SetOfTimeN)r*   r+   r,   rD   rV   r.   r.   r.   r/   rX      s   rX   c               @   s   e Zd ZeZdS )SetOfAnyN)r*   r+   r,   r   rV   r.   r.   r.   r/   rY      s   rY   c               @   s   e Zd ZeZdS )SetOfCMSAlgorithmProtectionN)r*   r+   r,   rP   rV   r.   r.   r.   r/   rZ      s   rZ   c               @   s,   e Zd ZdefdgZi Zdd ZdeiZdS )CMSAttributetype)valuesNc             C   s   | j | d jtS )Nr\   )
_oid_specsgetnativerY   )selfr.   r.   r/   _values_spec   s    zCMSAttribute._values_specr]   N)r*   r+   r,   r;   r-   r^   rb   _spec_callbacksr.   r.   r.   r/   r[      s
   r[   c               @   s   e Zd ZeZdS )CMSAttributesN)r*   r+   r,   r[   rV   r.   r.   r.   r/   rd      s   rd   c               @   s(   e Zd ZdefdefdeddifgZdS )IssuerSerialissuerserialZ
issuer_uidrS   TN)r*   r+   r,   r$   r   r   r-   r.   r.   r.   r/   re      s   re   c               @   s   e Zd ZdddZdS )AttCertVersionr4   r5   )r   r   N)r*   r+   r,   r:   r.   r.   r.   r/   rh      s   rh   c               @   s(   e Zd ZdeddifdeddifgZdS )AttCertSubjectbase_certificate_idexplicitr   Zsubject_namer   N)r*   r+   r,   re   r$   rE   r.   r.   r.   r/   ri      s   ri   c               @   s   e Zd ZdefdefgZdS )AttCertValidityPeriodZnot_before_timeZnot_after_timeN)r*   r+   r,   r   r-   r.   r.   r.   r/   rl      s   rl   c               @   sX   e Zd Zdeddifdefdefdefdefdefd	e	fd
e
ddifdeddifg	ZdS )AttributeCertificateInfoV1r'   defaultr4   Zsubjectrf   r2   serial_numberatt_cert_validity_periodr)   issuer_unique_idrS   T
extensionsN)r*   r+   r,   rh   ri   r$   r   r   rl   r    r   r"   r-   r.   r.   r.   r/   rm      s   rm   c               @   s"   e Zd ZdefdefdefgZdS )AttributeCertificateV1ac_infor1   r2   N)r*   r+   r,   rm   r   r   r-   r.   r.   r.   r/   rs      s   rs   c               @   s   e Zd ZddddZdS )DigestedObjectTypeZ
public_keyZpublic_key_certZother_objy_types)r   r   r6   N)r*   r+   r,   r:   r.   r.   r.   r/   ru      s   ru   c               @   s.   e Zd ZdefdeddifdefdefgZdS )ObjectDigestInfoZdigested_object_typeZother_object_type_idrS   TrQ   Zobject_digestN)r*   r+   r,   ru   r   r   r   r-   r.   r.   r.   r/   rv      s   rv   c               @   s:   e Zd ZdedddfdedddfdedddfgZd	S )
Holderrj   r   T)rR   rS   Zentity_namer   object_digest_infor6   N)r*   r+   r,   re   r$   rv   r-   r.   r.   r.   r/   rw      s   rw   c               @   s8   e Zd ZdeddifdedddfdedddfgZd	S )
V2FormZissuer_namerS   Trj   r   )rk   rS   rx   r   N)r*   r+   r,   r$   re   rv   r-   r.   r.   r.   r/   ry     s   ry   c               @   s"   e Zd ZdefdeddifgZdS )AttCertIssuerZv1_formZv2_formrk   r   N)r*   r+   r,   r$   ry   rE   r.   r.   r.   r/   rz     s   rz   c               @   s"   e Zd ZdefdefdefgZdS )IetfAttrValueZoctetsZoidstringN)r*   r+   r,   r   r   r   rE   r.   r.   r.   r/   r{     s   r{   c               @   s   e Zd ZeZdS )IetfAttrValuesN)r*   r+   r,   r{   rV   r.   r.   r.   r/   r}     s   r}   c               @   s$   e Zd ZdedddfdefgZdS )IetfAttrSyntaxZpolicy_authorityr   T)rR   rS   r]   N)r*   r+   r,   r$   r}   r-   r.   r.   r.   r/   r~   "  s   r~   c               @   s   e Zd ZeZdS )SetOfIetfAttrSyntaxN)r*   r+   r,   r~   rV   r.   r.   r.   r/   r   )  s   r   c               @   s(   e Zd ZdefdefdeddifgZdS )SvceAuthInfoZserviceZidentZ	auth_inforS   TN)r*   r+   r,   r#   r   r-   r.   r.   r.   r/   r   -  s   r   c               @   s   e Zd ZeZdS )SetOfSvceAuthInfoN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   5  s   r   c               @   s*   e Zd ZdedddfdeddifgZdS )	
RoleSyntaxZrole_authorityr   T)rR   rS   Z	role_namerR   r   N)r*   r+   r,   r$   r#   r-   r.   r.   r.   r/   r   9  s   r   c               @   s   e Zd ZeZdS )SetOfRoleSyntaxN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   @  s   r   c               @   s   e Zd ZdddddddZdS )		ClassListZunmarkedunclassifiedZ
restrictedZconfidentialZsecretZ
top_secret)r   r   r6   r7   r8   r9   N)r*   r+   r,   r:   r.   r.   r.   r/   r   D  s   r   c               @   s(   e Zd ZdeddifdeddifgZdS )SecurityCategoryr\   rR   r   valuer   N)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r   O  s   r   c               @   s   e Zd ZeZdS )SetOfSecurityCategoryN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   V  s   r   c               @   s8   e Zd Zdeddifdedddfded	d
dfgZdS )	Clearance	policy_idrR   r   Z
class_listr   r   )rR   rn   Zsecurity_categoriesr6   T)rR   rS   N)r*   r+   r,   r   r   r   r-   r.   r.   r.   r/   r   Z  s   r   c               @   s   e Zd ZeZdS )SetOfClearanceN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   b  s   r   c               @   s(   e Zd ZdefdefdeddifgZdS )BigTimemajorZfractional_secondsZsignrS   TN)r*   r+   r,   r   r-   r.   r.   r.   r/   r   f  s   r   c               @   s   e Zd ZdefdefgZdS )LeapDataZ	leap_timeactionN)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r   n  s   r   c               @   s   e Zd ZeZdS )SetOfLeapDataN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   u  s   r   c               @   s4   e Zd ZdefdefdefdefdeddifgZdS )	TimingMetricsZntp_timeoffsetZdelayZ
expirationZ
leap_eventrS   TN)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r   y  s
   r   c               @   s   e Zd ZeZdS )SetOfTimingMetricsN)r*   r+   r,   r   rV   r.   r.   r.   r/   r     s   r   c               @   s8   e Zd ZdedeifdedddfdedddfgZd	S )
TimingPolicyr   specZ
max_offsetr   T)rk   rS   Z	max_delayr   N)r*   r+   r,   r   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZeZdS )SetOfTimingPolicyN)r*   r+   r,   r   rV   r.   r.   r.   r/   r     s   r   c            	   @   s"   e Zd Zddddddddd	Zd
S )AttCertAttributeTypeauthentication_infoaccess_identitycharging_identitygrouprole	clearancetiming_metricstiming_policy)z1.3.6.1.5.5.7.10.1z1.3.6.1.5.5.7.10.2z1.3.6.1.5.5.7.10.3z1.3.6.1.5.5.7.10.4z2.5.4.72z2.5.4.55z1.3.6.1.4.1.601.10.4.1z1.3.6.1.4.1.601.10.4.2N)r*   r+   r,   r:   r.   r.   r.   r/   r     s   r   c            	   @   s>   e Zd ZdefdgZeeeeeee	e
dZdd ZdeiZdS )AttCertAttributer\   )r]   N)r   r   r   r   r   r   r   r   c             C   s   | j | d jtS )Nr\   )r^   r_   r`   rY   )ra   r.   r.   r/   rb     s    zAttCertAttribute._values_specr]   N)r*   r+   r,   r   r-   r   r   r   r   r   r   r^   rb   rc   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZeZdS )AttCertAttributesN)r*   r+   r,   r   rV   r.   r.   r.   r/   r     s   r   c               @   sR   e Zd Zdefdefdefdefdefdefde	fde
d	d
ifded	d
ifg	ZdS )AttributeCertificateInfoV2r'   Zholderrf   r2   ro   rp   r)   rq   rS   Trr   N)r*   r+   r,   rh   rw   rz   r   r   rl   r   r   r"   r-   r.   r.   r.   r/   r     s   r   c               @   s&   e Zd ZdZdefdefdefgZdS )AttributeCertificateV2r   rt   r1   r2   N)r*   r+   r,   Z_bad_tagr   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZdefdefgZdS )OtherCertificateFormatZother_cert_formatZ
other_certN)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r     s   r   c                   sV   e Zd Zdefdeddifdeddifdeddifd	edd
ifgZ fddZ	  Z
S )CertificateChoicesr(   Zextended_certificaterR   r   Zv1_attr_certr   Zv2_attr_certr6   otherr7   c                sF   t t| ||| | jdkrBtt|d  jdkrBd| _dS )aJ  
        Ensures that the class and tag specified exist as an alternative. This
        custom version fixes parsing broken encodings there a V2 attribute
        # certificate is encoded as a V1

        :param class_:
            The integer class_ from the encoded value header

        :param tag:
            The integer tag from the encoded value header

        :param contents:
            A byte string of the contents of the value - used when the object
            is explicitly tagged

        :raises:
            ValueError - when value is not a valid alternative
        r6   r   r5   r7   N)	superr   validateZ_choicerh   loadr   dumpr`   )ra   Zclass_tagcontents)	__class__r.   r/   r     s    
zCertificateChoices.validate)r*   r+   r,   r!   r0   rs   r   r   rE   r   __classcell__r.   r.   )r   r/   r     s   r   c               @   s   e Zd ZeZdS )CertificateSetN)r*   r+   r,   r   rV   r.   r.   r.   r/   r      s   r   c               @   s,   e Zd ZdefdedddfgZdZi ZdS )ContentInfor<   contentr   T)rk   rS   )r<   r   N)r*   r+   r,   rF   r   r-   	_oid_pairr^   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZeZdS )SetOfContentInfoN)r*   r+   r,   r   rV   r.   r.   r.   r/   r     s   r   c               @   s,   e Zd ZdefdedddfgZdZi ZdS )EncapsulatedContentInfor<   r   r   T)rk   rS   )r<   r   N)r*   r+   r,   rF   r   r-   r   r^   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZdefdefgZdS )IssuerAndSerialNumberrf   ro   N)r*   r+   r,   r%   r   r-   r.   r.   r.   r/   r     s   r   c               @   s"   e Zd ZdefdeddifgZdS )SignerIdentifierissuer_and_serial_numbersubject_key_identifierrR   r   N)r*   r+   r,   r   r   rE   r.   r.   r.   r/   r   #  s   r   c               @   s   e Zd ZeZdS )DigestAlgorithmsN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   *  s   r   c               @   s   e Zd ZeZdS )CertificateRevocationListsN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   .  s   r   c               @   s$   e Zd ZdedddfdefgZdS )
SCVPReqResZrequestr   T)rk   rS   ZresponseN)r*   r+   r,   r   r-   r.   r.   r.   r/   r   2  s   r   c               @   s   e Zd ZdddZdS )OtherRevInfoFormatIdocsp_responsescvp)z1.3.6.1.5.5.7.16.2z1.3.6.1.5.5.7.16.4N)r*   r+   r,   r:   r.   r.   r.   r/   r   9  s   r   c               @   s*   e Zd ZdefdefgZdZeedZ	dS )OtherRevocationInfoFormatother_rev_info_formatother_rev_info)r   r   )r   r   N)
r*   r+   r,   r   r   r-   r   r   r   r^   r.   r.   r.   r/   r   @  s
   
r   c               @   s"   e Zd ZdefdeddifgZdS )RevocationInfoChoicecrlr   rR   r   N)r*   r+   r,   r   r   rE   r.   r.   r.   r/   r   M  s   r   c               @   s   e Zd ZeZdS )RevocationInfoChoicesN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   T  s   r   c               @   sJ   e Zd Zdefdefdefdedddfdefd	efd
edddfgZ	dS )
SignerInfor'   ZsidrQ   Zsigned_attrsr   T)rR   rS   r1   r2   Zunsigned_attrsr   N)
r*   r+   r,   r3   r   r   rd   r   r   r-   r.   r.   r.   r/   r   X  s   r   c               @   s   e Zd ZeZdS )SignerInfosN)r*   r+   r,   r   rV   r.   r.   r.   r/   r   d  s   r   c            	   @   sP   e Zd Zdefdefddedddfded	ddfd
efgZdd Z	de	iZ
dS )
SignedDatar'   digest_algorithms)encap_content_infoNcertificatesr   T)rR   rS   crlsr   signer_infosc             C   s   | d j dkrtS tS )Nr'   r4   )r`   r   r   )ra   r.   r.   r/   _encap_content_info_specr  s    z#SignedData._encap_content_info_specr   N)r*   r+   r,   r3   r   r   r   r   r-   r   rc   r.   r.   r.   r/   r   h  s   
r   c               @   s,   e Zd ZdedddfdedddfgZdS )OriginatorInfoZcertsr   T)rR   rS   r   r   N)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s"   e Zd ZdefdeddifgZdS )RecipientIdentifierr   r   rR   r   N)r*   r+   r,   r   r   rE   r.   r.   r.   r/   r     s   r   c            
   @   s:   e Zd Zddddddddd	Zd
d
dddddddd	ZdS )KeyEncryptionAlgorithmIdrsaes_pkcs1v15
rsaes_oaepaes128_wrapaes128_wrap_padaes192_wrapaes192_wrap_padaes256_wrapaes256_wrap_pad)z1.2.840.113549.1.1.1z1.2.840.113549.1.1.7z2.16.840.1.101.3.4.1.5z2.16.840.1.101.3.4.1.8z2.16.840.1.101.3.4.1.25z2.16.840.1.101.3.4.1.28z2.16.840.1.101.3.4.1.45z2.16.840.1.101.3.4.1.48z1.2.840.113549.1.1.1z1.2.840.113549.1.1.7z2.16.840.1.101.3.4.1.5z2.16.840.1.101.3.4.1.8z2.16.840.1.101.3.4.1.25z2.16.840.1.101.3.4.1.28z2.16.840.1.101.3.4.1.45z2.16.840.1.101.3.4.1.48)	Zrsar   r   r   r   r   r   r   r   N)r*   r+   r,   r:   Z_reverse_mapr.   r.   r.   r/   r     s"   r   c               @   s.   e Zd ZdefdeddifgZdZdeiZdS )KeyEncryptionAlgorithm	algorithm
parametersrS   T)r   r   r   N)	r*   r+   r,   r   r   r-   r   r   r^   r.   r.   r.   r/   r     s   r   c               @   s(   e Zd ZdefdefdefdefgZdS )KeyTransRecipientInfor'   ridkey_encryption_algorithmencrypted_keyN)r*   r+   r,   r3   r   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s.   e Zd ZdefdeddifdeddifgZdS )OriginatorIdentifierOrKeyr   r   rR   r   Zoriginator_keyr   N)r*   r+   r,   r   r   r   rE   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZdefdefgZdS )OtherKeyAttributeZkey_attr_idZkey_attrN)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s.   e Zd ZdefdeddifdeddifgZdS )RecipientKeyIdentifierr   daterS   Tr   N)r*   r+   r,   r   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s"   e Zd ZdefdeddifgZdS )KeyAgreementRecipientIdentifierr   Zr_key_idrR   r   N)r*   r+   r,   r   r   rE   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZdefdefgZdS )RecipientEncryptedKeyr   r   N)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZeZdS )RecipientEncryptedKeysN)r*   r+   r,   r   rV   r.   r.   r.   r/   r     s   r   c               @   s<   e Zd Zdefdeddifdedddfd	efd
efgZdS )KeyAgreeRecipientInfor'   Z
originatorrk   r   Zukmr   T)rk   rS   r   Zrecipient_encrypted_keysN)	r*   r+   r,   r3   r   r   r   r   r-   r.   r.   r.   r/   r     s
   r   c               @   s.   e Zd ZdefdeddifdeddifgZdS )KEKIdentifierZkey_identifierr   rS   Tr   N)r*   r+   r,   r   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s(   e Zd ZdefdefdefdefgZdS )KEKRecipientInfor'   Zkekidr   r   N)r*   r+   r,   r3   r   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s0   e Zd ZdefdedddfdefdefgZdS )	PasswordRecipientInfor'   Zkey_derivation_algorithmr   T)rR   rS   r   r   N)r*   r+   r,   r3   r   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s   e Zd ZdefdefgZdS )OtherRecipientInfoZori_typeZ	ori_valueN)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   sF   e Zd Zdefdeddifdeddifdeddifd	edd
ifgZdS )RecipientInfoZktriZkarirR   r   Zkekrir6   Zpwrir7   Zorir8   N)	r*   r+   r,   r   r   r   r   r   rE   r.   r.   r.   r/   r     s
   r   c               @   s   e Zd ZeZdS )RecipientInfosN)r*   r+   r,   r   rV   r.   r.   r.   r/   r     s   r   c               @   s*   e Zd ZdefdefdedddfgZdS )EncryptedContentInfor<   Zcontent_encryption_algorithmZencrypted_contentr   T)rR   rS   N)r*   r+   r,   rF   r	   r   r-   r.   r.   r.   r/   r   #  s   r   c            	   @   s>   e Zd Zdefdedddfdefdefded	ddfgZd
S )EnvelopedDatar'   originator_infor   T)rR   rS   recipient_infosencrypted_content_infounprotected_attrsr   N)	r*   r+   r,   r3   r   r   r   rd   r-   r.   r.   r.   r/   r   +  s
   r   c            
   @   sJ   e Zd Zdefdefdefdefdedddfd	ed
ddfde	fgZ
dS )SignedAndEnvelopedDatar'   r   r   r   r   r   T)rR   rS   r   r   r   N)r*   r+   r,   r3   r   r   r   r   r   r   r-   r.   r.   r.   r/   r   5  s   r   c               @   s4   e Zd ZdefdefddefgZdd ZdeiZdS )	DigestedDatar'   rQ   )r   NZdigestc             C   s   | d j dkrtS tS )Nr'   r4   )r`   r   r   )ra   r.   r.   r/   r   I  s    z%DigestedData._encap_content_info_specr   N)	r*   r+   r,   r3   r   r   r-   r   rc   r.   r.   r.   r/   r   A  s   
r   c               @   s*   e Zd ZdefdefdedddfgZdS )EncryptedDatar'   r   r   r   T)rR   rS   N)r*   r+   r,   r3   r   rd   r-   r.   r.   r.   r/   r   \  s   r   c               @   sf   e Zd Zdefdedddfdefdefded	ddfd
efde	dddfde
fde	dddfg	ZdS )AuthenticatedDatar'   r   r   T)rR   rS   r   rT   rQ   r   r   
auth_attrsr6   macunauth_attrsr7   N)r*   r+   r,   r3   r   r   r
   r   r   rd   r   r-   r.   r.   r.   r/   r   d  s   r   c               @   sR   e Zd Zdefdedddfdefdefded	ddfd
efdedddfgZ	dS )AuthEnvelopedDatar'   r   r   T)rR   rS   r   Zauth_encrypted_content_infor   r   r   r   r6   N)
r*   r+   r,   r3   r   r   r   rd   r   r-   r.   r.   r.   r/   r   t  s   r   c               @   s   e Zd ZddiZdS )CompressionAlgorithmIdz1.2.840.113549.1.9.16.3.8zlibN)r*   r+   r,   r:   r.   r.   r.   r/   r     s   r   c               @   s"   e Zd ZdefdeddifgZdS )CompressionAlgorithmr   r   rS   TN)r*   r+   r,   r   r   r-   r.   r.   r.   r/   r     s   r   c               @   s2   e Zd ZdefdefdefgZdZedd Z	dS )CompressedDatar'   Zcompression_algorithmr   Nc             C   s6   | j d kr0td krtdt| d d j| _ | j S )Nz The zlib module is not availabler   r   )_decompressedr   SystemErrorZ
decompressr`   )ra   r.   r.   r/   decompressed  s
    
zCompressedData.decompressed)
r*   r+   r,   r3   r   r   r-   r   propertyr  r.   r.   r.   r/   r     s
   
r   )	rG   rH   rI   rJ   rK   rL   rM   rN   rO   )rH   rI   rJ   rK   rL   rM   rN   rO   )r<   r=   r>   r?   r@   rA   rB   rC   )__doc__Z
__future__r   r   r   r   r   ImportErrorZalgosr   r   r	   r
   r   r   r   Zcorer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   keysr   Zocspr   Zx509r    r!   r"   r#   r$   r%   r&   r0   r3   r;   rD   rF   rP   rU   rW   rX   rY   rZ   r[   rd   re   rh   ri   rl   rm   rs   ru   rv   rw   ry   rz   r{   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r^   r.   r.   r.   r/   <module>   s  
$	D 	
#

	
		



