a
    kÄ#dJÀ  ã                   @   s’  d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
 ddlmZmZ ddl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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	l0m1Z1m2Z2 dd
l3m4Z4 G 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d „ d eƒZ?G d!d"„ d"eƒZ@G d#d$„ d$eƒZAG d%d&„ d&eƒZBG d'd(„ d(eƒZCG d)d*„ d*eƒZDG d+d,„ d,eƒZEG d-d.„ d.eƒZFG d/d0„ d0eƒZGG d1d2„ d2eƒZHG d3d4„ d4eƒZIG d5d6„ d6eƒZJeFƒ eFeEed7ƒed8ƒd9�gd:�eFeEed;ƒed<ƒd9�gd:�gZKG d=d>„ d>eƒZLG d?d@„ d@eƒZMG dAdB„ dBeƒZNG dCdD„ dDeƒZOG dEdF„ dFeƒZPG dGdH„ dHeƒZQG dIdJ„ dJeƒZRG dKdL„ dLeƒZSG dMdN„ dNeƒZTG dOdP„ dPeƒZUG dQdR„ dReƒZVG dSdT„ dTeƒZWg dU¢ZXG dVdW„ dWeƒZYg dX¢ZZG dYdZ„ dZeƒZ[G d[d\„ d\eƒZ\G d]d^„ d^eƒZ]G d_d`„ d`eƒZ^G dadb„ dbeƒZ_G dcdd„ ddeƒZ`g de¢ZaG dfdg„ dgeƒZbG dhdi„ dieƒZcG djdk„ dkeƒZdG dldm„ dmeƒZeG dndo„ doeƒZfG dpdq„ dqeƒZgG drds„ dseƒZhG dtdu„ dueƒZiG dvdw„ dweƒZjG dxdy„ dyeƒZkG dzd{„ d{eƒZlG d|d}„ d}eƒZmG d~d„ deƒZnG d€d�„ d�eƒZoG d‚dƒ„ dƒeƒZpG d„d…„ d…eƒZqG d†d‡„ d‡eƒZrG dˆd‰„ d‰eƒZsG dŠd‹„ d‹eƒZtG dŒd�„ d�eƒZuG dŽd�„ d�eƒZvG d�d‘„ d‘eƒZwG d’d“„ d“eƒZxG d”d•„ d•eƒZyG d–d—„ d—eƒZzG d˜d™„ d™eƒZ{G dšd›„ d›eƒZ|eSeTe[e\egehe_e`ebefecedeeejereqe^eRekeleteseze{evexeydœœ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¥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¯d°„ d°e/ƒZ‡G d±d²„ d²e-ƒZˆeFƒ eFeEed7ƒed8ƒd9�gd:�eFeEed;ƒed³ƒd9�gd:�gZ‰eFƒ eFeEed7ƒed8ƒd9�gd:�eFeEed;ƒed´ƒd9�gd:�gZŠG dµd¶„ d¶eƒZ‹g d·¢ZŒd¸d¹„ eŒD ƒ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Â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Ì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Ö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àdá„ dáe ƒZ¡G dâdã„ dãe ƒZ¢G dädå„ dåeƒZ£g dæ¢Z¤G dçdè„ dèeƒZ¥déS )êz
X.509 certificates.
é    )Úconf)ÚASN1_CodecsÚASN1_OIDÚASN1_IA5_STRINGÚ	ASN1_NULLÚASN1_PRINTABLE_STRINGÚASN1_UTC_TIMEÚASN1_UTF8_STRING)ÚBER_tagging_decÚBER_Decoding_Error)ÚASN1_Packet)ÚASN1F_BIT_STRINGÚASN1F_BIT_STRING_ENCAPSÚASN1F_BMP_STRINGÚASN1F_BOOLEANÚASN1F_CHOICEÚASN1F_ENUMERATEDÚASN1F_FLAGSÚASN1F_GENERALIZED_TIMEÚASN1F_IA5_STRINGÚASN1F_INTEGERÚASN1F_ISO646_STRINGÚ
ASN1F_NULLÚ	ASN1F_OIDÚASN1F_PACKETÚASN1F_PRINTABLE_STRINGÚASN1F_SEQUENCEÚASN1F_SEQUENCE_OFÚASN1F_SET_OFÚASN1F_STRINGÚASN1F_T61_STRINGÚASN1F_UNIVERSAL_STRINGÚASN1F_UTC_TIMEÚASN1F_UTF8_STRINGÚASN1F_badsequenceÚASN1F_enum_INTEGERÚASN1F_fieldÚASN1F_optional)ÚPacket)ÚPacketField)ÚZuluTimeÚGeneralizedTime)Ú	plain_strc                   @   s   e Zd ZejZeddƒZdS )Ú	ASN1P_OIDÚoidÚ0N©Ú__name__Ú
__module__Ú__qualname__r   ÚBERÚ
ASN1_codecr   Ú	ASN1_root© r7   r7   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/layers/x509.pyr-   !   s   r-   c                   @   s   e Zd ZejZeddƒZdS )ÚASN1P_INTEGERÚnumberr   N©r1   r2   r3   r   r4   r5   r   r6   r7   r7   r7   r8   r9   &   s   r9   c                   @   s.   e Zd ZejZeeddƒeddƒddd�Z	dS )ÚASN1P_PRIVSEQÚstrÚ Úintr   T)Úexplicit_tagÚflexible_tagN)
r1   r2   r3   r   r4   r5   r   r   r   r6   r7   r7   r7   r8   r<   +   s   ür<   c                   @   s(   e Zd ZejZeeddƒeddƒƒZdS )ÚRSAPublicKeyÚmodulusé
   ÚpublicExponenté   N©	r1   r2   r3   r   r4   r5   r   r   r6   r7   r7   r7   r8   rB   ?   s
   þrB   c                   @   s0   e Zd ZejZeeddƒeddƒeddƒƒZdS )ÚRSAOtherPrimeInfoÚprimer   ÚexponentÚcoefficientNrG   r7   r7   r7   r8   rH   F   s   ýrH   c                   @   st   e Zd ZejZeeddddgƒeddƒeddƒed	dƒed
dƒeddƒeddƒeddƒeddƒe	e
ddeƒƒƒ
ZdS )ÚRSAPrivateKeyÚversionr   z	two-primeÚmultirC   rD   rE   rF   ZprivateExponentZprime1é   Zprime2é   Z	exponent1Z	exponent2rK   é   ZotherPrimeInfosN)r1   r2   r3   r   r4   r5   r   r%   r   r'   r   rH   r6   r7   r7   r7   r8   rL   N   s"   ÿÿörL   c                   @   s(   e Zd ZejZeeddƒeddƒƒZ	dS )Ú	ECFieldIDZ	fieldTypezprime-fieldrI   r   N)
r1   r2   r3   r   r4   r5   r   r   r   r6   r7   r7   r7   r8   rR   d   s
   þrR   c                   @   s4   e Zd ZejZeeddƒeddƒee	ddƒƒƒZ
dS )ÚECCurveÚar>   ÚbÚseedN)r1   r2   r3   r   r4   r5   r   r   r'   r   r6   r7   r7   r7   r8   rS   l   s   ÿýrS   c                
   @   sZ   e Zd ZejZeeddddiƒede	ƒ e	ƒede
ƒ e
ƒeddƒedd	ƒeed
dƒƒƒZdS )ÚECSpecifiedDomainrM   rQ   ZecpVer1ZfieldIDÚcurveÚbaser>   Úorderr   ZcofactorN)r1   r2   r3   r   r4   r5   r   r%   r   rR   rS   r   r   r'   r6   r7   r7   r7   r8   rW   u   s   ÿúrW   c                   @   s&   e Zd ZejZededƒee	e
ƒZdS )ÚECParametersrX   Z
ansip384r1N)r1   r2   r3   r   r4   r5   r   r   r   r   rW   r6   r7   r7   r7   r8   r[   �   s   
ýr[   c                   @   s   e Zd ZejZeddƒZdS )ÚECDSAPublicKeyZecPointr>   N©r1   r2   r3   r   r4   r5   r   r6   r7   r7   r7   r8   r\   ‰   s   r\   c                   @   sR   e Zd ZejZeeddddiƒeddƒe	e
ddedd	�ƒe	e
d
dedd	�ƒƒZdS )ÚECDSAPrivateKeyrM   rQ   ZecPrivkeyVer1Ú
privateKeyr>   Ú
parametersNé    ©r@   Ú	publicKeyé¡   )r1   r2   r3   r   r4   r5   r   r%   r   r'   r   r[   r\   r6   r7   r7   r7   r8   r^   Ž   s    ÿÿþÿúr^   c                   @   s(   e Zd ZejZeeddƒeddƒƒZdS )ÚECDSASignatureÚrr   ÚsNrG   r7   r7   r7   r8   re   œ   s
   þre   c                   @   s   e Zd Zdd„ ZdS )ÚASN1F_X509_DirectoryStringc              
   K   s&   t j| ||ttttttf	i |¤Ž d S ©N)r   Ú__init__r   r#   r   r    r!   r   )ÚselfÚnameÚdefaultÚkwargsr7   r7   r8   rj   ­   s    
ýüz#ASN1F_X509_DirectoryString.__init__N©r1   r2   r3   rj   r7   r7   r7   r8   rh   «   s   rh   c                   @   s*   e Zd ZejZededƒee	e
eeƒZdS )ÚX509_AttributeValueÚvalueÚFRN)r1   r2   r3   r   r4   r5   r   r   r   r#   r   r    r!   r6   r7   r7   r7   r8   rp   µ   s   
ýrp   c                   @   s.   e Zd ZejZeeddƒede	ƒ ge	ƒƒZ
dS )ÚX509_AttributeÚtypeú2.5.4.6ÚvaluesN)r1   r2   r3   r   r4   r5   r   r   r   rp   r6   r7   r7   r7   r8   rs   ½   s   þþrs   c                   @   s,   e Zd ZejZeeddƒede	dƒƒƒZ
dS )ÚX509_AttributeTypeAndValuert   ru   rq   rr   N)r1   r2   r3   r   r4   r5   r   r   rh   r   r6   r7   r7   r7   r8   rw   Æ   s   ÿþrw   c                   @   s"   e Zd ZejZedeƒ geƒZdS )ÚX509_RDNÚrdnN)	r1   r2   r3   r   r4   r5   r   rw   r6   r7   r7   r7   r8   rx   Î   s   
ÿrx   c                   @   s4   e Zd ZejZeeddƒedde	e
eedd�ƒZdS )ÚX509_OtherNameZtype_idr/   rq   Nra   rb   )r1   r2   r3   r   r4   r5   r   r   r   r   r   r   r#   r6   r7   r7   r7   r8   rz   Ô   s   ýþrz   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_RFC822NameÚ
rfc822Namer>   N©r1   r2   r3   r   r4   r5   r   r6   r7   r7   r7   r8   r{   Þ   s   r{   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_DNSNameÚdNSNamer>   Nr}   r7   r7   r7   r8   r~   ã   s   r~   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_X400AddressÚx400Addressr>   N©r1   r2   r3   r   r4   r5   r&   r6   r7   r7   r7   r8   r€   ê   s   r€   z2.5.4.10zScapy, Inc.)rt   rq   )ry   z2.5.4.3zScapy Default Namec                   @   s   e Zd ZejZedeeƒZ	dS )ÚX509_DirectoryNameÚdirectoryNameN)
r1   r2   r3   r   r4   r5   r   Ú_default_directoryNamerx   r6   r7   r7   r7   r8   rƒ   ü   s   ÿrƒ   c                   @   s4   e Zd ZejZeeedddd�ƒedddd�ƒZ	dS )ÚX509_EDIPartyNameZnameAssignerNra   rb   Z	partyNamerd   )
r1   r2   r3   r   r4   r5   r   r'   rh   r6   r7   r7   r7   r8   r†     s   ÿÿÿür†   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_URIÚuniformResourceIdentifierr>   Nr}   r7   r7   r7   r8   r‡     s   r‡   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_IPAddressZ	iPAddressr>   N©r1   r2   r3   r   r4   r5   r   r6   r7   r7   r7   r8   r‰     s   r‰   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_RegisteredIDÚregisteredIDr>   Nr0   r7   r7   r7   r8   r‹     s   r‹   c                   @   sœ   e Zd ZejZedeƒ edde	dd�edde
dd�edded	d�ed
dedd�eddedd�eddedd�eddedd�eddedd�eddedd�ƒZdS )ÚX509_GeneralNameZgeneralNameZ	otherNameNra   ©Úimplicit_tagr|   é�   r   é‚   r�   é£   rb   r„   é¤   ZediPartyNameé¥   rˆ   é†   Z	ipAddressé‡   rŒ   éˆ   )r1   r2   r3   r   r4   r5   r   rƒ   r   rz   r{   r~   r€   r†   r‡   r‰   r‹   r6   r7   r7   r7   r8   r�     s<   ÿÿÿÿÿÿÿÿÿïr�   c                	   @   sJ   e Zd ZejZeeedddd�ƒee	dde
dd�ƒeeddd	d�ƒƒZdS )
ÚX509_ExtAuthorityKeyIdentifierÚkeyIdentifiers   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿé€   rŽ   ZauthorityCertIssuerNrd   ZauthorityCertSerialNumberr‘   )r1   r2   r3   r   r4   r5   r   r'   r   r   r�   r   r6   r7   r7   r7   r8   r˜   4  s&   ÿÿþÿÿÿør˜   c                   @   s"   e Zd ZejZedeƒ geƒZdS )Ú"X509_ExtSubjectDirectoryAttributesZsubjectDirectoryAttributesN)	r1   r2   r3   r   r4   r5   r   rs   r6   r7   r7   r7   r8   r›   C  s
   þr›   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_ExtSubjectKeyIdentifierr™   Z<xffxffxffxffxffxffxffxffxffxffxffxffxffxffxffxffxffxffxffxffNrŠ   r7   r7   r7   r8   rœ   J  s   rœ   c                   @   s&   e Zd ZejZedeƒ gedd�ZdS )ÚX509_ExtFullNameZfullNamera   rŽ   N©	r1   r2   r3   r   r4   r5   r   r�   r6   r7   r7   r7   r8   r�   O  s   
ÿr�   c                   @   s$   e Zd ZejZedeƒ edd�ZdS )ÚX509_ExtNameRelativeToCRLIssuerZnameRelativeToCRLIssuerrd   rŽ   N)	r1   r2   r3   r   r4   r5   r   rx   r6   r7   r7   r7   r8   rŸ   U  s   
ÿrŸ   c                   @   s    e Zd ZejZeddeeƒZ	dS )ÚX509_ExtDistributionPointNameZdistributionPointNameN)
r1   r2   r3   r   r4   r5   r   r�   rŸ   r6   r7   r7   r7   r8   r    [  s   ÿr    )	ZunusedÚkeyCompromiseÚcACompromiseÚaffiliationChangedÚ
supersededÚcessationOfOperationÚcertificateHoldÚprivilegeWithdrawnÚaACompromisec                
   @   sP   e Zd ZejZeeede	ƒ e	dd�ƒee
ddedd�ƒeedded	d�ƒƒZdS )
ÚX509_ExtDistributionPointÚdistributionPointra   rb   ÚreasonsNr�   rŽ   Z	cRLIssueré¢   )r1   r2   r3   r   r4   r5   r   r'   r   r    r   Ú_reasons_mappingr   r�   r6   r7   r7   r7   r8   r©   l  s*   ýÿÿÿþÿ÷r©   )	ZdigitalSignatureZnonRepudiationZkeyEnciphermentZdataEnciphermentZkeyAgreementZkeyCertSignZcRLSignZencipherOnlyZdecipherOnlyc                   @   s&   e Zd ZejZeddeƒZdd„ Z	dS )ÚX509_ExtKeyUsageZkeyUsageZ101c                 C   s   | j  | ¡S ri   )r6   Z	get_flags)rk   r7   r7   r8   Úget_keyUsageŒ  s    zX509_ExtKeyUsage.get_keyUsageN)
r1   r2   r3   r   r4   r5   r   Ú_ku_mappingr6   r¯   r7   r7   r7   r8   r®   ˆ  s   r®   c                   @   sH   e Zd ZejZeeede	e
dƒƒdd�ƒeede	e
dƒƒdd�ƒƒZdS )	ÚX509_ExtPrivateKeyUsagePeriodZ	notBeforeé¨ýÿÿrš   rŽ   ZnotAfteré€Q r�   N)r1   r2   r3   r   r4   r5   r   r'   r   r=   r+   r6   r7   r7   r7   r8   r±   �  s   
þÿ
þÿûr±   c                   @   s(   e Zd ZejZeeddƒeddƒƒZdS )ÚX509_PolicyMappingZissuerDomainPolicyNZsubjectDomainPolicy)	r1   r2   r3   r   r4   r5   r   r   r6   r7   r7   r7   r8   r´   �  s
   þr´   c                   @   s   e Zd ZejZedg eƒZdS )ÚX509_ExtPolicyMappingsZpolicyMappingsN)	r1   r2   r3   r   r4   r5   r   r´   r6   r7   r7   r7   r8   rµ   ¤  s   rµ   c                   @   s0   e Zd ZejZeeeddƒƒee	ddƒƒƒZ
dS )ÚX509_ExtBasicConstraintsZcAFZpathLenConstraintN)r1   r2   r3   r   r4   r5   r   r'   r   r   r6   r7   r7   r7   r8   r¶   ©  s   ÿÿýr¶   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_ExtCRLNumberZ	cRLNumberr   Nr;   r7   r7   r7   r8   r·   ³  s   r·   )Úunspecifiedr¡   r¢   r£   r¤   r¥   r¦   Zunused_reasonCodeZremoveFromCRLr§   r¨   c                   @   s   e Zd ZejZeddeƒZdS )ÚX509_ExtReasonCodeZ	cRLReasonr   N)	r1   r2   r3   r   r4   r5   r   Ú_cRL_reasonsr6   r7   r7   r7   r8   r¹   Å  s   r¹   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_ExtDeltaCRLIndicatorZdeltaCRLIndicatorr   Nr;   r7   r7   r7   r8   r»   Ê  s   r»   c                   @   sn   e Zd ZejZeeede	ƒ e	dd�ƒe
dddd�e
ddd	d�eed
dedd�ƒe
dddd�e
dddd�ƒZdS )Ú X509_ExtIssuingDistributionPointrª   ra   rb   ZonlyContainsUserCertsFr�   rŽ   ZonlyContainsCACertsr‘   ZonlySomeReasonsNéƒ   ZindirectCRLé„   ZonlyContainsAttributeCertsé…   )r1   r2   r3   r   r4   r5   r   r'   r   r    r   r   r­   r6   r7   r7   r7   r8   r¼   Ï  s8   ýÿÿÿþÿÿÿðr¼   c                   @   s   e Zd ZejZedg eƒZdS )ÚX509_ExtCertificateIssuerZcertificateIssuerNrž   r7   r7   r7   r8   rÀ   å  s   rÀ   c                   @   s$   e Zd ZejZedeedƒƒƒZ	dS )ÚX509_ExtInvalidityDateZinvalidityDater³   N)
r1   r2   r3   r   r4   r5   r   r=   r*   r6   r7   r7   r7   r8   rÁ   ê  s   rÁ   c                   @   s   e Zd ZejZedg eƒZdS )ÚX509_ExtSubjectAltNameÚsubjectAltNameNrž   r7   r7   r7   r8   rÂ   ï  s   rÂ   c                   @   s   e Zd ZejZedg eƒZdS )ÚX509_ExtIssuerAltNameZissuerAltNameNrž   r7   r7   r7   r8   rÄ   ô  s   rÄ   c                	   @   sD   e Zd ZejZeedeƒ eƒe	e
dddd�ƒe	e
dddd�ƒƒZdS )ÚX509_ExtGeneralSubtreerY   ÚminimumNrš   rŽ   Úmaximumr�   )r1   r2   r3   r   r4   r5   r   r   r�   r'   r   r6   r7   r7   r7   r8   rÅ   ù  s   ÿÿürÅ   c                	   @   s<   e Zd ZejZeeedde	dd�ƒeedde	dd�ƒƒZ
dS )ÚX509_ExtNameConstraintsZpermittedSubtreesNra   rŽ   ZexcludedSubtreesrd   )r1   r2   r3   r   r4   r5   r   r'   r   rÅ   r6   r7   r7   r7   r8   rÈ     s   þÿþÿûrÈ   c                   @   s8   e Zd ZejZeeedddd�ƒeedddd�ƒƒZ	dS )ÚX509_ExtPolicyConstraintsZrequireExplicitPolicyNrš   rŽ   ZinhibitPolicyMappingr�   )
r1   r2   r3   r   r4   r5   r   r'   r   r6   r7   r7   r7   r8   rÉ     s   ÿÿÿÿürÉ   c                   @   s&   e Zd ZejZedg eƒZdd„ Z	dS )ÚX509_ExtExtendedKeyUsageÚextendedKeyUsagec                 C   s   | j }dd„ |D ƒS )Nc                 S   s   g | ]}|j j‘qS r7   )r.   Úoidname)Ú.0Zekur7   r7   r8   Ú
<listcomp>"  ó    zAX509_ExtExtendedKeyUsage.get_extendedKeyUsage.<locals>.<listcomp>)rË   )rk   Z	eku_arrayr7   r7   r8   Úget_extendedKeyUsage   s    z-X509_ExtExtendedKeyUsage.get_extendedKeyUsageN)
r1   r2   r3   r   r4   r5   r   r-   r6   rÐ   r7   r7   r7   r8   rÊ     s   rÊ   c                   @   s6   e Zd ZejZeededƒe	e
eeƒedg eƒƒZdS )ÚX509_ExtNoticeReferenceZorganizationzDummy OrganizationZnoticeNumbersN)r1   r2   r3   r   r4   r5   r   r   r	   r   r   r   r#   r   r9   r6   r7   r7   r7   r8   rÑ   %  s   ý
ûrÑ   c                
   @   s>   e Zd ZejZeeedde	ƒƒee
dedƒeeeeƒƒƒZdS )ÚX509_ExtUserNoticeZ	noticeRefNZexplicitTextzDummy ExplicitText)r1   r2   r3   r   r4   r5   r   r'   r   rÑ   r   r	   r   r   r   r#   r6   r7   r7   r7   r8   rÒ   /  s   ÿÿýÿürÒ   c                   @   s0   e Zd ZejZeeddƒede	dƒe
eƒƒZdS )ÚX509_ExtPolicyQualifierInfoZpolicyQualifierIdz1.3.6.1.5.5.7.2.1Z	qualifierZcps_strN)r1   r2   r3   r   r4   r5   r   r   r   r   r   rÒ   r6   r7   r7   r7   r8   rÓ   <  s   
ÿþrÓ   c                   @   s.   e Zd ZejZeeddƒee	dde
ƒƒƒZdS )ÚX509_ExtPolicyInformationZpolicyIdentifierz2.5.29.32.0ZpolicyQualifiersN)r1   r2   r3   r   r4   r5   r   r   r'   r   rÓ   r6   r7   r7   r7   r8   rÔ   D  s   ÿÿþrÔ   c                   @   s"   e Zd ZejZedeƒ geƒZdS )ÚX509_ExtCertificatePoliciesZcertificatePoliciesN)	r1   r2   r3   r   r4   r5   r   rÔ   r6   r7   r7   r7   r8   rÕ   M  s
   þrÕ   c                   @   s"   e Zd ZejZedeƒ geƒZdS )ÚX509_ExtCRLDistributionPointsÚcRLDistributionPointsN©	r1   r2   r3   r   r4   r5   r   r©   r6   r7   r7   r7   r8   rÖ   T  s
   þrÖ   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_ExtInhibitAnyPolicyZ	skipCertsr   Nr;   r7   r7   r7   r8   rÙ   [  s   rÙ   c                   @   s"   e Zd ZejZedeƒ geƒZdS )ÚX509_ExtFreshestCRLr×   NrØ   r7   r7   r7   r8   rÚ   `  s
   þrÚ   c                   @   s,   e Zd ZejZeeddƒede	ƒ e	ƒƒZ
dS )ÚX509_AccessDescriptionZaccessMethodr/   ZaccessLocationN)r1   r2   r3   r   r4   r5   r   r   r   r�   r6   r7   r7   r7   r8   rÛ   g  s   ÿþrÛ   c                   @   s"   e Zd ZejZedeƒ geƒZdS )ÚX509_ExtAuthInfoAccessZauthorityInfoAccessN©	r1   r2   r3   r   r4   r5   r   rÛ   r6   r7   r7   r7   r8   rÜ   o  s
   þrÜ   c                   @   s,   e Zd ZejZeeddƒee	ddƒƒƒZ
dS )ÚX509_ExtQcStatementZstatementIdz0.4.0.1862.1.1ZstatementInfoN)r1   r2   r3   r   r4   r5   r   r   r'   r&   r6   r7   r7   r7   r8   rÞ   v  s   ÿþrÞ   c                   @   s"   e Zd ZejZedeƒ geƒZdS )ÚX509_ExtQcStatementsZqcStatementsN)	r1   r2   r3   r   r4   r5   r   rÞ   r6   r7   r7   r7   r8   rß   ~  s
   þrß   c                   @   s"   e Zd ZejZedeƒ geƒZdS )ÚX509_ExtSubjInfoAccessZsubjectInfoAccessNrÝ   r7   r7   r7   r8   rà   …  s
   þrà   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_ExtNetscapeCertTypeZnetscapeCertTyper>   Nr]   r7   r7   r7   r8   rá   Œ  s   rá   c                   @   s(   e Zd ZejZededƒee	e
eƒZdS )ÚX509_ExtCommentÚcommentzDummy comment.N)r1   r2   r3   r   r4   r5   r   r	   r   r   r   r#   r6   r7   r7   r7   r8   râ   ‘  s   ýrâ   c                   @   s   e Zd ZejZeddƒZdS )ÚX509_ExtDefaultrq   Nr‚   r7   r7   r7   r8   rä   ™  s   rä   )z2.5.29.9z	2.5.29.14z	2.5.29.15z	2.5.29.16z	2.5.29.17z	2.5.29.18ú	2.5.29.19z	2.5.29.20z	2.5.29.21z	2.5.29.24z	2.5.29.27z	2.5.29.28z	2.5.29.29z	2.5.29.30z	2.5.29.31z	2.5.29.32z	2.5.29.33z	2.5.29.35z	2.5.29.36z	2.5.29.37z	2.5.29.46z	2.5.29.54z2.16.840.1.113730.1.1z2.16.840.1.113730.1.13z1.3.6.1.5.5.7.1.1z1.3.6.1.5.5.7.1.3z1.3.6.1.5.5.7.1.11c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚASN1F_EXT_SEQUENCEc                 K   sD   t ddƒttddƒƒtdtƒ tdd�g}tj| g|¢R i |¤Ž d S )NÚextnIDrå   ÚcriticalFZ	extnValueé   rb   )r   r'   r   r   r¶   r   rj   ©rk   ZkargsÚseqr7   r7   r8   rj   Á  s    ÿýýzASN1F_EXT_SEQUENCE.__init__c                 C   s  t || j| j| jd�\}}| j |j¡}| |¡\}}}| jd }| jd }z¢| 	||¡\}	}| 
||	¡ | ||¡}t}
|	jtv rŽt|	j }
|
| jd _d| jd jj_|
ƒ | jd _| jd  ||¡}| jsìt|ƒdkrìd}t||d�‚W n t�y
   tdƒ‚Y n0 |S )	N)r�   r@   Úsafer   rQ   rO   Tzextension sequence length issue)Ú	remainingzcould not parse extensions)r
   r�   r@   rA   ZASN1_tagZ	get_codecr5   Zcheck_type_check_lenrë   Úm2iZset_valÚdissecträ   ÚvalÚ_ext_mappingÚclsr6   rm   Úlenr   r$   Ú	Exception)rk   Úpktrg   Ú_ÚcodecÚiÚremainrç   rè   r.   ZencapsedÚerr_msgr7   r7   r8   rï   Ë  s2    þ




zASN1F_EXT_SEQUENCE.dissectN)r1   r2   r3   rj   rï   r7   r7   r7   r8   ræ   ¿  s   
ræ   c                   @   s   e Zd ZejZeƒ ZdS )ÚX509_ExtensionN)r1   r2   r3   r   r4   r5   ræ   r6   r7   r7   r7   r8   rû   ç  s   rû   c                   @   s"   e Zd ZejZeeddeƒƒZ	dS )ÚX509_ExtensionsÚ
extensionsN)
r1   r2   r3   r   r4   r5   r'   r   rû   r6   r7   r7   r7   r8   rü   ì  s   ÿÿrü   c                   @   s4   e Zd ZejZeeddƒee	de
dƒeeƒƒƒZdS )ÚX509_AlgorithmIdentifierÚ	algorithmz1.2.840.113549.1.1.11r`   r   N)r1   r2   r3   r   r4   r5   r   r   r'   r   r   r   r[   r6   r7   r7   r7   r8   rþ   ö  s   
ÿÿþrþ   c                   @   s   e Zd Zdd„ ZdS )Ú"ASN1F_X509_SubjectPublicKeyInfoRSAc                 K   s8   t dtƒ tƒtdtƒ tƒg}tj| g|¢R i |¤Ž d S ©NÚsignatureAlgorithmÚsubjectPublicKey)r   rþ   r   rB   r   rj   rê   r7   r7   r8   rj      s    þþýz+ASN1F_X509_SubjectPublicKeyInfoRSA.__init__Nro   r7   r7   r7   r8   r   ÿ  s   r   c                   @   s   e Zd Zdd„ ZdS )Ú$ASN1F_X509_SubjectPublicKeyInfoECDSAc                 K   s8   t dtƒ tƒt dtƒ tƒg}tj| g|¢R i |¤Ž d S r  )r   rþ   r\   r   rj   rê   r7   r7   r8   rj     s    þÿýz-ASN1F_X509_SubjectPublicKeyInfoECDSA.__init__Nro   r7   r7   r7   r8   r  
  s   r  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚASN1F_X509_SubjectPublicKeyInfoc                 K   s4   t dtƒ tƒtdd ƒg}tj| g|¢R i |¤Ž d S r  )r   rþ   r   r   rj   rê   r7   r7   r8   rj     s    þýz(ASN1F_X509_SubjectPublicKeyInfo.__init__c                 C   s\   t  | ||¡\}}|jd jj}d| ¡ v r:tƒ  ||¡S |dkrPtƒ  ||¡S tdƒ‚d S )Nr  ÚrsaÚecPublicKeyz$could not parse subjectPublicKeyInfo)	r   rî   Úfieldsrÿ   rÌ   Úlowerr   r  rô   )rk   rõ   ÚxÚcrg   Zkeytyper7   r7   r8   rî     s    z#ASN1F_X509_SubjectPublicKeyInfo.m2ic                 C   s   |   ||¡\}}|S ri   ©rî   ©rk   rõ   rg   r  r
  r7   r7   r8   rï   &  s    z'ASN1F_X509_SubjectPublicKeyInfo.dissectc                 C   sx   d|j v r|j d jj}n|jd jj}d| ¡ v rLtƒ |jd< tƒ  |¡S |dkrltƒ |jd< t	ƒ  |¡S t
dƒ‚d S )Nr  r  r  r  z$could not build subjectPublicKeyInfo)r  rÿ   rÌ   Údefault_fieldsr	  rB   r   Úbuildr\   r  rô   )rk   rõ   Zktyper7   r7   r8   r  *  s    
z%ASN1F_X509_SubjectPublicKeyInfo.buildN©r1   r2   r3   rj   rî   rï   r  r7   r7   r7   r8   r    s   
r  c                   @   s   e Zd ZejZeƒ ZdS )ÚX509_SubjectPublicKeyInfoN)r1   r2   r3   r   r4   r5   r  r6   r7   r7   r7   r8   r  9  s   r  c                   @   sf   e Zd ZejZeeddddgƒede	ƒ e	ƒede
ƒ e
dd�eed	d
edd�ƒeedd
edd�ƒƒZd
S )ÚRSAPrivateKey_OpenSSLrM   r   Úv1Úv2ZprivateKeyAlgorithmr_   ré   rb   r`   Nra   rc   rd   )r1   r2   r3   r   r4   r5   r   r%   r   rþ   rL   r'   r[   r\   r6   r7   r7   r7   r8   r  D  s0   þýÿÿþÿôr  c                   @   s   e Zd Zdd„ ZdS )Ú_PacketFieldRawc                 C   s8   |   ||¡}d}tj|v r0|tj }|j`|j}||fS )Nr>   )rî   r   Z	raw_layerZ
underlayerÚpayloadÚload)rk   rõ   rg   rø   rù   rf   r7   r7   r8   Úgetfield]  s    

z_PacketFieldRaw.getfieldN)r1   r2   r3   r  r7   r7   r7   r8   r  \  s   r  c                   @   s,   e Zd ZdZedeƒ eƒedeƒ eƒgZdS )ÚECDSAPrivateKey_OpenSSLzECDSA Params + Private KeyZecparamr_   N)	r1   r2   r3   rl   r  r[   r)   r^   Zfields_descr7   r7   r7   r8   r  g  s   þþýr  zScapy Default IssuerzScapy Default Subjectc                   @   sH   e Zd ZejZeedee	e
dƒƒƒeeƒedee	e
dƒƒƒeeƒƒZdS )ÚX509_ValidityZ
not_beforer²   Z	not_afterr³   N)r1   r2   r3   r   r4   r5   r   r   r   r=   r*   r"   r   r6   r7   r7   r7   r8   r  Œ  s   þþür  ))ZcountryNameÚC)ZstateOrProvinceNameZST)ZlocalityNameÚL)ZorganizationNameÚO)ZorganizationUnitNameZOU)Ú
commonNameZCNc                 C   s   g | ]\}}|‘qS r7   r7   )rÍ   rl   Úsymbolr7   r7   r8   rÎ   Ÿ  rÏ   rÎ   c                   @   sÄ   e Zd ZejZeeeddg d¢dd�ƒe	ddƒe
deƒ eƒed	eeƒe
d
eƒ eƒedeeƒe
deƒ eƒeedddd�ƒeedddd�ƒeedeƒ gedd�ƒƒ
Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚX509_TBSCertificaterM   rO   )r  r  Zv3ra   rb   ÚserialNumberrQ   Ú	signatureÚissuerZvalidityÚsubjectZsubjectPublicKeyInfoZissuerUniqueIDNr�   rŽ   ZsubjectUniqueIDr‘   rý   r’   c                 C   s8   | j }i }|D ]$}t|jd jjƒ||jd jj< q|S ©Nr   ©r#  r,   ry   rq   rð   rt   rÌ   ©rk   ÚattrsÚ	attrsDictÚattrr7   r7   r8   Ú
get_issuerÀ  s
    "zX509_TBSCertificate.get_issuerc                 C   st   d}|   ¡ }tD ],\}}||v r|d| d 7 }||| 7 }qt|ƒD ](}|tvrF|d| d 7 }||| 7 }qF|S ©zŽ
        Returns a one-line string containing every type/value
        in a rather specific order. sorted() built-in ensures unicity.
        r>   ú/ú=©r+  Ú_attrName_mappingÚsortedÚ_attrName_specials©rk   Zname_strr)  ZattrTypeZ
attrSymbolr7   r7   r8   Úget_issuer_strÈ  s    z"X509_TBSCertificate.get_issuer_strc                 C   s8   | j }i }|D ]$}t|jd jjƒ||jd jj< q|S r%  )r$  r,   ry   rq   rð   rt   rÌ   r'  r7   r7   r8   Úget_subjectÙ  s
    "zX509_TBSCertificate.get_subjectc                 C   st   d}|   ¡ }tD ],\}}||v r|d| d 7 }||| 7 }qt|ƒD ](}|tvrF|d| d 7 }||| 7 }qF|S )Nr>   r-  r.  )r5  r0  r1  r2  r3  r7   r7   r8   Úget_subject_strá  s    z#X509_TBSCertificate.get_subject_str)r1   r2   r3   r   r4   r5   r   r'   r%   r   r   rþ   r   Ú_default_issuerrx   r  Ú_default_subjectr  r   rû   r6   r+  r4  r5  r6  r7   r7   r7   r8   r   ¢  sX   ÿÿþ
þ
þÿÿÿÿýÿêr   c                   @   s   e Zd Zdd„ ZdS )ÚASN1F_X509_CertECDSAc                 K   sD   t dtƒ tƒt dtƒ tƒtdtƒ tƒg}tj| g|¢R i |¤Ž d S )NÚtbsCertificater  ÚsignatureValue)r   r   rþ   r   re   r   rj   rê   r7   r7   r8   rj   ð  s    þþþú	zASN1F_X509_CertECDSA.__init__Nro   r7   r7   r7   r8   r9  ï  s   r9  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚASN1F_X509_Certc                 K   s@   t dtƒ tƒt dtƒ tƒtddƒg}tj| g|¢R i |¤Ž d S )Nr:  r  r;  Ú defaultsignaturedefaultsignature)r   r   rþ   r   r   rj   rê   r7   r7   r8   rj   þ  s    þþÿúzASN1F_X509_Cert.__init__c                 C   sZ   t  | ||¡\}}|jd jj}d| ¡ v r4||fS d| ¡ v rNtƒ  ||¡S tdƒ‚d S ©Nr  r  Úecdsazcould not parse certificate)r   rî   r  rÿ   rÌ   r	  r9  rô   ©rk   rõ   r
  r  rg   Úsigtyper7   r7   r8   rî   	  s    zASN1F_X509_Cert.m2ic                 C   s   |   ||¡\}}|S ri   r  r  r7   r7   r8   rï     s    zASN1F_X509_Cert.dissectc                 C   sp   d|j v r|j d jj}n|jd jj}d| ¡ v r@t | |¡S d| ¡ v rdtƒ |jd< tƒ  |¡S t	dƒ‚d S ©Nr  r  r?  r;  zcould not build certificate)
r  rÿ   rÌ   r  r	  r   r  re   r9  rô   ©rk   rõ   rA  r7   r7   r8   r    s    
zASN1F_X509_Cert.buildNr  r7   r7   r7   r8   r<  ý  s   
r<  c                   @   s   e Zd ZejZeƒ ZdS )Ú	X509_CertN)r1   r2   r3   r   r4   r5   r<  r6   r7   r7   r7   r8   rD  %  s   rD  c                   @   s>   e Zd ZejZeeddƒede	e
dƒƒƒeeddeƒƒƒZdS )ÚX509_RevokedCertificater!  rQ   ZrevocationDater³   ZcrlEntryExtensionsN)r1   r2   r3   r   r4   r5   r   r   r"   r=   r*   r'   r   rû   r6   r7   r7   r7   r8   rE  ,  s   

ÿÿÿýrE  c                   @   sŒ   e Zd ZejZeeeddddgƒƒe	de
ƒ e
ƒedeeƒedeedƒƒƒeed	d
ƒƒeedd
eƒƒeedd
edd�ƒƒZdd„ Zdd„ Zd
S )ÚX509_TBSCertListrM   rQ   r  r  r"  r#  Zthis_updateéÿÿÿÿZnext_updateNZrevokedCertificatesZcrlExtensionsra   rb   c                 C   s8   | j }i }|D ]$}t|jd jjƒ||jd jj< q|S r%  r&  r'  r7   r7   r8   r+  J  s
    "zX509_TBSCertList.get_issuerc                 C   st   d}|   ¡ }tD ],\}}||v r|d| d 7 }||| 7 }qt|ƒD ](}|tvrF|d| d 7 }||| 7 }qF|S r,  r/  r3  r7   r7   r8   r4  R  s    zX509_TBSCertList.get_issuer_str)r1   r2   r3   r   r4   r5   r   r'   r%   r   rþ   r   r7  rx   r"   r=   r*   rE  rû   r6   r+  r4  r7   r7   r7   r8   rF  6  s8   ÿþ
ÿÿÿþÿórF  c                   @   s   e Zd Zdd„ ZdS )ÚASN1F_X509_CRLECDSAc                 K   sD   t dtƒ tƒt dtƒ tƒtdtƒ tƒg}tj| g|¢R i |¤Ž d S )NÚtbsCertListr  r;  )r   rF  rþ   r   re   r   rj   rê   r7   r7   r8   rj   e  s    þþþú	zASN1F_X509_CRLECDSA.__init__Nro   r7   r7   r7   r8   rH  d  s   rH  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚASN1F_X509_CRLc                 K   s@   t dtƒ tƒt dtƒ tƒtddƒg}tj| g|¢R i |¤Ž d S )NrI  r  r;  r=  )r   rF  rþ   r   r   rj   rê   r7   r7   r8   rj   s  s    þþÿúzASN1F_X509_CRL.__init__c                 C   sZ   t  | ||¡\}}|jd jj}d| ¡ v r4||fS d| ¡ v rNtƒ  ||¡S tdƒ‚d S r>  )r   rî   r  rÿ   rÌ   r	  rH  rô   r@  r7   r7   r8   rî   ~  s    zASN1F_X509_CRL.m2ic                 C   s   |   ||¡\}}|S ri   r  r  r7   r7   r8   rï   ˆ  s    zASN1F_X509_CRL.dissectc                 C   sp   d|j v r|j d jj}n|jd jj}d| ¡ v r@t | |¡S d| ¡ v rdtƒ |jd< tƒ  |¡S t	dƒ‚d S rB  )
r  rÿ   rÌ   r  r	  r   r  re   rH  rô   rC  r7   r7   r8   r  Œ  s    
zASN1F_X509_CRL.buildNr  r7   r7   r7   r8   rJ  r  s   
rJ  c                   @   s   e Zd ZejZeƒ ZdS )ÚX509_CRLN)r1   r2   r3   r   r4   r5   rJ  r6   r7   r7   r7   r8   rK  š  s   rK  c                   @   s<   e Zd ZejZeedeƒ eƒe	ddƒe	ddƒe
ddƒƒZdS )ÚOCSP_CertIDZhashAlgorithmZissuerNameHashr>   ZissuerKeyHashr!  r   N)r1   r2   r3   r   r4   r5   r   r   rþ   r   r   r6   r7   r7   r7   r8   rL  ¤  s   þúrL  c                   @   s   e Zd ZejZeddƒZdS )ÚOCSP_GoodInfoÚinfor   N©r1   r2   r3   r   r4   r5   r   r6   r7   r7   r7   r8   rM  ¯  s   rM  c                	   @   s2   e Zd ZejZeeddƒee	dde
dd�ƒƒZdS )ÚOCSP_RevokedInfoZrevocationTimer>   ZrevocationReasonNrš   rb   )r1   r2   r3   r   r4   r5   r   r   r'   r   r¹   r6   r7   r7   r7   r8   rP  ´  s   þÿþrP  c                   @   s   e Zd ZejZeddƒZdS )ÚOCSP_UnknownInforN  r   NrO  r7   r7   r7   r8   rQ  ¾  s   rQ  c                   @   sL   e Zd ZejZeddedeƒ edd�ede	ƒ e	dd�ede
ƒ e
d	d�ƒZdS )
ÚOCSP_CertStatusÚ
certStatusNZgoodrš   rŽ   Zrevokedrd   Úunknownr‘   )r1   r2   r3   r   r4   r5   r   r   rM  rP  rQ  r6   r7   r7   r7   r8   rR  Ã  s   ÿÿÿûrR  c                   @   sZ   e Zd ZejZeedeƒ eƒede	ƒ e	ƒe
ddƒee
dddd�ƒeedd	ed
d�ƒƒZd	S )ÚOCSP_SingleResponseZcertIDrS  Z
thisUpdater>   Z
nextUpdatera   rb   ZsingleExtensionsNrd   )r1   r2   r3   r   r4   r5   r   r   rL  rR  r   r'   r   rû   r6   r7   r7   r7   r8   rU  Î  s&   ÿÿÿþÿørU  c                   @   s   e Zd ZejZedg eƒZdS )ÚOCSP_ByNameÚbyNameN)	r1   r2   r3   r   r4   r5   r   rx   r6   r7   r7   r7   r8   rV  Þ  s   rV  c                   @   s   e Zd ZejZeddƒZdS )Ú
OCSP_ByKeyÚbyKeyr>   NrŠ   r7   r7   r7   r8   rX  ã  s   rX  c                
   @   s<   e Zd ZejZeddedeƒ edd�ede	ƒ e	dd�ƒZ
dS )ÚOCSP_ResponderIDÚresponderIDNrW  rd   rb   rY  r¬   )r1   r2   r3   r   r4   r5   r   r   rV  rX  r6   r7   r7   r7   r8   rZ  è  s   
ÿ
ÿýrZ  c                   @   sd   e Zd ZejZeeeddddidd�ƒe	de
ƒ e
ƒedeeƒ ƒƒedg eƒeed	d
edd�ƒƒZd
S )ÚOCSP_ResponseDatarM   r   r  rš   rb   r[  Z
producedAtÚ	responsesZresponseExtensionsNrd   )r1   r2   r3   r   r4   r5   r   r'   r%   r   rZ  r   r=   r+   r   rU  rû   r6   r7   r7   r7   r8   r\  ñ  s*   ÿÿÿÿ
þÿ÷r\  c                   @   s   e Zd Zdd„ ZdS )ÚASN1F_OCSP_BasicResponseECDSAc              
   K   sV   t dtƒ tƒt dtƒ tƒtdtƒ tƒttdd tdd�ƒg}tj	| g|¢R i |¤Ž d S )NÚtbsResponseDatar  r"  Úcertsra   rb   )
r   r\  rþ   r   re   r'   r   rD  r   rj   rê   r7   r7   r8   rj     s&    þþþÿÿ÷z&ASN1F_OCSP_BasicResponseECDSA.__init__Nro   r7   r7   r7   r8   r^    s   r^  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚASN1F_OCSP_BasicResponsec              
   K   sR   t dtƒ tƒt dtƒ tƒtddƒttdd tdd�ƒg}tj| g|¢R i |¤Ž d S )Nr_  r  r"  r=  r`  ra   rb   )	r   r\  rþ   r   r'   r   rD  r   rj   rê   r7   r7   r8   rj     s$    þþÿÿÿøz!ASN1F_OCSP_BasicResponse.__init__c                 C   sZ   t  | ||¡\}}|jd jj}d| ¡ v r4||fS d| ¡ v rNtƒ  ||¡S tdƒ‚d S )Nr  r  r?  z#could not parse OCSP basic response)r   rî   r  rÿ   rÌ   r	  r^  rô   r@  r7   r7   r8   rî   "  s    zASN1F_OCSP_BasicResponse.m2ic                 C   s   |   ||¡\}}|S ri   r  r  r7   r7   r8   rï   ,  s    z ASN1F_OCSP_BasicResponse.dissectc                 C   sp   d|j v r|j d jj}n|jd jj}d| ¡ v r@t | |¡S d| ¡ v rdtƒ |jd< tƒ  |¡S t	dƒ‚d S )Nr  r  r?  r;  z#could not build OCSP basic response)
r  rÿ   rÌ   r  r	  r   r  re   r^  rô   rC  r7   r7   r8   r  0  s    
zASN1F_OCSP_BasicResponse.buildNr  r7   r7   r7   r8   ra    s   
ra  c                   @   s(   e Zd ZejZeeddƒedd�ƒZ	dS )ÚOCSP_ResponseBytesZresponseTypez1.3.6.1.5.5.7.48.1.1ré   rb   N)
r1   r2   r3   r   r4   r5   r   r   ra  r6   r7   r7   r7   r8   rb  >  s
   þrb  )Z
successfulZmalformedRequestZinternalErrorZtryLaterZnotUsedZsigRequiredÚunauthorizedc                	   @   s4   e Zd ZejZeeddeƒe	e
ddedd�ƒƒZdS )ÚOCSP_ResponseZresponseStatusr   ZresponseBytesNra   rb   )r1   r2   r3   r   r4   r5   r   r   Ú_responseStatus_mappingr'   r   rb  r6   r7   r7   r7   r8   rd  N  s   ÿþÿýrd  N)¦Ú__doc__Zscapy.asn1.mibr   Zscapy.asn1.asn1r   r   r   r   r   r   r	   Zscapy.asn1.berr
   r   Zscapy.asn1packetr   Zscapy.asn1fieldsr   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'   Zscapy.packetr(   Zscapy.fieldsr)   Zscapy.volatiler*   r+   Zscapy.compatr,   r-   r9   r<   rB   rH   rL   rR   rS   rW   r[   r\   r^   re   rh   rp   rs   rw   rx   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  r7  r8  r  r0  r2  r   r9  r<  rD  rE  rF  rH  rJ  rK  rL  rM  rP  rQ  rR  rU  rV  rX  rZ  r\  r^  ra  rb  re  rd  r7   r7   r7   r8   Ú<module>	   sx  $t	
	
þÿþÿú

	
	å(
	
%þÿþÿúþÿþÿúM(
.(

	+	