README.md

derivepassphrase-sshagentsocketprovider

PyPI - Version PyPI - Python Version

An interface for SSH agent socket providers, which expose an abstract communication channel for an SSH agent to derivepassphrase.

This package contains only the interface definition and the types involved.


Installation

derivepassphrase-sshagentsocketprovider is a pure Python package, and may be easily installed with any pip-compatible Python package manager such as pip, pipx, or uv. (pip is distributed with Python 3 by default.)

derivepassphrase-sshagentsocketprovider requires Python 3.9 or higher, as well as the typing-extensions package.

pip install derivepassphrase-sshagentsocketprovider

Registering an SSH agent socket provider

The SSHAgentSocket represents the abstract communication channel to an SSH agent. Ensure that the abstract channel behaves like a socket with respect to the sendall and recv operations. The abstract channel must also be a context manager, which closes itself upon leaving the context, causing further sendall and recv operations to raise an error. (By convention, this is OSError, with errno.EBADF.)

The SSHAgentSocketProvider is a callable that returns an SSHAgentSocket when called without arguments.

To then actually register an SSH agent socket provider, build an SSHAgentSocketProviderEntry struct as follows:

def ssh_agent_over_stdin_stdout_provider() -> SSHAgentSocket: ...


stdin_stdout_entry_point = SSHAgentSocketProviderEntry(
    provider=ssh_agent_over_stdin_stdout_provider,
    key="stdin_stdout",
    aliases=("stdin", "stdout"),
)

Then add an appropriate entry point definition in your pyproject.toml, using the entry point group name derivepassphrase.ssh_agent_socket_providers:

[project.entry."derivepassphrase.ssh_agent_socket_providers"]
first_provider = "mymodule: stdin_stdout_entry_point"

derivepassphrase will then pick up stdin_stdout as a new SSH agent socket provider, with aliases stdin and stdout.[^entry_point_name]

[^entry_point_name]: Only the fields in SSHAgentSocketProviderEntry matter, not what names are used to declare the entry point. By convention, however, you would choose stdin_stdout as the entry point name, not first_provider.

License

Like derivepassphrase, derivepassphrase-sshagentsocketprovider is distributed under the terms of the zlib/libpng license.