%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/lib/python3/dist-packages/twisted/conch/ssh/__pycache__/
Upload File :
Create Path :
Current File : //proc/self/root/lib/python3/dist-packages/twisted/conch/ssh/__pycache__/_kex.cpython-312.pyc

�

Ϫ�fw!�	�r�dZddlmZmZmZmZddlmZmZm	Z	ddl
mZGd�de�ZGd�de�Z
Gd	�d
e�ZGd�de�Ze	e�Gd
�d��Ze	e�Gd�d��Ze	e�Gd�d��Ze	e�Gd�d��Ze	e�Gd�d��Ze	e�Gd�d��Ze	e�Gd�d��Ze	e
�Gd�d��Ze�e�e�e�e�e�e�e�d�Zd�Zd�Zd �Zd!�Zd"�Zd#�Zy$)%z
SSH key exchange handling.
�)�sha1�sha256�sha384�sha512)�	Attribute�	Interface�implementer)�errorc�0�eZdZdZed�Zed�Zy)�_IKexAlgorithmzB
    An L{_IKexAlgorithm} describes a key exchange algorithm.
    z�An L{int} giving the preference of the algorithm when negotiating key exchange. Algorithms with lower precedence values are more preferred.zqA callable hash algorithm constructor (e.g. C{hashlib.sha256}) suitable for use with this key exchange algorithm.N)�__name__�
__module__�__qualname__�__doc__r�
preference�
hashProcessor���8/usr/lib/python3/dist-packages/twisted/conch/ssh/_kex.pyrrs)����	��J��	=��Mrrc�0�eZdZdZed�Zed�Zy)�_IFixedGroupKexAlgorithmzu
    An L{_IFixedGroupKexAlgorithm} describes a key exchange algorithm with a
    fixed prime / generator group.
    zdAn L{int} giving the prime number used in Diffie-Hellman key exchange, or L{None} if not applicable.z�An L{int} giving the generator number used in Diffie-Hellman key exchange, or L{None} if not applicable. (This is not related to Python generator functions.)N)r
rrrr�prime�	generatorrrrrr"s)���

�	2�
�E�
�	'��Irrc��eZdZdZy)�#_IEllipticCurveExchangeKexAlgorithmz�
    An L{_IEllipticCurveExchangeKexAlgorithm} describes a key exchange algorithm
    that uses an elliptic curve exchange between the client and server.
    N�r
rrrrrrrr4s��rrc��eZdZdZy)�_IGroupExchangeKexAlgorithmz�
    An L{_IGroupExchangeKexAlgorithm} describes a key exchange algorithm
    that uses group exchange between the client and server.

    A prime / generator group should be chosen at run time based on the
    requested size. See RFC 4419.
    Nrrrrrr;s��rrc��eZdZdZdZeZy)�_Curve25519SHA256z�
    Elliptic Curve Key Exchange using Curve25519 and SHA256. Defined in
    U{https://datatracker.ietf.org/doc/draft-ietf-curdle-ssh-curves/}.
    �N�r
rrrrrrrrrr r E����
�J��Mrr c��eZdZdZdZeZy)�_Curve25519SHA256LibSSHzN
    As L{_Curve25519SHA256}, but with a pre-standardized algorithm name.
    �Nr"rrrr%r%Ps����J��Mrr%c��eZdZdZdZeZy)�_ECDH256aX
    Elliptic Curve Key Exchange with SHA-256 as HASH. Defined in
    RFC 5656.

    Note that C{ecdh-sha2-nistp256} takes priority over nistp384 or nistp512.
    This is the same priority from OpenSSH.

    C{ecdh-sha2-nistp256} is considered preety good cryptography.
    If you need something better consider using C{curve25519-sha256}.
    �Nr"rrrr(r(Zs��	��J��Mrr(c��eZdZdZdZeZy)�_ECDH384zT
    Elliptic Curve Key Exchange with SHA-384 as HASH. Defined in
    RFC 5656.
    �N)r
rrrrrrrrrr+r+kr#rr+c��eZdZdZdZeZy)�_ECDH512zT
    Elliptic Curve Key Exchange with SHA-512 as HASH. Defined in
    RFC 5656.
    �N)r
rrrrrrrrrr.r.vr#rr.c��eZdZdZdZeZy)�_DHGroupExchangeSHA256zc
    Diffie-Hellman Group and Key Exchange with SHA-256 as HASH. Defined in
    RFC 4419, 4.2.
    �Nr"rrrr1r1�r#rr1c��eZdZdZdZeZy)�_DHGroupExchangeSHA1za
    Diffie-Hellman Group and Key Exchange with SHA-1 as HASH. Defined in
    RFC 4419, 4.1.
    �N)r
rrrrrrrrrr4r4�s���
�J��Mrr4c�,�eZdZdZdZeZed�ZdZ	y)�_DHGroup14SHA1z�
    Diffie-Hellman key exchange with SHA-1 as HASH and Oakley Group 14
    (2048-bit MODP Group). Defined in RFC 4253, 8.2.
    ��i32317006071311007300338913926423828248817941241140239112842009751400741706634354222619689417363569347117901737909704191754605873209195028853758986185622153212175412514901774520270235796078236248884246189477587641105928646099411723245426622522193230540919037680524235519125679715870117001058055877651038861847280257976054903569732561526167081339361799541336476559160368317896729073178384589680639671900977202194168647225871031411336429319536193471636533209717077448227988588565369208645296636077250268955505928362751121174096972998068410554359584866583291642136218231078990999448652468262416972035911852507045361090559r&N)
r
rrrrrr�intrrrrrr7r7�s)���
�J��M��
	�
�E��Irr7)�curve25519-sha256scurve25519-sha256@libssh.orgs$diffie-hellman-group-exchange-sha256s"diffie-hellman-group-exchange-sha1sdiffie-hellman-group14-sha1secdh-sha2-nistp256secdh-sha2-nistp384secdh-sha2-nistp521c�T�|tvrtjd|����t|S)aY
    Get a description of a named key exchange algorithm.

    @param kexAlgorithm: The key exchange algorithm name.
    @type kexAlgorithm: L{bytes}

    @return: A description of the key exchange algorithm named by
        C{kexAlgorithm}.
    @rtype: L{_IKexAlgorithm}

    @raises ConchError: if the key exchange algorithm is not found.
    z$Unsupported key exchange algorithm: )�_kexAlgorithmsr
�
ConchError��kexAlgorithms r�getKexrA�s0���>�)����!E�l�^�T�U�U��,�'�'rc�>�tjt|��S)a
    Returns C{True} if C{kexAlgorithm} is an elliptic curve.

    @param kexAlgorithm: The key exchange algorithm name.
    @type kexAlgorithm: C{str}

    @return: C{True} if C{kexAlgorithm} is an elliptic curve,
        otherwise C{False}.
    @rtype: C{bool}
    )r�
providedByrAr?s r�isEllipticCurverD�s��/�9�9�&��:N�O�Orc�>�tjt|��S)a+
    Returns C{True} if C{kexAlgorithm} has a fixed prime / generator group.

    @param kexAlgorithm: The key exchange algorithm name.
    @type kexAlgorithm: L{bytes}

    @return: C{True} if C{kexAlgorithm} has a fixed prime / generator group,
        otherwise C{False}.
    @rtype: L{bool}
    )rrCrAr?s r�isFixedGrouprF�s��$�.�.�v�l�/C�D�Drc�0�t|�}|jS)a
    Get the hash algorithm callable to use in key exchange.

    @param kexAlgorithm: The key exchange algorithm name.
    @type kexAlgorithm: L{bytes}

    @return: A callable hash algorithm constructor (e.g. C{hashlib.sha256}).
    @rtype: C{callable}
    )rAr�r@�kexs  r�getHashProcessorrJ�s����
�C����rc�H�t|�}|j|jfS)z�
    Get the generator and the prime to use in key exchange.

    @param kexAlgorithm: The key exchange algorithm name.
    @type kexAlgorithm: L{bytes}

    @return: A L{tuple} containing L{int} generator and L{int} prime.
    @rtype: L{tuple}
    )rArrrHs  r�getDHGeneratorAndPrimerL�s!����
�C��=�=�#�)�)�#�#rc���ddlm}ddlm}ddlm}|�}tj��t��D]�}|jd�r6|jdd�}|j|j�||�}n$|jd�r|j�}nd}|r�q�j|���t��fd	��
�S)z�
    Get a list of supported key exchange algorithm names in order of
    preference.

    @return: A C{list} of supported key exchange algorithm names.
    @rtype: C{list} of L{bytes}
    r)�default_backend)�ec)�_curveTablesecdhsecdsar;Tc�"���|jS)N)r)r@�
kexAlgorithmss �r�<lambda>z*getSupportedKeyExchanges.<locals>.<lambda>$s���
�l�0K�0V�0V�r)�key)�cryptography.hazmat.backendsrN�)cryptography.hazmat.primitives.asymmetricrO�twisted.conch.ssh.keysrPr=�copy�list�
startswith�replace�+elliptic_curve_exchange_algorithm_supported�ECDH�x25519_supported�pop�sorted)rNrOrP�backend�keyAlgorithm�keyAlgorithmDsa�	supportedrRs       @r�getSupportedKeyExchangesres����=�<�2���G�"�'�'�)�M��]�+�,���"�"�7�+�*�2�2�7�H�E�O��K�K����	�;��7��I��
$�
$�%9�
:��0�0�2�I��I�����l�+�,���V��rN)r�hashlibrrrr�zope.interfacerrr	�
twisted.conchr
rrrrr r%r(r+r.r1r4r7r=rArDrFrJrLrerrr�<module>ris���
�
1�0�<�<���Y��"�~��$�.���.��
�
0�1���2��
�
0�1���2��
�
0�1�
�
�2�
� 
�
0�1���2��
�
0�1���2��
�
(�)���*��
�
(�)���*��
�
%�&���'��6,�-�%<�%>�-C�-E�+?�+A�$2�$4�#�:�#�:�#�:�	��(�$P�E��$�r

Zerion Mini Shell 1.0