# Packetizer

Packet handling

exception paramiko.packet.NeedRekeyException

  Exception indicating a rekey is needed.

  __weakref__

    list of weak references to the object (if defined)

class paramiko.packet.Packetizer(socket)

  Implementation of the base SSH packet protocol.

  __init__(socket)
  __weakref__

    list of weak references to the object (if defined)

  complete_handshake()

    Tells `Packetizer` that the handshake has completed.

  handshake_timed_out()

    Checks if the handshake has timed out.

    If `start_handshake` wasn’t called before the call to this function, the return value will always be `False`. If the handshake completed before a timeout was reached, the return value will be `False`

    Returns:

      handshake time out status, as a `bool`

  need_rekey()

    Returns `True` if a new set of keys needs to be negotiated. This will be triggered during a packet read or write, so it should be checked after every read or write, or at least after every few.

  read_all(n, check_rekey=False)

    Read as close to N bytes as possible, blocking as long as necessary.

    Parameters:

      n (int) – number of bytes to read

    Returns:

      the data read, as a `str`

    Raises:

      `EOFError` – if the socket was closed before all the bytes could be read

  read_message()

    Only one thread should ever be in this function (no other locking is done).

    Raises:

      `SSHException` – if the packet is mangled

    Raises:

      `NeedRekeyException` – if the transport should rekey

  readline(timeout)

    Read a line from the socket. We assume no data is pending after the line, so it’s okay to attempt large reads.

  send_message(data)

    Write a block of data using the current cipher, as an SSH block.

  set_inbound_cipher(block_engine, block_size, mac_engine, mac_size, mac_key, etm=False, aead=False, iv_in=None)

    Switch inbound data cipher. :param etm: Set encrypt-then-mac from OpenSSH

  set_keepalive(interval, callback)

    Turn on/off the callback keepalive. If `interval` seconds pass with no data read from or written to the socket, the callback will be executed and the timer will be reset.

  set_log(log)

    Set the Python log object to use for logging.

  set_outbound_cipher(block_engine, block_size, mac_engine, mac_size, mac_key, sdctr=False, etm=False, aead=False, iv_out=None)

    Switch outbound data cipher. :param etm: Set encrypt-then-mac from OpenSSH

  start_handshake(timeout)

    Tells `Packetizer` that the handshake process started. Starts a book keeping timer that can signal a timeout in the handshake process.

    Parameters:

      timeout (float) – amount of seconds to wait before timing out