403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/lib/python3/dist-packages/Cryptodome/PublicKey/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3/dist-packages/Cryptodome/PublicKey/__pycache__/ElGamal.cpython-311.pyc
�

8�tc�!��b�gd�ZddlmZddlmZmZmZddlmZd�Z	d�Z
Gd�de��Zd	S)
)�generate�	construct�
ElGamalKey�)�Random)�generate_probable_safe_prime�test_probable_prime�	COMPOSITE��Integerc��t��}t||���|_|jdz
dz	}	tt	jd|j|���d|j��|_|jdvr�@|jdz
|jzdkr�W|j�|j��}|jdz
|zdkr��	t	jd|jdz
|���|_t|j|j|j��|_	|S)aRandomly generate a fresh, new ElGamal key.

    The key will be safe for use for both encryption and signature
    (although it should be used for **only one** purpose).

    Args:
      bits (int):
        Key length, or size (in bits) of the modulus *p*.
        The recommended value is 2048.
      randfunc (callable):
        Random number generation function; it should accept
        a single integer *N* and return a string of random
        *N* random bytes.

    Return:
        an :class:`ElGamalKey` object
    )�
exact_bits�randfunc����
min_inclusive�
max_exclusiver)rrr)
rr�p�powr�random_range�g�inverse�x�y)�bitsr�obj�q�ginvs     �>/usr/lib/python3/dist-packages/Cryptodome/PublicKey/ElGamal.pyrr"s��&	���C�
)�D�8�L�L�L�C�E�	����q��A���G�(�q�36�5�.6�8�8�8�9:�C�E�C�C����5�F�?�?��
�E�A�I����!�#�#��
�u�}�}�S�U�#�#���E�A�I����"�"��	�
� �q�/2�u�Q�w�*2�
4�
4�
4�C�E�
���s�u�c�e�$�$�C�E��J�c	���t��}t|��dvrtd���tt|����D]3}|j|}t||t
||�����4t|j��tk}||j
dkp|j
|jkz}|t|j
|jdz
|j��dkz}||jdkp|j|jkz}t|��dkrJ||j
dkp|j
|jkz}|t|j
|j
|j��|jkz}|rtd���|S)a�Construct an ElGamal key from a tuple of valid ElGamal components.

    The modulus *p* must be a prime.
    The following conditions must apply:

    .. math::

        \begin{align}
        &1 < g < p-1 \\
        &g^{p-1} = 1 \text{ mod } 1 \\
        &1 < x < p-1 \\
        &g^x = y \text{ mod } p
        \end{align}

    Args:
      tup (tuple):
        A tuple with either 3 or 4 integers,
        in the following order:

        1. Modulus (*p*).
        2. Generator (*g*).
        3. Public key (*y*).
        4. Private key (*x*). Optional.

    Raises:
        ValueError: when the key being imported fails the most basic ElGamal validity checks.

    Returns:
        an :class:`ElGamalKey` object
    )��z%argument for construct() wrong lengthrr#zInvalid ElGamal key components)r�len�
ValueError�range�_keydata�setattrrrrr	rrrr)�tupr�i�field�	fmt_errors     rrr`sQ��@	���C�
�3�x�x�u����@�A�A�A�
�3�s�8�8�_�_�-�-����Q�����U�G�C��F�O�O�,�,�,�,�#�C�E�*�*�i�7�I�
�����)�S�U�C�E�\�)�I�
��S�U�C�E�!�G�S�U�+�+�Q�.�.�I�
���q��(�C�E�3�5�L�(�I�
�3�x�x��{�{��S�U�A�X�-������-�	��S�����s�u�-�-�s�u�4�4�	��;��9�:�:�:��Jr c��eZdZdZgd�Zdd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)raPClass defining an ElGamal key.
    Do not instantiate directly.
    Use :func:`generate` or :func:`construct` instead.

    :ivar p: Modulus
    :vartype d: integer

    :ivar g: Generator
    :vartype e: integer

    :ivar y: Public key component
    :vartype y: integer

    :ivar x: Private key component
    :vartype x: integer
    )rrrrNc�H�|�tj��j}||_dS�N)r�new�read�	_randfunc)�selfrs  r�__init__zElGamalKey.__init__�s!�����z�|�|�(�H�!����r c��t|j||j��}t|j||j��|z|jz}t	|��t	|��gSr/)rrrr�int)r3�M�K�a�bs     r�_encryptzElGamalKey._encrypt�sO��

�d�f�a���
 �
 ������4�6�"�"�1�$���
/���A����A����r c���t|d��std���tjd|jdz
|j���}t
|j||j��|dz|jz}t
||j|j��}|�	|j��|dz|jz}|t
|j
||j��z|jz}t|��S)Nr�(Private key not available in this objectrrrr)�hasattr�	TypeErrorrrrr2rrrrrr6)r3r7�r�a_blind�ax�plaintext_blind�	plaintexts       r�_decryptzElGamalKey._decrypt�s�����c�"�"�	H��F�G�G�G�� �q�/3�v�a�x�*.�.�
:�
:�
:���t�v�q�$�&�)�)�A�a�D�0�D�F�:���w�����'�'���:�:�d�f�-�-��!��4���?��$�s�4�6�1�d�f�'=�'=�=���G�	��9�~�~�r c���t|d��std���|jdz
}t|��}|�|��dkrtd���t
|j||j��}t|��|j|zz
|z}|dkr||z}|dk�||�	|��z|z}t|��t|��gS)Nrr=rzBad K value: GCD(K,p-1)!=1r)r>r?rr�gcdr%rrrrr6)r3r7r8�p1r9�tr:s       r�_signzElGamalKey._sign�s�����c�"�"�	H��F�G�G�G��6�!�8���A�J�J��
�E�E�"�I�I�q�L�L��9�:�:�:�

�d�f�a���
 �
 ���1�:�:�d�f�Q�h��"�
$����c�c�Q�r�T�1�a��c�c��Q�Y�Y�r�]�]�?�b�
 ���A����A����r c�D�d�|D��}|ddks|d|jdz
krdSt|j|d|j��}|t|d|d|j��z|jz}t|j||j��}||krdSdS)Nc�,�g|]}t|����S�r
)�.0rs  r�
<listcomp>z&ElGamalKey._verify.<locals>.<listcomp>�s��'�'�'�a�w�q�z�z�'�'�'r rr)rrrr)r3r7�sig�v1�v2s     r�_verifyzElGamalKey._verify�s���'�'�3�'�'�'���q�6�!�8�8�s�1�v�d�f�Q�h����1��t�v�s�1�v�t�v�&�&���s�3�q�6�3�q�6�4�6�*�*�*�d�f�4���t�v�q�$�&�!�!��
�r�6�6��1��qr c�*�t|d��rdSdS)z&Whether this is an ElGamal private keyrrr)r>�r3s r�has_privatezElGamalKey.has_private�s ���4����	��1��1r c��dS�NTrMrUs r�can_encryptzElGamalKey.can_encrypt�����tr c��dSrXrMrUs r�can_signzElGamalKey.can_sign�rZr c�D�t|j|j|jf��S)zfA matching ElGamal public key.

        Returns:
            a new :class:`ElGamalKey` object
        )rrrrrUs r�	publickeyzElGamalKey.publickey�s���$�&�$�&�$�&�1�2�2�2r c�
�t|�����t|�����krdSd}|jD]2}|o-t|j|d��t|j|d��k}�3|S)NFT)�boolrVr'�getattr�key)r3�other�result�comps    r�__eq__zElGamalKey.__eq__�s����� � �"�"�#�#�t�E�,=�,=�,?�,?�'@�'@�@�@��5����M�	A�	A�D��A����4��!>�!>�!(���D�$�!?�!?�"@�F�F��
r c�.�|�|��Sr/)rf)r3rcs  r�__ne__zElGamalKey.__ne__s���;�;�u�%�%�%�%r c��ddlm}|�)Nr)�
PicklingError)�picklerj)r3rjs  r�__getstate__zElGamalKey.__getstate__s��(�(�(�(�(�(��r c��t�r/��NotImplementedError)r3r7r8s   r�signzElGamalKey.sign���!�!r c��t�r/rn)r3r7�	signatures   r�verifyzElGamalKey.verifyrqr c��t�r/rn)r3rDr8s   r�encryptzElGamalKey.encryptrqr c��t�r/rn)r3�
ciphertexts  r�decryptzElGamalKey.decryptrqr c��t�r/rn�r3r7�Bs   r�blindzElGamalKey.blindrqr c��t�r/rnr{s   r�unblindzElGamalKey.unblindrqr c��t�r/rnrUs r�sizezElGamalKey.sizerqr r/)�__name__�
__module__�__qualname__�__doc__r'r4r;rErJrSrVrYr\r^rfrhrlrprtrvryr}rr�rMr rrr�sM��������8"�
!�
!�H�"�"�"�"�
 � � �

�
�
� � � �	�	�	����������3�3�3����&�&�&����"�"�"�"�"�"�"�"�"�"�"�"�"�"�"�"�"�"�"�"�"�"�"r rN)
�__all__�
Cryptodomer�Cryptodome.Math.Primalityrrr	�Cryptodome.Math.Numbersrrr�objectrrMr r�<module>r�s���42�
1�
1��������E�E�E�E�E�E�E�E�E�E�+�+�+�+�+�+�<�<�<�|2�2�2�hJ"�J"�J"�J"�J"��J"�J"�J"�J"�J"r 

Youez - 2016 - github.com/yon3zu
LinuXploit