
    ,h8)                        d dl Z d dlZd dlZd dlmZ d dlmZ ej                  d    dk  rBd dlZg Z	 ej                         D ]'  \  ZZZeej                  k(  se	j                  e       ) nd dlmZ ej$                  Z	eefZ G d de      Z	 dej0                  vr!ej2                  j4                  d	k(  r ed
      ej                  dk\  re j8                  dk(  r ed      d dlmZ  e       Zej@                  Z!ejE                  ejG                  d            Z$ejG                  d      jJ                  jL                  Z'd Z(d Z)e)Z*e)Z+e)Z,d Z-d/dZ.d Z/d Z0d Z1 G d de      Z2d Z3dZ4 G d* d+e      ZLd, ZMd- ZNd. ZOy# e$ r d dl5Z5d dl5m6Z6m7Z7m8Z8m)Z)m*Z*m-Z-m.Z.m,Z,m+Z+ d dl9m:Z: d dl5m;Z' dZ!g Z<d Z,d  Z(d! Z/d" Z0e5jz                  Z>d Z?e5j                  j                  ZBe5j                  j                  ZDe5j                  ZF e5j                  e>      ZH G d# d$e5j                        ZJd% Z1 G d& d'e      ZKd( Z3d)Z4Y w xY w)0    N)byte_string)pycryptodome_filename   )	machineryc                   T    e Zd Zej                  d        Zej                  d        Zy)_VoidPointerc                      y)z&Return the memory location we point toN selfs    V/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/Util/_raw_api.pygetz_VoidPointer.get:        	    c                      y)z$Return a raw pointer to this pointerNr
   r   s    r   
address_ofz_VoidPointer.address_of?   r   r   N)__name__
__module____qualname__abcabstractmethodr   r   r
   r   r   r   r   9   s4      	 r   r   __pypy__   z0CFFI with optimize=2 fails due to pycparser bug.)r      ntz2CFFI is not compatible with Python 3.12 on Windows)FFIzconst uint8_t*z
uint8_t[1]c                     t        t        d      r:t        j                  d      s%t        j	                  | t        j
                        }nt        j	                  |       }t        j                  |       |S )zLoad a shared library and return a handle to it.

        @name,  either an absolute path or the name of a library
                in the system search path.

        @cdecl, the C function declarations.
        RTLD_DEEPBINDPYCRYPTODOME_DISABLE_DEEPBIND)hasattrffiosgetenvdlopenr   cdef)namecdecllibs      r   load_libr)   ]   sN     3(;Z1[**T3#4#45C**T"C
r   c                     | S )z)Convert a Python integer to unsigned longr
   xs    r   c_ulongr-   m       r   c                     | S )z"Convert a Python integer to size_tr
   r+   s    r   c_size_tr0   u   r.   r   c                     t        | t              r5t        t        |       dz   |      }t        j                  d|      }| |dd |S |rt        d      t        j                  d|       }|S )z7Allocate the given amount of bytes (initially set to 0)   z	uint8_t[]Nz Size must be specified once only)
isinstancebytesmaxlenr!   new
ValueError)init_or_sizesizeresults      r   create_string_bufferr<   y   sj     lE*s<(1,d3DWW[$/F$F1I
   !CDDWW[,7Fr   c                 ,    t         j                  |       S )z.Convert a C string into a Python byte sequence)r!   stringc_strings    r   get_c_stringrA      s    zz(##r   c                 2    t         j                  |       dd S )z.Convert a C buffer into a Python byte sequenceN)r!   bufferbufs    r   get_raw_bufferrF      s    zz#q!!r   c                     t        | t              r-t        j                  t        t        j                  |             S t        |       st        | t              r| S t        dt        |       z        Nz)Object type %s cannot be passed to C code)
r3   _buffer_typer!   castuint8_t_typefrom_bufferr   _Array	TypeErrortype)datas    r   c_uint8_ptrrQ      sQ    dL)88L#//$*?@@*T6":KG$t*TUUr   c                   "    e Zd ZdZd Zd Zd Zy)VoidPointer_cffi'Model a newly allocated pointer to voidc                 8    t         j                  d      | _        y )Nz	void *[1])r!   r7   _ppr   s    r   __init__zVoidPointer_cffi.__init__   s    ww{+DHr   c                      | j                   d   S )Nr   rV   r   s    r   r   zVoidPointer_cffi.get   s    88A;r   c                     | j                   S NrY   r   s    r   r   zVoidPointer_cffi.address_of   s    88Or   Nr   r   r   __doc__rW   r   r   r
   r   r   rS   rS      s    5	,		r   rS   c                      t               S r[   )rS   r
   r   r   VoidPointerr_      s    !!r   cffi)	CDLLc_void_pbyrefr-   c_ulonglongr0   r<   c_ubytec_uint)find_library)Arrayc                 l    d| cxk  rdk  st                t               t        j                  |       S )Nr      )OverflowErrorctypesre   )cs    r   re   re      s1    Q/! /!~~a  r   c                     t         sdd l}|j                         t         d d  t         \  }}d| vr.|j                  d      st	        |       }|t        d| z        |} t        |       S )Nr   .WinzCannot load library '%s')cached_architectureplatformarchitecture
startswithrg   OSErrorra   )r&   r'   rr   bitslinkage	full_names         r   r)   r)      sk    " %-%:%:%<"+gd?7#5#5e#<$T*I 84?@@DDzr   c                     | j                   S r[   )valuer?   s    r   rA   rA      s    ~~r   c                     | j                   S r[   )rawrD   s    r   rF   rF      s    wwr   c                       e Zd Zdefdej
                  fdefdefdej                  fdej                  fdej                  fde	fd	e	fd
e	fdefgZ
ej                  d   dk(  re
j                  ddedz  f       yy)
_Py_bufferrE   objr6   itemsizereadonlyndimformatshapestrides
suboffsetsinternalr   r   
smalltableN)r   r   r   rb   rl   	py_object
_c_ssize_tc_intc_char_p
_c_ssize_p_fields_sysversion_infoinsertr
   r   r   r~   r~      s    H%F,,-J'J'FLL)FLL)FOO,J'J'J'H%
 A!#OOBzA~ >? $r   r~   c                    t        |       st        | t              r| S t        | t              r|t	        |       }t               }t        |t        |      t               	 t        j                  |j                  z  }|j                  |j                        t        t        |             S t        dt!        |       z        # t        t        |             w xY wrH   )r   r3   rM   rI   
_py_objectr~   _PyObject_GetBufferrc   _PyBUF_SIMPLErl   re   r6   from_addressrE   _PyBuffer_ReleaserN   rO   )rP   r   rE   buffer_types       r   rQ   rQ      s    t
4 8Kl+T"C,CU3Z?.$nnsww6"//8!%*-G$t*TUU "%*-s   7C Cc                   "    e Zd ZdZd Zd Zd Zy)VoidPointer_ctypesrT   c                 "    t               | _        y r[   )rb   _pr   s    r   rW   zVoidPointer_ctypes.__init__   s    jDGr   c                     | j                   S r[   )r   r   s    r   r   zVoidPointer_ctypes.get  s    77Nr   c                 ,    t        | j                        S r[   )rc   r   r   s    r   r   zVoidPointer_ctypes.address_of  s    >!r   Nr\   r
   r   r   r   r      s    5	!		"r   r   c                      t               S r[   )r   r
   r   r   r_   r_     s    !##r   rl   c                   (    e Zd ZdZd Zd Zd Zd Zy)SmartPointerz+Class to hold a non-managed piece of memoryc                      || _         || _        y r[   )_raw_pointer_destructor)r   raw_pointer
destructors      r   rW   zSmartPointer.__init__  s    '%r   c                     | j                   S r[   r   r   s    r   r   zSmartPointer.get  s       r   c                 .    | j                   d c}| _         |S r[   r   )r   rps     r   releasezSmartPointer.release  s     $ 1 14D	r   c                     	 | j                   #| j                  | j                          d | _         y y # t        $ r Y y w xY wr[   )r   r   AttributeErrorr   s    r   __del__zSmartPointer.__del__  sH    	  ,  !2!23$(! -  		s   .2 	>>N)r   r   r   r]   rW   r   r   r   r
   r   r   r   r     s    5&!r   r   c           
         | j                  d      }|dd |d   }}g }t        D ]U  }	 ||z   }t        ||      }t        j                  j                  |      s|j                  d|z         It        ||      c S  t        d| ddj                  |            # t        $ r*}	|j                  ddt        |	             Y d}	~	d}	~	ww xY w)	zLoad a shared library and return a handle to it.

    @name,  the name of the library expressed as a PyCryptodome module,
            for instance Crypto.Cipher._raw_cbc.

    @cdecl, the C function declarations.
    ro   Nr   zNot found '%s'zCannot load 'z': zCannot load native module 'z, )splitextension_suffixesr   r"   pathisfileappendr)   ru   strjoin)
r&   r'   r   	dir_compsbasenameattemptsextfilenamerx   exps
             r   load_pycryptodome_raw_libr   %  s     JJsOE*eBixIH! 	K	K#~H-iBI77>>), 08 ;<Iu--	K $		(@ST
UU  	KOOhCIJJ	Ks   AB-B	C% C

Cc                 8    t        | t        t        t        f      S )z5Return True if object x supports the buffer interface)r3   r4   	bytearray
memoryviewr+   s    r   	is_bufferr   >  s    a%J788r   c                 d    t        | t              xs t        | t              xr | j                   S r[   )r3   r   r   r   r+   s    r   is_writeable_bufferr   C  s+    q)$ ;:&9qzz><r   r[   )Pr"   r   r   Crypto.Util.py3compatr   Crypto.Util._file_systemr   r   impr   get_suffixesr   modtypC_EXTENSIONr   	importlibr   EXTENSION_SUFFIXESr   r   rI   objectr   builtin_module_namesflagsoptimizeImportErrorr&   r`   r   r!   NULLnull_pointertypeofr7   rK   	__class__	__bases__rM   r)   r-   rd   rf   re   r0   r<   rA   rF   rQ   rS   r_   backendrl   ra   rb   rc   ctypes.utilrg   rh   rq   	c_ssize_tr   r   	pythonapiPyObject_GetBufferr   PyBuffer_Releaser   r   r   POINTERr   	Structurer~   r   r   r   r   r   r
   r   r   <module>r      sn  > 
 
 
 - :
 A)))+ +S##//!%%c*+ $"55 :&	6 	F 111cii6H6HA6MLMM
 7"rww$NOO
%C88L::cgg&678LWW\",,66F  KFG$"V
< 
" GP6 .V29
<w  c? ? ?(&L!

 !!JM **==((99!!J
+J@V%% @&V"
"\ 
"$ GGcs   CF B;I I