
     h                     j    d dl Z d dlmZmZ d dlmZ e j        rd dlmZ  G d dej	                  Z
dS )    N)UnsupportedAlgorithm_Reasons)hashes)Backendc                       e Zd Z	 ddddej        ddfdZedej        fd            ZddZd	e	ddfd
Z
de	fdZde	fdZdS )_HashContextNbackendr   	algorithmreturnc                 ,   || _         || _        || j        j                                        }| j        j                            || j        j        j                  }| j                            |          }|| j        j        j        k    r2t          d
                    |j                  t          j                  | j        j                            ||| j        j        j                  }| j                            |dk               || _        d S )Nz+{} is not a supported hash on this backend.r   )
_algorithm_backend_libEVP_MD_CTX_new_ffigcEVP_MD_CTX_free_evp_md_from_algorithmNULLr   formatnamer   UNSUPPORTED_HASHEVP_DigestInit_exopenssl_assert_ctx)selfr	   r
   ctxevp_mdress         g/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/hashes.py__init__z_HashContext.__init__   s    $;-$3355C-$''T]'7 C ]99)DDF+000*AHH!  -	   -$66VT]/4 C M((222			    c                     | j         S N)r   )r   s    r    r
   z_HashContext.algorithm*   s
    r"   c                 Z   | j         j                                        }| j         j                            || j         j        j                  }| j         j                            || j                  }| j                             |dk               t          | j         | j
        |          S )Nr   )r   )r   r   r   r   r   r   EVP_MD_CTX_copy_exr   r   r   r
   )r   
copied_ctxr   s      r    copyz_HashContext.copy.   s    ]'6688
]'***:
 

 m 33J	JJ$$SAX...DM4>zJJJJr"   datac                     | j         j                            |          }| j         j                            | j        |t          |                    }| j                             |dk               d S )Nr   )r   r   from_bufferr   EVP_DigestUpdater   lenr   )r   r)   data_ptrr   s       r    updatez_HashContext.update7   se    =%11$77m 11IxT
 
 	$$SAX.....r"   c                 B   t          | j        t          j                  r|                                 S | j        j                            d| j        j        j	                  }| j        j                            d          }| j        j        
                    | j        ||          }| j                            |dk               | j                            |d         | j        j        k               | j        j                            |          d |d                  S )Nunsigned char[]zunsigned int *r   )
isinstancer
   r   ExtendableOutputFunction_finalize_xofr   r   newr   EVP_MAX_MD_SIZEEVP_DigestFinal_exr   r   digest_sizebuffer)r   bufoutlenr   s       r    finalizez_HashContext.finalize>   s    dnf&EFF 	?%%'''-$((!4=#5#E C ]'++,<==F-$77	3OOCM((222M((q	T^77   =%,,S11+F1I+>>r"   c                 T   | j         j                            d| j        j                  }| j         j                            | j        || j        j                  }| j                             |dk               | j         j        	                    |          d | j        j                 S )Nr1   r   )
r   r   r5   r
   r8   r   EVP_DigestFinalXOFr   r   r9   )r   r:   r   s      r    r4   z_HashContext._finalize_xofN   s    m $$t~9
 
 m 33IsDN6
 
 	$$SAX...}!((--.J0J.JKKr"   r$   )r   r   )__name__
__module____qualname__r   HashAlgorithmr!   propertyr
   r(   bytesr/   r<   r4    r"   r    r   r      s        GK  -3-A	   6 6/    XK K K K/5 /T / / / /?% ? ? ? ? Lu L L L L L Lr"   r   )typingcryptography.exceptionsr   r   cryptography.hazmat.primitivesr   TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr   HashContextr   rE   r"   r    <module>rL      s   
  B B B B B B B B 1 1 1 1 1 1	 EDDDDDDHL HL HL HL HL6% HL HL HL HL HLr"   