HOME


Mini Shell 1.0
DIR: /snap/certbot/4482/lib/python3.12/site-packages/cffi/__pycache__/
Upload File :
Current File : //snap/certbot/4482/lib/python3.12/site-packages/cffi/__pycache__/verifier.cpython-312.pyc
�

�S�g�+��2�ddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ejdk\rddlZd�Z
nddlZd�Z
ejd	k\r
ejZnGd
�dej"�ZGd�d
e�ZdZd�Zdad�Zd�Zdd�Zd�Zd�Zy)�N�)�__version_verifier_modules__)�ffiplatform)�VerificationError)�rc�<�tjjddS�N)�	importlib�	machinery�EXTENSION_SUFFIXES���}/build/snapcraft-certbot-29b1212f749eeba2f1dece1adfe9a83a/parts/certbot/install/lib/python3.12/site-packages/cffi/verifier.py�_extension_suffixesrs���"�"�5�5�a�8�8rc��tj�D���cgc]\}}}|tjk(r|��c}}}Scc}}}wr	)�imp�get_suffixes�C_EXTENSION)�suffix�_�types   rrrsA��.1�.>�.>�.@�,�,�?�6�1�d��3�?�?�*��,�	,��,s� >�rc���eZdZ�fd�Z�xZS)�NativeIOc�n��t|t�r|jd�}tt|�|�y)N�ascii)�
isinstance�unicode�encode�superr�write)�self�s�	__class__s  �rr!zNativeIO.writes*����!�W�%��H�H�W�%���(�D�'��*r)�__name__�
__module__�__qualname__r!�
__classcell__)r$s@rrrs
���	+�	+rrc�f�eZdZ			dd�Zdd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zdd�Z
d
�Zd�Zy)�VerifierNc���|jjr"td|jj����||_||_|stj|�}t||�}
|
|�|_|jj|�|	|_
|j||
�|_|r|�rtd��djdtj ddzt"|g|j$z�}tj dk\r|j'd�}t)t+j,|ddd��d	z�}|j/d
�j1d�}t)t+j,|ddd��d	z�}|j/d
�j1d�}d|�d|jj2�|�|��}t5�d}|xs
t7�|_t:j<j|j8||z�|_t:j<j|j8||z�|_ ||_!d|_"d|_#y)NzIfeature not supported with ffi.verify(), but only with ffi.set_source(): z)can't specify both 'modulename' and 'tag'�z%d.%d�rzutf-8rl���0x�Lr�0�_cffi_rF)$�_parser�_uses_new_featurer�ffi�preambler�flatten�_locate_engine_class�_vengine�patch_extension_kwds�flags�make_relative_to�kwds�	TypeError�join�sys�version_infor�_cdefsourcesr�hex�binascii�crc32�lstrip�rstrip�
_class_key�_get_so_suffixes�_caller_dir_pycache�tmpdir�os�path�sourcefilename�modulefilename�ext_package�_has_source�_has_module)r"r4r5rJ�
modulenamerO�tag�force_generic_engine�source_extensionr:�relative_tor<�flattened_kwds�
vengine_class�key�k1�k2rs                  r�__init__zVerifier.__init__ s���;�;�(�(�#�/2�{�{�/L�/L�O�P�
P���� ��
��(�0�0��6�N�,�S�2F�G�
�%�d�+��
��
�
�*�*�4�0���
��)�)�$��<��	���� K�L�L��+�+�w��)9�)9�"�1�)=�=�;�'��9�"�.�.�/�0�C����4�'��j�j��)���X�^�^�C���1��I�.��;�<�B����4��'�'��,�B��X�^�^�C���1��I�.��;�<�B����3��&�&�s�+�B�.1�4�=�=�3K�3K�.0�"�6�J�!�#�A�&���5� 3� 5��� �g�g�l�l�4�;�;�
�EU�8U�V��� �g�g�l�l�4�;�;�
�V�8K�L���&��� ��� ��rc��|jj5|jr
|�td��|j	|�ddd�y#1swYyxYw)zkWrite the C source code.  It is produced in 'self.sourcefilename',
        which can be tweaked beforehand.Nzsource code already written)r4�_lockrPr�
_write_source�r"�files  r�write_sourcezVerifier.write_sourceIsO���X�X�^�^�	%����D�L�'�1�3�3����t�$�		%�	%�	%�s�+A�Ac���|jj5|jrtd��|js|j�|j
�ddd�y#1swYyxYw)z�Write the C source code (if not done already) and compile it.
        This produces a dynamic link library in 'self.modulefilename'.zmodule already compiledN)r4r^rQrrPr_�_compile_module�r"s r�compile_modulezVerifier.compile_moduleRsZ���X�X�^�^�	#����'�(A�B�B��#�#��"�"�$�� � �"�	#�	#�	#�s�AA$�$A-c�"�|jj5|jsH|j�|js,|js|j�|j
�|j�cddd�S#1swYyxYw)a"Get a C module from this Verifier instance.
        Returns an instance of a FFILibrary class that behaves like the
        objects returned by ffi.dlopen(), but that delegates all
        operations to the C module.  If necessary, the C code is written
        and compiled first.
        N)r4r^rQ�_locate_modulerPr_rd�
_load_libraryres r�load_libraryzVerifier.load_library\so���X�X�^�^�	(��#�#��#�#�%��'�'��+�+��*�*�,��(�(�*��%�%�'�	(�	(�	(�s�A$B�Bc���tjj|j�}|j	dd�d}|jd�rt
td�r|dd}|S)N�.rr�_d�gettotalrefcount���)rKrL�basenamerN�split�endswith�hasattrr?)r"rps  r�get_module_namezVerifier.get_module_namels]���7�7�#�#�D�$7�$7�8���>�>�#�q�)�!�,�����T�"�w�s�4F�'G����}�H��rc�H�|js;|jj5|js|j�ddd�t	j
|j�}|j�}t	j||fi|j��S#1swY�YxYwr	)
rPr4r^r_r�maybe_relative_pathrMrt�
get_extensionr<)r"�
sourcename�modnames   rrwzVerifier.get_extensionws�����������
)��'�'��&�&�(�
)�!�4�4�T�5H�5H�I�
��&�&�(���(�(��W�J��	�	�J�J�
)�
)�s�B�B!c�.�|jjSr	)r8�_gen_python_moduleres r�generates_python_modulez Verifier.generates_python_module�s���}�}�/�/�/rc��|r�tjj|�r�tjj|�}|j�}tj
D]c}||vs�||}t
|ttf�std|�d���|D�cgc]"}tjj||���$}}|||<�e|Scc}w)Nz	keyword 'z' should be a list or tuple)rKrL�dirname�copyr�LIST_OF_FILE_NAMESr�list�tupler=r>)r"r<rVr~rY�lst�fns       rr;zVerifier.make_relative_to�s����2�7�7�?�?�;�7��g�g�o�o�k�2�G��9�9�;�D�"�5�5�
$���$�;��s�)�C�%�c�D�%�=�9�'�+.�)1�2�2�?B�C��2�7�7�<�<���4�C�C�C� #�D��I�
$����Ds�'C	c��tjj|j�sr|jr'	t|jdddg�}|j}nd}|jj|j�|t��}|�y||_|jj�d|_
y#t$rYywxYw)N�__doc__T)rKrL�isfilerNrO�
__import__�ImportError�__path__r8�find_modulertrH�
collect_typesrQ)r"�pkgrL�filenames    rrhzVerifier._locate_module�s����w�w�~�~�d�1�1�2�����$�T�%5�%5�t�T�I�;�O�C��|�|�����}�}�0�0��1E�1E�1G��1A�1C�E�H����"*�D���
�
�#�#�%�����#����s�B>�>	C
�	C
c��||j_	|jj�|j`y#|j`wxYwr	)r8�_f�write_source_to_fr`s  r�_write_source_tozVerifier._write_source_to�s8����
�
��	!��M�M�+�+�-��
�
� ���
�
� �s	�:�Ac��|�|j|�yt�}|j|�|j�}tjj|j�r4t|jd�5}|j�|k(}ddd�nd}rEt|j�t|jd�5}|j|�ddd�d|_y#1swY�XxYw#1swY�xYw)N�rT�w)r�r�getvaluerKrL�existsrM�open�read�_ensure_dirr!rP)r"ra�f�source_data�fp�
needs_writtens      rr_zVerifier._write_source�s������!�!�$�'��
�A��!�!�!�$��*�*�,�K��w�w�~�~�d�1�1�2��$�-�-�s�3�C�r�)+����k�)A�$B�M�C�C�!%�
���D�/�/�0��$�-�-�s�3�*�r��H�H�[�)�*� $�D��C�C��*�*�s�?C.�C:�.C7�:Dc�~�tjj|j�}t	j
||j
��}	t	j||j�}|s5t|j�tj||j�d|_
y#t$rd}Y�LwxYw)NFT)rKrLr~rMr�compilerw�samefilerN�OSErrorr��shutil�moverQ)r"rJ�outputfilename�sames    rrdzVerifier._compile_module�s���������!4�!4�5��$�,�,�V�T�5G�5G�5I�J��	��'�'���8K�8K�L�D����+�+�,��K�K���(;�(;�<������	��D�	�s� B.�.B<�;B<c��|jsJ�|j�%|jj|j�S|jj�Sr	)rQr:r8rjres rrizVerifier._load_library�sG��������:�:�!��=�=�-�-�d�j�j�9�9��=�=�-�-�/�/r)NNN�F�.cNNr	)r%r&r'r\rbrfrjrtrwr|r;rhr�r_rdrir
rrr*r*sN��>B�@E�@D�'!�R%�#�(� 	�K�0��  �&!�$�2 �0rr*Fc���trd}|s*dtjvrd}n	ddl}|j
|urd}|rddlm}|jSddlm	}|jS#t$rd}Y�CwxYw)NT�__pypy__r�?r)�vengine_gen)�vengine_cpy)�_FORCE_GENERIC_ENGINEr?�builtin_module_names�
_cffi_backendr��_backendr�r��VGenericEnginer��VCPythonEngine)r4rTr�r�r�s     rr7r7�su���#�����1�1�1�#'� �
$�$��|�|�=�0�'+�$��!��)�)�)�!��)�)�)���
$� #�
�
$�s�A�A)�(A)c�f�trtStjjd�}|r|St	j
d�jj}tjjtjjtjj|�d��S)N�CFFI_TMPDIRr-�__pycache__)�_TMPDIRrK�environ�getr?�	_getframe�f_code�co_filenamerL�abspathr>r~)�resultr�s  rrIrI�st�����
�Z�Z�^�^�M�
*�F�
��
��}�}�Q��&�&�2�2�H�
�7�7�?�?�2�7�7�<�<�������(A�(�*�+�+rc��|ay)z:Set the temporary directory to use instead of __pycache__.N)r�)r~s r�
set_tmpdirr�s	���Grc�n�|xs
t�}	tj|�}|rd}nt	�dj�}|D]�}|j�j
d�s�#|j�j|�s |j�jd�s�b	tjtjj||����tjj|d�g}|D]�}	tj|�D]h}tjj||�}tjj|�r|j|��Ttj|��j��y#t$rYywxYw#t$rY��]wxYw#t$rY��wxYw)z}Clean up the temporary directory by removing all files in it
    called `_cffi_*.{c,so}` as well as the `build` subdirectory.Nr�rr1�build)
rIrK�listdirr�rH�lower�
startswithrr�unlinkrLr>�isdir�append)rJ�keep_so�filelistrr��	clean_dir�dirs       r�cleanup_tmpdirr�sj���
,�*�,�F���:�:�f�%�����!�#�A�&�,�,�.�����
�8�8�:� � ��*����
�#�#�F�+�r�x�x�z�/B�/B�4�/H�
��	�	�"�'�'�,�,�v�r�2�3�	������f�g�.�/�I��	��	��j�j��o�
"���W�W�\�\�#�r�*���7�7�=�=��$��$�$�R�(��I�I�b�M�
"�	��������
��
���	��	�s6�F	�*3F�BF(�		F�F�	F%�$F%�(	F4�3F4c�T�t�}|stjdk(rdg}|Sdg}|S)N�win32z.pydz.so)rr?�platform)�suffixess rrHrH$s5��"�$�H���<�<�7�"��x�H��O��w�H��Orc��tjj|�}|r6tjj|�stj|�yyyr	)rKrLr~r��makedirs)r�r~s  rr�r�/s9���g�g�o�o�h�'�G��r�w�w�}�}�W�-�
���G��.�wr)NF)r?rKrCr��ior�rr�errorrr@�importlib.machineryr
rr�StringIOr�BytesIO�objectr*r�r7r�rIr�r�rHr�r
rr�<module>r�s���%�$�$�*��$����v���9��,�
���t���{�{�H�+�2�:�:�+�z0�v�z0�|��*�,��+��
�>	�r