a
    kÄ#d°  ã                   @   s˜   d Z ddlmZ ddlmZ ddlmZ ddlm  m	Z	 ddl
mZmZmZmZmZmZ erjddlmZ G dd	„ d	eƒZe	 e¡G d
d„ deƒƒZdS )zH
ASN.1 Packet

Packet holding data in Abstract Syntax Notation (ASN.1).
é    )Úabsolute_import)ÚPacket_metaclass)ÚPacketN)ÚAnyÚDictÚTupleÚTypeÚcastÚTYPE_CHECKING)ÚASN1F_fieldc                       s   e Zd Z‡ fdd„Z‡  ZS )ÚASN1Packet_metaclassc                    s2   |d d ur|d   ¡ |d< tt| ƒ | |||¡S )NÚ	ASN1_rootZfields_desc)Zget_fields_listÚsuperr   Ú__new__)ÚclsÚnameÚbasesÚdct©Ú	__class__© úG/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/asn1packet.pyr      s    zASN1Packet_metaclass.__new__)Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__r   r   r   r   r      s   r   c                   @   s*   e Zd ZeddƒZdZdd„ Zdd„ ZdS )ÚASN1_PacketzASN1F_field[Any, Any]Nc                 C   s   | j d ur| j S | j | ¡S ©N)Zraw_packet_cacher   Úbuild)Úselfr   r   r   Ú
self_build/   s    
zASN1_Packet.self_buildc                 C   s   | j  | |¡S r   )r   Zdissect)r   Úxr   r   r   Ú
do_dissect5   s    zASN1_Packet.do_dissect)r   r   r   r	   r   Z
ASN1_codecr    r"   r   r   r   r   r   *   s   
r   )Ú__doc__Ú
__future__r   Zscapy.base_classesr   Zscapy.packetr   Zscapy.libs.sixZlibsÚsixZscapy.compatr   r   r   r   r	   r
   Zscapy.asn1fieldsr   r   Úadd_metaclassr   r   r   r   r   Ú<module>   s    	