Go to the latest version of this document.

# ``twisted`.`conch`.`ssh`.`_kex``

module documentation
(source)

SSH key exchange handling.

Function | `getDHGeneratorAndPrime` | Get the generator and the prime to use in key exchange.
Function | `getHashProcessor` | Get the hash algorithm callable to use in key exchange.
Function | `getKex` | Get a description of a named key exchange algorithm.
Function | `getSupportedKeyExchanges` | Get a list of supported key exchange algorithm names in order of preference.
Function | `isEllipticCurve` | Returns `True` if `kexAlgorithm` is an elliptic curve.
Function | `isFixedGroup` | Returns `True` if `kexAlgorithm` has a fixed prime / generator group.
Interface | `_IEllipticCurveExchangeKexAlgorithm` | An `_IEllipticCurveExchangeKexAlgorithm` describes a key exchange algorithm that uses an elliptic curve exchange between the client and server.
Interface | `_IFixedGroupKexAlgorithm` | An `_IFixedGroupKexAlgorithm` describes a key exchange algorithm with a fixed prime / generator group.
Interface | `_IGroupExchangeKexAlgorithm` | An `_IGroupExchangeKexAlgorithm` describes a key exchange algorithm that uses group exchange between the client and server.
Interface | `_IKexAlgorithm` | An `_IKexAlgorithm` describes a key exchange algorithm.
Class | `_Curve25519SHA256` | Elliptic Curve Key Exchange using Curve25519 and SHA256. Defined in https://datatracker.ietf.org/doc/draft-ietf-curdle-ssh-curves/.
Class | `_Curve25519SHA256LibSSH` | As `_Curve25519SHA256`, but with a pre-standardized algorithm name.
Class | `_DHGroup14SHA1` | Diffie-Hellman key exchange with SHA-1 as HASH and Oakley Group 14 (2048-bit MODP Group). Defined in RFC 4253, 8.2.
Class | `_DHGroupExchangeSHA1` | Diffie-Hellman Group and Key Exchange with SHA-1 as HASH. Defined in RFC 4419, 4.1.
Class | `_DHGroupExchangeSHA256` | Diffie-Hellman Group and Key Exchange with SHA-256 as HASH. Defined in RFC 4419, 4.2.
Class | `_ECDH256` | Elliptic Curve Key Exchange with SHA-256 as HASH. Defined in RFC 5656.
Class | `_ECDH384` | Elliptic Curve Key Exchange with SHA-384 as HASH. Defined in RFC 5656.
Class | `_ECDH512` | Elliptic Curve Key Exchange with SHA-512 as HASH. Defined in RFC 5656.
Class | `_HashFactory` | Undocumented
Variable | `_kexAlgorithms` | Undocumented

def getDHGeneratorAndPrime(kexAlgorithm: `bytes`) -> `tuple[int, int]`: (source)

Get the generator and the prime to use in key exchange.

Parameters
kexAlgorithm:`bytes` | The key exchange algorithm name.

Returns
`tuple` | A `tuple` containing `int` generator and `int` prime.

def getHashProcessor(kexAlgorithm: `bytes`) -> `_HashFactory`: (source)

Get the hash algorithm callable to use in key exchange.

Parameters
kexAlgorithm:`bytes` | The key exchange algorithm name.

Returns
`_HashFactory` | A callable hash algorithm constructor (e.g. `hashlib.sha256`).

def getKex(kexAlgorithm: `bytes`) -> `_IKexAlgorithm`: (source)

Get a description of a named key exchange algorithm.

Parameters
kexAlgorithm:`bytes` | The key exchange algorithm name.

Returns
`_IKexAlgorithm` | A description of the key exchange algorithm named by `kexAlgorithm`.

Raises
`ConchError` | if the key exchange algorithm is not found.

def getSupportedKeyExchanges() -> `list[bytes]`: (source)

Get a list of supported key exchange algorithm names in order of preference.

Returns
`list[bytes]` | A `list` of supported key exchange algorithm names.

def isEllipticCurve(kexAlgorithm: `bytes`) -> `bool`: (source)

Returns `True` if `kexAlgorithm` is an elliptic curve.

Parameters
kexAlgorithm:`bytes` | The key exchange algorithm name.

Returns
`bool` | `True` if `kexAlgorithm` is an elliptic curve, otherwise `False`.

def isFixedGroup(kexAlgorithm: `bytes`) -> `bool`: (source)

Returns `True` if `kexAlgorithm` has a fixed prime / generator group.

Parameters
kexAlgorithm:`bytes` | The key exchange algorithm name.

Returns
`bool` | `True` if `kexAlgorithm` has a fixed prime / generator group, otherwise `False`.

_kexAlgorithms: `dict[bytes, _IKexAlgorithm]` = (source)

Undocumented