+
    '(j8)                        ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ]P                  ^ ,          ^8  dH   ^ RIt. t	]P                  ! 4        F+  w  ttt]]P                  8X  g   K  ]	P                  ]4       K-  	  M^ RIHt ]P$                  t	]]3t ! R R]4      t R]P0                  9  d$   ]P2                  P4                  ^8X  d	   ]! R4      h]P                  R,8  d   ] P8                  R	8X  d	   ]! R
4      h^ RIHt ]! 4       t]P@                  t!]PE                  ]PG                  R4      4      t$]PG                  R4      PJ                  PL                  t'R t(R t)])t*])t+])t,R t-R-R lt.R t/R t0R t1 ! R R]4      t2R t3Rt4 ! R' R(]4      tLR) tMR* tNR+ tOR#   ] d    ^ RI5t5^ RI5H6t6H7t7H8t8H)t)H*t*H-t-H.t.H,t,H+t+ ^ RI9H:t: ^ RI5H;t' Rt!. t<R t,R t(R t/R t0]5Pz                  t>^ t?]5P                  P                  tB]5P                  P                  tD]5P                  tF]5P                  ! ]>4      tH ! R  R!]5P                  4      tJR" t1 ! R# R$]4      tKR% t3R&t4 Li ; i).    N)byte_string)pycryptodome_filename)	machineryc                   h   a  ] tR t^9t o ]P
                  R 4       t]P
                  R 4       tRtV t	R# )_VoidPointerc                    R# )z&Return the memory location we point toN selfs   &I/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/Util/_raw_api.pyget_VoidPointer.get:        	    c                    R# )z$Return a raw pointer to this pointerNr	   r
   s   &r   
address_of_VoidPointer.address_of?   r   r   r	   N)
__name__
__module____qualname____firstlineno__abcabstractmethodr   r   __static_attributes____classdictcell____classdict__s   @r   r   r   9   s7       	 r   r   __pypy__z0CFFI with optimize=2 fails due to pycparser bug.ntz2CFFI is not compatible with Python 3.12 on Windows)FFIzconst uint8_t*z
uint8_t[1]c                   \        \        R4      '       dB   \        P                  ! R4      '       g&   \        P	                  V \        P
                  4      pM\        P	                  V 4      p\        P                  V4       V# )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-   ]   sT     3((;Z1[1[**T3#4#45C**T"C
r   c                    V # )z)Convert a Python integer to unsigned longr	   xs   &r   c_ulongr1   m       r   c                    V # )z"Convert a Python integer to size_tr	   r/   s   &r   c_size_tr4   u   r2   r   c                    \        V \        4      '       d9   \        \        V 4      ^,           V4      p\        P                  RV4      pWR&   V# V'       d   \        R4      h\        P                  RV 4      pV# )z7Allocate the given amount of bytes (initially set to 0)z	uint8_t[]NNNz Size must be specified once only)
isinstancebytesmaxlenr%   new
ValueError)init_or_sizesizeresults   && r   create_string_bufferr@   y   sk     lE**s<(1,d3DWW[$/F$1I
   !CDDWW[,7Fr   c                ,    \         P                  V 4      # )z.Convert a C string into a Python byte sequence)r%   stringc_strings   &r   get_c_stringrE      s    zz(##r   c                :    \         P                  V 4      R,          # )z.Convert a C buffer into a Python byte sequencer6   )r%   bufferbufs   &r   get_raw_bufferrJ      s    zz#q!!r   c                    \        V \        4      '       d.   \        P                  \        \        P                  V 4      4      # \        V 4      '       g   \        V \        4      '       d   V # \        R \        V 4      ,          4      hz)Object type %s cannot be passed to C code)
r7   _buffer_typer%   castuint8_t_typefrom_bufferr   _Array	TypeErrortype)datas   &r   c_uint8_ptrrU      sZ    dL))88L#//$*?@@*T6":":KG$t*TUUr   c                   6   a  ] tR t^t o RtR tR tR tRtV t	R# )VoidPointer_cffi'Model a newly allocated pointer to voidc                :    \         P                  R 4      V n        R# )z	void *[1]N)r%   r;   _ppr
   s   &r   __init__VoidPointer_cffi.__init__   s    ww{+DHr   c                (    V P                   ^ ,          # )r   rZ   r
   s   &r   r   VoidPointer_cffi.get   s    88A;r   c                    V P                   # Nr^   r
   s   &r   r   VoidPointer_cffi.address_of   s    88Or   r^   N
r   r   r   r   __doc__r[   r   r   r   r   r   s   @r   rW   rW      s     5	,		 	r   rW   c                      \        4       # ra   )rW   r	   r   r   VoidPointerrf      s    !!r   cffi)	CDLLc_void_pbyrefr1   c_ulonglongr4   r@   c_ubytec_uint)find_library)Arrayc                 x    ^ T u;8:  d   R8  g    \        4       h \        4       h\        P                  ! V 4      # )r      )OverflowErrorctypesrl   )cs   &r   rl   rl      s1    Q/! /!~~a  r   c                     \         '       g   ^ RIpVP                  4       \         R&   \         w  r4RV 9  d;   VP                  R4      '       g$   \	        V 4      pVf   \        RV ,          4      hTp \        V 4      # )r   Nr6   .WinzCannot load library '%s')cached_architectureplatformarchitecture
startswithrn   OSErrorrh   )r*   r+   ry   bitslinkage	full_names   &&    r   r-   r-      so    "" %-%:%:%<"+d?7#5#5e#<#<$T*I 84?@@DDzr   c                     V P                   # ra   )valuerC   s   &r   rE   rE      s    ~~r   c                     V P                   # ra   )rawrH   s   &r   rJ   rJ      s    wwr   c                      ] tR t^tR]3R]P                  3R]3R]3R]P                  3R]P                  3R]P                  3R]
3R	]
3R
]
3R]3.t]P                  ^ ,          ^8X  d    ]P                  RR]^,          34       RtR# RtR# )
_Py_bufferrI   objr:   itemsizereadonlyndimformatshapestrides
suboffsetsinternal
smalltabler	   N)r   r   r   r   ri   rs   	py_object
_c_ssize_tc_intc_char_p
_c_ssize_p_fields_sysversion_infoinsertr   r	   r   r   r   r      s    H%F,,-J'J'FLL)FLL)FOO,J'J'J'H%
 A!#OOBzA~ >?? $r   r   c                    \        V 4      '       g   \        V \        4      '       d   V # \        V \        4      '       d   \	        V 4      p\        4       p\        V\        V4      \        4        \        P                  VP                  ,          pVP                  VP                  4      \        \        V4      4       # \        R \!        V 4      ,          4      h  \        \        T4      4       i ; irL   )r   r7   rQ   rM   
_py_objectr   _PyObject_GetBufferrj   _PyBUF_SIMPLErs   rl   r:   from_addressrI   _PyBuffer_ReleaserR   rS   )rT   r   rI   buffer_types   &   r   rU   rU      s    t
4 8 8Kl++T"C,CU3Z?.$nnsww6"//8!%*-G$t*TUU "%*-s   0;C C1c                   6   a  ] tR t^t o RtR tR tR tRtV t	R# )VoidPointer_ctypesrX   c                $    \        4       V n        R # ra   )ri   _pr
   s   &r   r[   VoidPointer_ctypes.__init__   s    jDGr   c                    V P                   # ra   r   r
   s   &r   r   VoidPointer_ctypes.get  s    77Nr   c                ,    \        V P                  4      # ra   )rj   r   r
   s   &r   r   VoidPointer_ctypes.address_of  s    >!r   r   Nrc   r   s   @r   r   r      s     5	!		" 	"r   r   c                      \        4       # ra   )r   r	   r   r   rf   rf     s    !##r   rs   c                   <   a  ] tR tRt o RtR tR tR tR tRt	V t
R# )	SmartPointeri  z+Class to hold a non-managed piece of memoryc                    Wn         W n        R # ra   )_raw_pointer_destructor)r   raw_pointer
destructors   &&&r   r[   SmartPointer.__init__  s    '%r   c                    V P                   # ra   r   r
   s   &r   r   SmartPointer.get  s       r   c                ,    V P                   R uqn         V# ra   r   )r   rps   & r   releaseSmartPointer.release  s     $ 1 14	r   c                     V P                   e%   V P                  V P                   4       R V n         R # R #   \         d     R # i ; ira   )r   r   AttributeErrorr
   s   &r   __del__SmartPointer.__del__  sH    	  ,  !2!23$(! -  		s   06 AA)r   r   N)r   r   r   r   rd   r[   r   r   r   r   r   r   s   @r   r   r     s!     5&! r   r   c           
        V P                  R4      pVRR VR,          rC. p\         Fa  p WF,           p\        W74      p\        P                  P                  V4      '       g   VP                  RV,          4       KV  \        W4      u # 	  \        RV : RRP                  V4      : 24      h  \         d.   p	TP                  RX: R\        T	4      : 24        Rp	?	K  Rp	?	ii ; i)	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.
rv   NzNot found '%s'zCannot load 'z': zCannot load native module 'z, r   )splitextension_suffixesr   r&   pathisfileappendr-   r|   strjoin)
r*   r+   r   	dir_compsbasenameattemptsextfilenamer   exps
   &&        r   load_pycryptodome_raw_libr   %  s     JJsOE*eBixH!	K~H-iBI77>>),, 08 ;<I-- " $		(@ST
UU  	KOOhCIJJ	Ks   AB.=
B..C&9"C!!C&c                8    \        V \        \        \        34      # )z5Return True if object x supports the buffer interface)r7   r8   	bytearray
memoryviewr/   s   &r   	is_bufferr   >  s    a%J788r   c                     \        V \        4      ;'       g*    \        V \        4      ;'       d    V P                  '       * # ra   )r7   r   r   r   r/   s   &r   is_writeable_bufferr   C  s3    q)$ ; ;:&99qzz><r   )      ra   )Pr&   r   r   Crypto.Util.py3compatr   Crypto.Util._file_systemr   r   impr   get_suffixesr   modtypC_EXTENSIONr   	importlibr   EXTENSION_SUFFIXESr   r   rM   objectr   builtin_module_namesflagsoptimizeImportErrorr*   rg   r    r%   NULLnull_pointertypeofr;   rO   	__class__	__bases__rQ   r-   r1   rk   rm   rl   r4   r@   rE   rJ   rU   rW   rf   backendrs   rh   ri   rj   ctypes.utilrn   ro   rx   	c_ssize_tr   r   	pythonapiPyObject_GetBufferr   PyBuffer_Releaser   r   r   POINTERr   	Structurer   r   r   r   r   r   r	   r   r   <module>r      se  > 
 
 
 - :
 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