git.schokokeks.org
Repositories
Help
Report an Issue
derivepassphrase.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
1bff169
Branches
Tags
documentation-tree
master
wishlist
0.1.0
0.1.1
0.1.2
0.1.3
0.2.0
0.3.0
0.3.1
0.3.2
0.3.3
0.4.0
0.5
0.5.1
0.5.2
0.6
derivepassphrase.git
0.x
reference
derivepassphrase.ssh_agent
index.html
Deployed 4d028b5c74e3 to 0.x with MkDocs 1.6.1 and mike 2.1.4
Marco Ricci
commited
1bff169
at 2026-04-04 13:59:04
index.html
Blame
History
Raw
<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="description" content="An almost faithful Python reimplementation of James Coglan's vault."> <meta name="author" content="Marco Ricci"> <link rel="canonical" href="https://the13thletter.info/derivepassphrase/0.x/reference/derivepassphrase.ssh_agent/"> <link rel="prev" href="../derivepassphrase.sequin/"> <link rel="next" href="../derivepassphrase._types/"> <link rel="icon" href="../../assets/images/favicon.png"> <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6"> <title>Submodule ssh_agent - derivepassphrase</title> <link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css"> <style>:root{--md-text-font:"Noto Sans";--md-code-font:"Noto Mono"}</style> <link rel="stylesheet" href="../../assets/_mkdocstrings.css"> <link rel="stylesheet" href="../../mkdocstrings_recommended_styles.css"> <link rel="stylesheet" href="../../wishlist_styling.css"> </head> <body dir="ltr"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#derivepassphrase.ssh_agent" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <div data-md-color-scheme="default" data-md-component="outdated" hidden> </div> <div class="md-container" data-md-component="container"> <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> <div class="md-grid"> <ul class="md-tabs__list"> <li class="md-tabs__item"> <a href="../.." class="md-tabs__link"> Overview </a> </li> <li class="md-tabs__item"> <a href="../../tutorials/" class="md-tabs__link"> Tutorials & Examples </a> </li> <li class="md-tabs__item"> <a href="../../how-tos/" class="md-tabs__link"> How-Tos </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="../" class="md-tabs__link"> Reference </a> </li> <li class="md-tabs__item"> <a href="../../explanation/" class="md-tabs__link"> Design & Background </a> </li> <li class="md-tabs__item"> <a href="../../changelog/" class="md-tabs__link"> Changelog </a> </li> <li class="md-tabs__item"> <a href="../../wishlist/" class="md-tabs__link"> Wishlist </a> </li> </ul> </div> </nav> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href="../.." title="derivepassphrase" class="md-nav__button md-logo" aria-label="derivepassphrase" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> derivepassphrase </label> <div class="md-nav__source"> <a href="https://git.schokokeks.org/derivepassphrase.git" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg> </div> <div class="md-source__repository"> the-13th-letter/derivepassphrase </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../.." class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" > <div class="md-nav__link md-nav__container"> <a href="../../tutorials/" class="md-nav__link "> <span class="md-ellipsis"> Tutorials & Examples </span> </a> <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Tutorials & Examples </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../tutorials/basic-setup-passphrase/" class="md-nav__link"> <span class="md-ellipsis"> Setting up derivepassphrase vault for three accounts, with a master passphrase </span> </a> </li> <li class="md-nav__item"> <a href="../../tutorials/basic-setup-ssh-key/" class="md-nav__link"> <span class="md-ellipsis"> Using a master SSH key with derivepassphrase vault on existing accounts </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" > <div class="md-nav__link md-nav__container"> <a href="../../how-tos/" class="md-nav__link "> <span class="md-ellipsis"> How-Tos </span> </a> <label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> How-Tos </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../how-tos/ssh-key/" class="md-nav__link"> <span class="md-ellipsis"> How to set up derivepassphrase vault with an SSH key </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked> <div class="md-nav__link md-nav__container"> <a href="../" class="md-nav__link "> <span class="md-ellipsis"> Reference </span> </a> <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex=""> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_4"> <span class="md-nav__icon md-icon"></span> Reference </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2" > <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex=""> <span class="md-ellipsis"> Man pages </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_2"> <span class="md-nav__icon md-icon"></span> Man pages </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../derivepassphrase.1/" class="md-nav__link"> <span class="md-ellipsis"> derivepassphrase(1) </span> </a> </li> <li class="md-nav__item"> <a href="../derivepassphrase-vault.1/" class="md-nav__link"> <span class="md-ellipsis"> derivepassphrase-vault(1) </span> </a> </li> <li class="md-nav__item"> <a href="../derivepassphrase-export.1/" class="md-nav__link"> <span class="md-ellipsis"> derivepassphrase-export(1) </span> </a> </li> <li class="md-nav__item"> <a href="../derivepassphrase-export-vault.1/" class="md-nav__link"> <span class="md-ellipsis"> derivepassphrase-export-vault(1) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3" checked> <label class="md-nav__link" for="__nav_4_3" id="__nav_4_3_label" tabindex=""> <span class="md-ellipsis"> API docs: Module derivepassphrase </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_3_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_4_3"> <span class="md-nav__icon md-icon"></span> API docs: Module derivepassphrase </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../derivepassphrase.cli/" class="md-nav__link"> <span class="md-ellipsis"> Submodule cli </span> </a> </li> <li class="md-nav__item"> <a href="../derivepassphrase.exporter/" class="md-nav__link"> <span class="md-ellipsis"> Subpackage exporter </span> </a> </li> <li class="md-nav__item"> <a href="../derivepassphrase.sequin/" class="md-nav__link"> <span class="md-ellipsis"> Submodule sequin </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> <span class="md-ellipsis"> Submodule ssh_agent </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Submodule ssh_agent </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.TrailingDataError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> TrailingDataError </span> </a> <nav class="md-nav" aria-label=" TrailingDataError"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.TrailingDataError.__repr__" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> __repr__ </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentFailedError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> SSHAgentFailedError </span> </a> <nav class="md-nav" aria-label=" SSHAgentFailedError"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentFailedError.__repr__" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> __repr__ </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> SSHAgentClient </span> </a> <nav class="md-nav" aria-label=" SSHAgentClient"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.SOCKET_PROVIDERS" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code> SOCKET_PROVIDERS </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.__enter__" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> __enter__ </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.__exit__" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> __exit__ </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.uint32" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> uint32 </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.string" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> string </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.unstring" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> unstring </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.unstring_prefix" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> unstring_prefix </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.ensure_agent_subcontext" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> ensure_agent_subcontext </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.has_deterministic_dsa_signatures" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> has_deterministic_dsa_signatures </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.request" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> request </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.list_keys" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> list_keys </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.sign" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> sign </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.query_extensions" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> query_extensions </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-module"></code> socketprovider </span> </a> <nav class="md-nav" aria-label=" socketprovider"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code> SSHAgentSocketProviderT </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.OVERLAPPED" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> OVERLAPPED </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> NoSuchProviderError </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.UnixDomainSocketsNotAvailableError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> UnixDomainSocketsNotAvailableError </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> WindowsNamedPipesNotAvailableError </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> WindowsNamedPipeHandle </span> </a> <nav class="md-nav" aria-label=" WindowsNamedPipeHandle"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.named_pipe_name" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> named_pipe_name </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.for_openssh" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> for_openssh </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.for_pageant" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> for_pageant </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.pageant_named_pipe_name" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> pageant_named_pipe_name </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> SocketProvider </span> </a> <nav class="md-nav" aria-label=" SocketProvider"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.registry" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code> registry </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.ENTRY_POINT_GROUP_NAME" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code> ENTRY_POINT_GROUP_NAME </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.unix_domain_ssh_auth_sock" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> unix_domain_ssh_auth_sock </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_for_pageant" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> windows_named_pipe_for_pageant </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_for_openssh" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> windows_named_pipe_for_openssh </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_ssh_auth_sock" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> windows_named_pipe_ssh_auth_sock </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.register" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> register </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.lookup" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> lookup </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.resolve" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> resolve </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.grouped" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> grouped </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../derivepassphrase._types/" class="md-nav__link"> <span class="md-ellipsis"> Submodule _types </span> </a> </li> <li class="md-nav__item"> <a href="../derivepassphrase.vault/" class="md-nav__link"> <span class="md-ellipsis"> Submodule vault </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_4" > <label class="md-nav__link" for="__nav_4_4" id="__nav_4_4_label" tabindex=""> <span class="md-ellipsis"> Technical prerequisites </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_4"> <span class="md-nav__icon md-icon"></span> Technical prerequisites </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../prerequisites-ssh-key/" class="md-nav__link"> <span class="md-ellipsis"> Using derivepassphrase vault with an SSH key </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" > <div class="md-nav__link md-nav__container"> <a href="../../explanation/" class="md-nav__link "> <span class="md-ellipsis"> Design & Background </span> </a> <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5"> <span class="md-nav__icon md-icon"></span> Design & Background </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../explanation/faq-altered-versions/" class="md-nav__link"> <span class="md-ellipsis"> "altered versions" license requirement </span> </a> </li> <li class="md-nav__item"> <a href="../../explanation/faq-vault-interchangable-passphrases/" class="md-nav__link"> <span class="md-ellipsis"> "interchangable passphrases" in vault </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" > <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0"> <span class="md-ellipsis"> Changelog </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6"> <span class="md-nav__icon md-icon"></span> Changelog </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../changelog/" class="md-nav__link"> <span class="md-ellipsis"> Changelog </span> </a> </li> <li class="md-nav__item"> <a href="../../upgrade-notes/" class="md-nav__link"> <span class="md-ellipsis"> Upgrade notes </span> </a> </li> <li class="md-nav__item"> <a href="../../pycompatibility/" class="md-nav__link"> <span class="md-ellipsis"> Python compatibility </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" > <div class="md-nav__link md-nav__container"> <a href="../../wishlist/" class="md-nav__link "> <span class="md-ellipsis"> Wishlist </span> </a> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7"> <span class="md-nav__icon md-icon"></span> Wishlist </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.TrailingDataError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> TrailingDataError </span> </a> <nav class="md-nav" aria-label=" TrailingDataError"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.TrailingDataError.__repr__" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> __repr__ </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentFailedError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> SSHAgentFailedError </span> </a> <nav class="md-nav" aria-label=" SSHAgentFailedError"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentFailedError.__repr__" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> __repr__ </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> SSHAgentClient </span> </a> <nav class="md-nav" aria-label=" SSHAgentClient"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.SOCKET_PROVIDERS" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code> SOCKET_PROVIDERS </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.__enter__" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> __enter__ </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.__exit__" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> __exit__ </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.uint32" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> uint32 </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.string" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> string </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.unstring" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> unstring </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.unstring_prefix" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> unstring_prefix </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.ensure_agent_subcontext" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> ensure_agent_subcontext </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.has_deterministic_dsa_signatures" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> has_deterministic_dsa_signatures </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.request" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> request </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.list_keys" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> list_keys </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.sign" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> sign </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.query_extensions" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> query_extensions </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-module"></code> socketprovider </span> </a> <nav class="md-nav" aria-label=" socketprovider"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code> SSHAgentSocketProviderT </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.OVERLAPPED" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> OVERLAPPED </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> NoSuchProviderError </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.UnixDomainSocketsNotAvailableError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> UnixDomainSocketsNotAvailableError </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> WindowsNamedPipesNotAvailableError </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> WindowsNamedPipeHandle </span> </a> <nav class="md-nav" aria-label=" WindowsNamedPipeHandle"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.named_pipe_name" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> named_pipe_name </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.for_openssh" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> for_openssh </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.for_pageant" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> for_pageant </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.pageant_named_pipe_name" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> pageant_named_pipe_name </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code> SocketProvider </span> </a> <nav class="md-nav" aria-label=" SocketProvider"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.registry" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code> registry </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.ENTRY_POINT_GROUP_NAME" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code> ENTRY_POINT_GROUP_NAME </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.unix_domain_ssh_auth_sock" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> unix_domain_ssh_auth_sock </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_for_pageant" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> windows_named_pipe_for_pageant </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_for_openssh" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> windows_named_pipe_for_openssh </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_ssh_auth_sock" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> windows_named_pipe_ssh_auth_sock </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.register" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> register </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.lookup" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> lookup </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.resolve" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> resolve </span> </a> </li> <li class="md-nav__item"> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.grouped" class="md-nav__link"> <span class="md-ellipsis"> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code> grouped </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <a href="https://git.schokokeks.org/derivepassphrase.git/raw/master/docs/reference/derivepassphrase.ssh_agent.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <div class="doc doc-object doc-module"> <h1 id="derivepassphrase.ssh_agent" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-module"></code> <span class="doc doc-object-name doc-module-name">derivepassphrase.ssh_agent</span> <a href="#derivepassphrase.ssh_agent" class="headerlink" title="Permanent link">¶</a></h1> <div class="doc doc-contents first"> <p>A bare-bones SSH agent client supporting signing and key listing.</p> <div class="doc doc-children"> <div class="doc doc-object doc-class"> <h2 id="derivepassphrase.ssh_agent.TrailingDataError" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">TrailingDataError</span> <a href="#derivepassphrase.ssh_agent.TrailingDataError" class="headerlink" title="Permanent link">¶</a></h2> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">TrailingDataError</span><span class="p">(</span> <span class="n">raw</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytearray">bytearray</a></span> <span class="o">=</span> <span class="sa">b</span><span class="s2">""</span><span class="p">,</span> <span class="n">trailing</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytearray">bytearray</a></span> <span class="o">=</span> <span class="sa">b</span><span class="s2">""</span><span class="p">,</span> <span class="p">)</span> </code></pre></div> <div class="doc doc-contents "> <p class="doc doc-class-bases"> Bases: <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#RuntimeError">RuntimeError</a></code></p> <p>The result contained trailing data.</p> <div class="doc doc-children"> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.TrailingDataError.__repr__" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">__repr__</span> <a href="#derivepassphrase.ssh_agent.TrailingDataError.__repr__" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">__repr__</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> </code></pre></div> <div class="doc doc-contents "> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id="derivepassphrase.ssh_agent.SSHAgentFailedError" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">SSHAgentFailedError</span> <a href="#derivepassphrase.ssh_agent.SSHAgentFailedError" class="headerlink" title="Permanent link">¶</a></h2> <div class="doc doc-contents "> <p class="doc doc-class-bases"> Bases: <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#RuntimeError">RuntimeError</a></code></p> <p>The SSH agent failed to complete the requested operation.</p> <div class="doc doc-children"> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentFailedError.__repr__" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">__repr__</span> <a href="#derivepassphrase.ssh_agent.SSHAgentFailedError.__repr__" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">__repr__</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> </code></pre></div> <div class="doc doc-contents "> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id="derivepassphrase.ssh_agent.SSHAgentClient" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">SSHAgentClient</span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient" class="headerlink" title="Permanent link">¶</a></h2> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">SSHAgentClient</span><span class="p">(</span> <span class="o">*</span><span class="p">,</span> <span class="n">socket</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocket (derivepassphrase._types.SSHAgentSocket)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocket">SSHAgentSocket</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span> <span class="p">)</span> </code></pre></div> <div class="doc doc-contents "> <p>A bare-bones SSH agent client supporting signing and key listing.</p> <p>The main use case is requesting the agent sign some data, after checking that the necessary key is already loaded.</p> <p>The main fleshed out methods are <a class="autorefs autorefs-internal" title=" list_keys" href="#derivepassphrase.ssh_agent.SSHAgentClient.list_keys"><code>list_keys</code></a> and <a class="autorefs autorefs-internal" title=" sign" href="#derivepassphrase.ssh_agent.SSHAgentClient.sign"><code>sign</code></a>, which implement the <a class="autorefs autorefs-internal" title=" REQUEST_IDENTITIES class-attribute instance-attribute " href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENTC.REQUEST_IDENTITIES"><code>REQUEST_IDENTITIES</code></a> and <a class="autorefs autorefs-internal" title=" SIGN_REQUEST class-attribute instance-attribute " href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENTC.SIGN_REQUEST"><code>SIGN_REQUEST</code></a> requests. If you <em>really</em> wanted to, there is enough infrastructure in place to issue other requests as defined in the protocol—it’s merely the wrapper functions and the protocol numbers table that are missing.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>socket</code> </td> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentSocket (derivepassphrase._types.SSHAgentSocket)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocket">SSHAgentSocket</a> | <a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a>] | None</code> </td> <td> <div class="doc-md-description"> <p>An optional socket-like object, already connected to the SSH agent, or a list of names of socket providers to try. If not given, we query platform-specific default addresses, if possible.</p> </div> </td> <td> <code>None</code> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" NoSuchProviderError (derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError)" href="#derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError">NoSuchProviderError</a></code> </td> <td> <div class="doc-md-description"> <p>The list of socket provider names contained an invalid entry.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#KeyError">KeyError</a></code> </td> <td> <div class="doc-md-description"> <p>An expected configuration entry or an expected environment variable is missing.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#NotImplementedError">NotImplementedError</a></code> </td> <td> <div class="doc-md-description"> <p>The named socket provider is not functional or not applicable to this <code>derivepassphrase</code> installation, e.g. because it is generally not implemented yet, or it requires a specific operating system, or specific system functionality that is not provided by all Python versions, or external packages that are unavailable on this installation.</p> <p>This error may be raised multiple times, as an exception group.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was an error setting up a socket connection to the agent.</p> </div> </td> </tr> </tbody> </table> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.SOCKET_PROVIDERS" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">SOCKET_PROVIDERS</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.SOCKET_PROVIDERS" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="n">SOCKET_PROVIDERS</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing.ClassVar" href="https://docs.python.org/3/library/typing.html#typing.ClassVar">ClassVar</a></span> <span class="o">=</span> <span class="p">(</span><span class="s1">'native'</span><span class="p">,)</span> </code></pre></div> <div class="doc doc-contents "> <p>The default list of SSH agent socket providers.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.__enter__" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">__enter__</span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.__enter__" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">__enter__</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Self" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Self">Self</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Close socket connection upon context manager completion.</p> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Self" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Self">Self</a></code> </td> <td> <div class="doc-md-description"> <p>Self.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.__exit__" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">__exit__</span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.__exit__" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">__exit__</span><span class="p">(</span> <span class="n">exc_type</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#type">type</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#BaseException">BaseException</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span> <span class="n">exc_val</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#BaseException">BaseException</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span> <span class="n">exc_tb</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="types.TracebackType" href="https://docs.python.org/3/library/types.html#types.TracebackType">TracebackType</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Close socket connection upon context manager completion.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>exc_type</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#type">type</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#BaseException">BaseException</a>] | None</code> </td> <td> <div class="doc-md-description"> <p>An optional exception type.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>exc_val</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#BaseException">BaseException</a> | None</code> </td> <td> <div class="doc-md-description"> <p>An optional exception value.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>exc_tb</code> </td> <td> <code><a class="autorefs autorefs-external" title="types.TracebackType" href="https://docs.python.org/3/library/types.html#types.TracebackType">TracebackType</a> | None</code> </td> <td> <div class="doc-md-description"> <p>An optional exception traceback.</p> </div> </td> <td> <em>required</em> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></code> </td> <td> <div class="doc-md-description"> <p>True if the exception was handled, false if it should propagate.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.uint32" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">uint32</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.uint32" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">uint32</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Format the number as a <code>uint32</code>, as per the agent protocol.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>num</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></code> </td> <td> <div class="doc-md-description"> <p>A number.</p> </div> </td> <td> <em>required</em> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></code> </td> <td> <div class="doc-md-description"> <p>The number in SSH agent wire protocol format, i.e. as a 32-bit big endian number.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OverflowError">OverflowError</a></code> </td> <td> <div class="doc-md-description"> <p>As per <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#int.to_bytes"><code>int.to_bytes</code></a>.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Examples:</span></p> <div class="highlight"><pre><span></span><code><span class="gp">>>> </span><span class="n">SSHAgentClient</span><span class="o">.</span><span class="n">uint32</span><span class="p">(</span><span class="mi">16777216</span><span class="p">)</span> <span class="go">b'\x01\x00\x00\x00'</span> </code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.string" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">string</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.string" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">string</span><span class="p">(</span><span class="n">payload</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Format the payload as an SSH string, as per the agent protocol.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>payload</code> </td> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></code> </td> <td> <div class="doc-md-description"> <p>A bytes-like object.</p> </div> </td> <td> <em>required</em> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></code> </td> <td> <div class="doc-md-description"> <p>The payload, framed in the SSH agent wire protocol format, as a bytes object.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Examples:</span></p> <div class="highlight"><pre><span></span><code><span class="gp">>>> </span><span class="n">SSHAgentClient</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="sa">b</span><span class="s2">"ssh-rsa"</span><span class="p">)</span> <span class="go">b'\x00\x00\x00\x07ssh-rsa'</span> </code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.unstring" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">unstring</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.unstring" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">unstring</span><span class="p">(</span><span class="n">bytestring</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Unpack an SSH string.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>bytestring</code> </td> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></code> </td> <td> <div class="doc-md-description"> <p>A framed bytes-like object.</p> </div> </td> <td> <em>required</em> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></code> </td> <td> <div class="doc-md-description"> <p>The payload, as a bytes object.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#ValueError">ValueError</a></code> </td> <td> <div class="doc-md-description"> <p>The byte string is not an SSH string.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Examples:</span></p> <div class="highlight"><pre><span></span><code><span class="gp">>>> </span><span class="n">SSHAgentClient</span><span class="o">.</span><span class="n">unstring</span><span class="p">(</span><span class="sa">b</span><span class="s2">"</span><span class="se">\x00\x00\x00\x07</span><span class="s2">ssh-rsa"</span><span class="p">)</span> <span class="go">b'ssh-rsa'</span> <span class="gp">>>> </span><span class="n">SSHAgentClient</span><span class="o">.</span><span class="n">unstring</span><span class="p">(</span><span class="n">SSHAgentClient</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="sa">b</span><span class="s2">"ssh-ed25519"</span><span class="p">))</span> <span class="go">b'ssh-ed25519'</span> </code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.unstring_prefix" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">unstring_prefix</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.unstring_prefix" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">unstring_prefix</span><span class="p">(</span><span class="n">bytestring</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#tuple">tuple</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span><span class="p">]</span> </code></pre></div> <div class="doc doc-contents "> <p>Unpack an SSH string at the beginning of the byte string.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>bytestring</code> </td> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></code> </td> <td> <div class="doc-md-description"> <p>A bytes-like object, beginning with a framed/SSH byte string.</p> </div> </td> <td> <em>required</em> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#tuple">tuple</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a>, <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a>]</code> </td> <td> <div class="doc-md-description"> <p>A 2-tuple <code>(a, b)</code>, where <code>a</code> is the unframed byte string/payload at the beginning of input byte string, and <code>b</code> is the remainder of the input byte string.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#ValueError">ValueError</a></code> </td> <td> <div class="doc-md-description"> <p>The byte string does not begin with an SSH string.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Examples:</span></p> <div class="highlight"><pre><span></span><code><span class="gp">>>> </span><span class="n">SSHAgentClient</span><span class="o">.</span><span class="n">unstring_prefix</span><span class="p">(</span> <span class="gp">... </span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x00\x00\x00\x07</span><span class="s2">ssh-rsa____trailing data"</span> <span class="gp">... </span><span class="p">)</span> <span class="go">(b'ssh-rsa', b'____trailing data')</span> <span class="gp">>>> </span><span class="n">SSHAgentClient</span><span class="o">.</span><span class="n">unstring_prefix</span><span class="p">(</span> <span class="gp">... </span> <span class="n">SSHAgentClient</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="sa">b</span><span class="s2">"ssh-ed25519"</span><span class="p">)</span> <span class="gp">... </span><span class="p">)</span> <span class="go">(b'ssh-ed25519', b'')</span> </code></pre></div> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.ensure_agent_subcontext" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">ensure_agent_subcontext</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.ensure_agent_subcontext" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">ensure_agent_subcontext</span><span class="p">(</span> <span class="n">conn</span><span class="p">:</span> <span class="p">(</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentClient (derivepassphrase.ssh_agent.SSHAgentClient)" href="#derivepassphrase.ssh_agent.SSHAgentClient">SSHAgentClient</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocket (derivepassphrase._types.SSHAgentSocket)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocket">SSHAgentSocket</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="p">)</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Iterator" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Iterator">Iterator</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentClient (derivepassphrase.ssh_agent.SSHAgentClient)" href="#derivepassphrase.ssh_agent.SSHAgentClient">SSHAgentClient</a></span><span class="p">]</span> </code></pre></div> <div class="doc doc-contents "> <p>Return an SSH agent client subcontext.</p> <p>If necessary, construct an SSH agent client first using the connection hint.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>conn</code> </td> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentClient (derivepassphrase.ssh_agent.SSHAgentClient)" href="#derivepassphrase.ssh_agent.SSHAgentClient">SSHAgentClient</a> | <a class="autorefs autorefs-internal" title=" SSHAgentSocket (derivepassphrase._types.SSHAgentSocket)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocket">SSHAgentSocket</a> | <a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a>] | None</code> </td> <td> <div class="doc-md-description"> <p>If an existing SSH agent client, then enter a context within this client’s scope. After exiting the context, the client persists, including its socket.</p> <p>If a socket, then construct a client using this socket, then enter a context within this client’s scope. After exiting the context, the client is destroyed and the socket is closed.</p> <p>If <code>None</code>, or a list of names of socket providers, then construct a client according to those connection hints (“auto-discovery”), and enter a context within this client’s scope. After exiting the context, both the client and its socket are destroyed.</p> </div> </td> <td> <code>None</code> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Yields:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentClient (derivepassphrase.ssh_agent.SSHAgentClient)" href="#derivepassphrase.ssh_agent.SSHAgentClient">SSHAgentClient</a></code> </td> <td> <div class="doc-md-description"> <p>When entering this context, return the SSH agent client.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" NoSuchProviderError (derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError)" href="#derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError">NoSuchProviderError</a></code> </td> <td> <div class="doc-md-description"> <p>As per <a class="autorefs autorefs-internal" title=" SSHAgentClient" href="#derivepassphrase.ssh_agent.SSHAgentClient"><code>__init__</code></a>.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#KeyError">KeyError</a></code> </td> <td> <div class="doc-md-description"> <p>As per <a class="autorefs autorefs-internal" title=" SSHAgentClient" href="#derivepassphrase.ssh_agent.SSHAgentClient"><code>__init__</code></a>, including the multiple raise as an exception group.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#NotImplementedError">NotImplementedError</a></code> </td> <td> <div class="doc-md-description"> <p>As per <a class="autorefs autorefs-internal" title=" SSHAgentClient" href="#derivepassphrase.ssh_agent.SSHAgentClient"><code>__init__</code></a>.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>As per <a class="autorefs autorefs-internal" title=" SSHAgentClient" href="#derivepassphrase.ssh_agent.SSHAgentClient"><code>__init__</code></a>.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.has_deterministic_dsa_signatures" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">has_deterministic_dsa_signatures</span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.has_deterministic_dsa_signatures" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">has_deterministic_dsa_signatures</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Check whether the agent returns deterministic DSA signatures.</p> <p>This includes ECDSA signatures.</p> <p>Generally, this means that the SSH agent implements <a href="https://www.rfc-editor.org/rfc/rfc6979">RFC 6979</a> or a similar system.</p> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></code> </td> <td> <div class="doc-md-description"> <p>True if a known agent was detected where signatures are deterministic for all DSA key types, false otherwise.</p> </div> </td> </tr> </tbody> </table> <details class="note" open> <summary>Known agents with deterministic signatures</summary> <table> <thead> <tr> <th style="text-align: left;">agent</th> <th style="text-align: left;">detected via</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">Pageant (PuTTY)</td> <td style="text-align: left;"><code>list-extended@putty.projects.tartarus.org</code> extension request</td> </tr> </tbody> </table> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.request" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">request</span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.request" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-overloads"> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">request</span><span class="p">(</span> <span class="n">code</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSH_AGENTC (derivepassphrase._types.SSH_AGENTC)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENTC">SSH_AGENTC</a></span><span class="p">,</span> <span class="n">payload</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">,</span> <span class="o">/</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">response_code</span><span class="p">:</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#tuple">tuple</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span><span class="p">]</span> </code></pre></div><div class="doc-signature highlight"><pre><span></span><code><span class="nf">request</span><span class="p">(</span> <span class="n">code</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSH_AGENTC (derivepassphrase._types.SSH_AGENTC)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENTC">SSH_AGENTC</a></span><span class="p">,</span> <span class="n">payload</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">,</span> <span class="o">/</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">response_code</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Iterable" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Iterable">Iterable</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title=" SSH_AGENT (derivepassphrase._types.SSH_AGENT)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENT">SSH_AGENT</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">]</span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#frozenset">frozenset</a></span><span class="p">(</span> <span class="p">{</span><span class="n"><a class="autorefs autorefs-internal" title=" SUCCESS class-attribute instance-attribute (derivepassphrase._types.SSH_AGENT.SUCCESS)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENT.SUCCESS">SUCCESS</a></span><span class="p">}</span> <span class="p">),</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> </code></pre></div><div class="doc-signature highlight"><pre><span></span><code><span class="nf">request</span><span class="p">(</span> <span class="n">code</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSH_AGENTC (derivepassphrase._types.SSH_AGENTC)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENTC">SSH_AGENTC</a></span><span class="p">,</span> <span class="n">payload</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">,</span> <span class="o">/</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">response_code</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSH_AGENT (derivepassphrase._types.SSH_AGENT)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENT">SSH_AGENT</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">=</span> <span class="n"><a class="autorefs autorefs-internal" title=" SUCCESS class-attribute instance-attribute (derivepassphrase._types.SSH_AGENT.SUCCESS)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENT.SUCCESS">SUCCESS</a></span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> </code></pre></div> </div> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">request</span><span class="p">(</span> <span class="n">code</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSH_AGENTC (derivepassphrase._types.SSH_AGENTC)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENTC">SSH_AGENTC</a></span><span class="p">,</span> <span class="n">payload</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">,</span> <span class="o">/</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">response_code</span><span class="p">:</span> <span class="p">(</span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Iterable" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Iterable">Iterable</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title=" SSH_AGENT (derivepassphrase._types.SSH_AGENT)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENT">SSH_AGENT</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">]</span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSH_AGENT (derivepassphrase._types.SSH_AGENT)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENT">SSH_AGENT</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">|</span> <span class="kc">None</span> <span class="p">)</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#tuple">tuple</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span><span class="p">]</span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Issue a generic request to the SSH agent.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>code</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a> | <a class="autorefs autorefs-internal" title=" SSH_AGENTC (derivepassphrase._types.SSH_AGENTC)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENTC">SSH_AGENTC</a></code> </td> <td> <div class="doc-md-description"> <p>The request code. See the SSH agent protocol for protocol numbers to use here (and which protocol numbers to expect in a response).</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>payload</code> </td> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></code> </td> <td> <div class="doc-md-description"> <p>A bytes-like object containing the payload, or “contents”, of the request. Request-specific.</p> <p>It is our responsibility to add any necessary wire framing around the request code and the payload, not the caller’s.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>response_code</code> </td> <td> <code><a class="autorefs autorefs-external" title="collections.abc.Iterable" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Iterable">Iterable</a>[<a class="autorefs autorefs-internal" title=" SSH_AGENT (derivepassphrase._types.SSH_AGENT)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENT">SSH_AGENT</a> | <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a>] | <a class="autorefs autorefs-internal" title=" SSH_AGENT (derivepassphrase._types.SSH_AGENT)" href="../derivepassphrase._types/#derivepassphrase._types.SSH_AGENT">SSH_AGENT</a> | <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a> | None</code> </td> <td> <div class="doc-md-description"> <p>An optional response code, or a set of response codes, that we expect. If given, and the actual response code does not match, raise an error.</p> </div> </td> <td> <code>None</code> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#tuple">tuple</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a>, <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a>] | <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></code> </td> <td> <div class="doc-md-description"> <p>A 2-tuple consisting of the response code and the payload, with all wire framing removed.</p> <p>If a response code was passed, then only return the payload.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#EOFError">EOFError</a></code> </td> <td> <div class="doc-md-description"> <p>The response from the SSH agent is truncated or missing.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was a communication error with the SSH agent.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentFailedError (derivepassphrase.ssh_agent.SSHAgentFailedError)" href="#derivepassphrase.ssh_agent.SSHAgentFailedError">SSHAgentFailedError</a></code> </td> <td> <div class="doc-md-description"> <p>We expected specific response codes, but did not receive any of them.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.list_keys" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">list_keys</span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.list_keys" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">list_keys</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title=" SSHKeyCommentPair (derivepassphrase._types.SSHKeyCommentPair)" href="../derivepassphrase._types/#derivepassphrase._types.SSHKeyCommentPair">SSHKeyCommentPair</a></span><span class="p">]</span> </code></pre></div> <div class="doc doc-contents "> <p>Request a list of keys known to the SSH agent.</p> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" title="collections.abc.Sequence" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence">Sequence</a>[<a class="autorefs autorefs-internal" title=" SSHKeyCommentPair (derivepassphrase._types.SSHKeyCommentPair)" href="../derivepassphrase._types/#derivepassphrase._types.SSHKeyCommentPair">SSHKeyCommentPair</a>]</code> </td> <td> <div class="doc-md-description"> <p>A read-only sequence of key/comment pairs.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#EOFError">EOFError</a></code> </td> <td> <div class="doc-md-description"> <p>The response from the SSH agent is truncated or missing.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was a communication error with the SSH agent.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" TrailingDataError (derivepassphrase.ssh_agent.TrailingDataError)" href="#derivepassphrase.ssh_agent.TrailingDataError">TrailingDataError</a></code> </td> <td> <div class="doc-md-description"> <p>The response from the SSH agent is too long.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentFailedError (derivepassphrase.ssh_agent.SSHAgentFailedError)" href="#derivepassphrase.ssh_agent.SSHAgentFailedError">SSHAgentFailedError</a></code> </td> <td> <div class="doc-md-description"> <p>The agent failed to complete the request.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.sign" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">sign</span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.sign" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">sign</span><span class="p">(</span> <span class="n">key</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">,</span> <span class="n">payload</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">flags</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">check_if_key_loaded</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">=</span> <span class="kc">False</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Request the SSH agent sign the payload with the key.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>key</code> </td> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></code> </td> <td> <div class="doc-md-description"> <p>The public SSH key to sign the payload with, in the same format as returned by, e.g., the <a class="autorefs autorefs-internal" title=" list_keys" href="#derivepassphrase.ssh_agent.SSHAgentClient.list_keys"><code>list_keys</code></a> method. The corresponding private key must have previously been loaded into the agent to successfully issue a signature.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>payload</code> </td> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Buffer" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Buffer">Buffer</a></code> </td> <td> <div class="doc-md-description"> <p>A byte string of data to sign.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>flags</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></code> </td> <td> <div class="doc-md-description"> <p>Optional flags for the signing request. Currently passed on as-is to the agent. In real-world usage, this could be used, e.g., to request more modern hash algorithms when signing with RSA keys. (No such real-world usage is currently implemented.)</p> </div> </td> <td> <code>0</code> </td> </tr> <tr class="doc-section-item"> <td> <code>check_if_key_loaded</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></code> </td> <td> <div class="doc-md-description"> <p>If true, check beforehand (via <a class="autorefs autorefs-internal" title=" list_keys" href="#derivepassphrase.ssh_agent.SSHAgentClient.list_keys"><code>list_keys</code></a>) if the corresponding key has been loaded into the agent.</p> </div> </td> <td> <code>False</code> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></code> </td> <td> <div class="doc-md-description"> <p>The binary signature of the payload under the given key.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#EOFError">EOFError</a></code> </td> <td> <div class="doc-md-description"> <p>The response from the SSH agent is truncated or missing.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was a communication error with the SSH agent.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" TrailingDataError (derivepassphrase.ssh_agent.TrailingDataError)" href="#derivepassphrase.ssh_agent.TrailingDataError">TrailingDataError</a></code> </td> <td> <div class="doc-md-description"> <p>The response from the SSH agent is too long.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentFailedError (derivepassphrase.ssh_agent.SSHAgentFailedError)" href="#derivepassphrase.ssh_agent.SSHAgentFailedError">SSHAgentFailedError</a></code> </td> <td> <div class="doc-md-description"> <p>The agent failed to complete the request.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#KeyError">KeyError</a></code> </td> <td> <div class="doc-md-description"> <p><code>check_if_key_loaded</code> is true, and the <code>key</code> was not loaded into the agent.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h3 id="derivepassphrase.ssh_agent.SSHAgentClient.query_extensions" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">query_extensions</span> <a href="#derivepassphrase.ssh_agent.SSHAgentClient.query_extensions" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">query_extensions</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Set" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Set">Set</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a></span><span class="p">]</span> </code></pre></div> <div class="doc doc-contents "> <p>Request a listing of extensions supported by the SSH agent.</p> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" title="collections.abc.Set" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Set">Set</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#bytes">bytes</a>]</code> </td> <td> <div class="doc-md-description"> <p>A read-only set of extension names the SSH agent says it supports.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#EOFError">EOFError</a></code> </td> <td> <div class="doc-md-description"> <p>The response from the SSH agent is truncated or missing.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was a communication error with the SSH agent.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#RuntimeError">RuntimeError</a></code> </td> <td> <div class="doc-md-description"> <p>The response from the SSH agent is malformed.</p> </div> </td> </tr> </tbody> </table> <details class="note" open> <summary>Note</summary> <p>The set of supported extensions is queried via the <code>query</code> extension request. If the agent does not support the query extension request, or extension requests in general, then an empty set is returned. This does not however imply that the agent doesn’t support <em>any</em> extension request… merely that it doesn’t support extension autodiscovery.</p> </details> </div> </div> </div> </div> </div> </div> </div> </div> <div class="doc doc-object doc-module"> <h2 id="derivepassphrase.ssh_agent.socketprovider" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-module"></code> <span class="doc doc-object-name doc-module-name">derivepassphrase.ssh_agent.socketprovider</span> <a href="#derivepassphrase.ssh_agent.socketprovider" class="headerlink" title="Permanent link">¶</a></h2> <div class="doc doc-contents first"> <p>Machinery for providing sockets connected to SSH agents.</p> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id="derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">SSHAgentSocketProviderT</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="n">SSHAgentSocketProviderT</span> <span class="o">=</span> <span class="n"><span title="typing_extensions.TypeVar">TypeVar</span></span><span class="p">(</span> <span class="s2">"SSHAgentSocketProviderT"</span><span class="p">,</span> <span class="n"><span title="typing_extensions.TypeVar(bound)">bound</span></span><span class="o">=</span><span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a></span> <span class="p">)</span> </code></pre></div> <div class="doc doc-contents "> <p>A parametrized SSH agent socket provider.</p> </div> </div> <div class="doc doc-object doc-class"> <h3 id="derivepassphrase.ssh_agent.socketprovider.OVERLAPPED" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">OVERLAPPED</span> <a href="#derivepassphrase.ssh_agent.socketprovider.OVERLAPPED" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc doc-contents "> <p class="doc doc-class-bases"> Bases: <code><a class="autorefs autorefs-external" title="ctypes.Structure" href="https://docs.python.org/3/library/ctypes.html#ctypes.Structure">Structure</a></code></p> <p>The data structure for overlapped (async) I/O on The Annoying OS.</p> <div class="doc doc-children"> </div> </div> </div> <div class="doc doc-object doc-class"> <h3 id="derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">NoSuchProviderError</span> <a href="#derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc doc-contents "> <p class="doc doc-class-bases"> Bases: <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#KeyError">KeyError</a></code></p> <p>No such SSH agent socket provider is known.</p> </div> </div> <div class="doc doc-object doc-class"> <h3 id="derivepassphrase.ssh_agent.socketprovider.UnixDomainSocketsNotAvailableError" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">UnixDomainSocketsNotAvailableError</span> <a href="#derivepassphrase.ssh_agent.socketprovider.UnixDomainSocketsNotAvailableError" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc doc-contents "> <p class="doc doc-class-bases"> Bases: <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#NotImplementedError">NotImplementedError</a></code></p> <p>This Python installation does not support UNIX domain sockets.</p> <p>On this installation, the standard library symbol <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/socket.html#socket.AF_UNIX"><code>socket.AF_UNIX</code></a> is not available, necessary to create UNIX domain sockets.</p> </div> </div> <div class="doc doc-object doc-class"> <h3 id="derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">WindowsNamedPipesNotAvailableError</span> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc doc-contents "> <p class="doc doc-class-bases"> Bases: <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#NotImplementedError">NotImplementedError</a></code></p> <p>This Python installation does not support Windows named pipes.</p> <p>On this installation, the standard library symbol <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/ctypes.html#ctypes.WinDLL"><code>ctypes.WinDLL</code></a> is not available, necessary to interface with the Annoying Operating System’s standard library to create Windows named pipes.</p> </div> </div> <div class="doc doc-object doc-class"> <h3 id="derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">WindowsNamedPipeHandle</span> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">WindowsNamedPipeHandle</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">)</span> </code></pre></div> <div class="doc doc-contents "> <p>A Windows named pipe handle.</p> <p>This handle implements the <a class="autorefs autorefs-internal" title=" SSHAgentSocket" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocket"><code>SSHAgentSocket</code></a> interface. It is only constructable if the Python installation can successfully call into the Annoying OS <code>kernel32.dll</code> library via <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/ctypes.html#module-ctypes"><code>ctypes</code></a>.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>name</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code> </td> <td> <div class="doc-md-description"> <p>The named pipe’s name.</p> </div> </td> <td> <em>required</em> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>The system failed to open the named pipe.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#ValueError">ValueError</a></code> </td> <td> <div class="doc-md-description"> <p>The named pipe’s name does not designate a named pipe.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" WindowsNamedPipesNotAvailableError (derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError)" href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError">WindowsNamedPipesNotAvailableError</a></code> </td> <td> <div class="doc-md-description"> <p>This Python version does not support Windows named pipes.</p> </div> </td> </tr> </tbody> </table> <div class="doc doc-children"> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.named_pipe_name" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">named_pipe_name</span> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.named_pipe_name" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">named_pipe_name</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Return the named pipe name this socket is connected to.</p> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.for_openssh" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">for_openssh</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.for_openssh" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">for_openssh</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Self" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Self">Self</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Construct a named pipe for use with OpenSSH on The Annoying OS.</p> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Self" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Self">Self</a></code> </td> <td> <div class="doc-md-description"> <p>A new named pipe handle, using OpenSSH’s pipe name.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.for_pageant" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">for_pageant</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.for_pageant" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">for_pageant</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="typing_extensions.Self" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Self">Self</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Construct a named pipe for use with Pageant.</p> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" title="typing_extensions.Self" href="https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Self">Self</a></code> </td> <td> <div class="doc-md-description"> <p>A new named pipe handle, using Pageant’s pipe name.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.pageant_named_pipe_name" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">pageant_named_pipe_name</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle.pageant_named_pipe_name" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">pageant_named_pipe_name</span><span class="p">(</span> <span class="o">*</span><span class="p">,</span> <span class="n">require_cryptprotectmemory</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></span> <span class="o">=</span> <span class="kc">False</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Return the pipe name that Pageant on The Annoying OS would use.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>require_cryptprotectmemory</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#bool">bool</a></code> </td> <td> <div class="doc-md-description"> <p>Pageant normally attempts to use the <code>CryptProtectMemory</code> system function from the <code>crypt32.dll</code> library on The Annoying OS, ignoring any errors. This in turn influences the resulting named pipe’s filename.</p> <p>If true, and if we fail to call <code>CryptProtectMemory</code>, we abort; otherwise we ignore any errors from calling or failing to call <code>CryptProtectMemory</code>.</p> </div> </td> <td> <code>False</code> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#NotImplementedError">NotImplementedError</a></code> </td> <td> <div class="doc-md-description"> <p><code>require_cryptprotectmemory</code> was <code>True</code>, but this Python version cannot call <code>CryptProtectMemory</code> due to lack of system support.</p> </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h3 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">SocketProvider</span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider" class="headerlink" title="Permanent link">¶</a></h3> <div class="doc doc-contents "> <p>Static functionality for providing sockets.</p> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.registry" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">registry</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.registry" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="n">registry</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#dict">dict</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> <span class="p">{}</span> <span class="p">)</span> </code></pre></div> <div class="doc doc-contents "> <p>A dictionary of callables that provide SSH agent sockets.</p> <p>Each entry in the dictionary points either to a callable, a string, or <code>None</code>: if a callable, then that callable returns a socket; if a string, then this entry is an alias for that other entry; if <code>None</code>, then the entry name is merely registered, but no implementation is available.</p> <p>If a callable is not applicable to this platform, Python installation or <code>derivepassphrase</code> installation, then it MUST raise <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#NotImplementedError"><code>NotImplementedError</code></a>. Conversely, if the callable returns a value, or raises any other kind of exception, then the caller MAY assume that this platform, Python installation and <code>derivepassphrase</code> installation are sufficient for the callable to be able to return a working socket on this platform. (The latter may still be dependent on further, external circumstances, such as required configuration settings, or environment variables, or sufficient system resources, etc.)</p> <p>(Interpretation of “MUST” and “MAY” as per IETF Best Current Practice #14; see <a href="https://www.rfc-editor.org/info/rfc2119">RFC 2119</a> and <a href="https://www.rfc-editor.org/info/rfc8174">RFC 8174</a>.)</p> </div> </div> <div class="doc doc-object doc-attribute"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.ENTRY_POINT_GROUP_NAME" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">ENTRY_POINT_GROUP_NAME</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-class-attribute"><code>class-attribute</code></small> <small class="doc doc-label doc-label-instance-attribute"><code>instance-attribute</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.ENTRY_POINT_GROUP_NAME" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="n">ENTRY_POINT_GROUP_NAME</span> <span class="o">=</span> <span class="p">(</span> <span class="s2">"derivepassphrase.ssh_agent_socket_providers"</span> <span class="p">)</span> </code></pre></div> <div class="doc doc-contents "> <p>The group name under which <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/importlib.metadata.html#importlib.metadata.entry_points">entry points</a> for the SSH agent socket provider registry should be recorded. Each target of such an entry point should be a <a class="autorefs autorefs-internal" title=" SSHAgentSocketProviderEntry" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProviderEntry"><code>_types.SSHAgentSocketProviderEntry</code></a> object.</p> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.unix_domain_ssh_auth_sock" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">unix_domain_ssh_auth_sock</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.unix_domain_ssh_auth_sock" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">unix_domain_ssh_auth_sock</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></span> <span class="o">=</span> <span class="mi">125</span><span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="socket.socket" href="https://docs.python.org/3/library/socket.html#socket.socket">socket</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Return a UNIX domain socket connected to <code>SSH_AUTH_SOCK</code>.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>timeout</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/functions.html#int">int</a></code> </td> <td> <div class="doc-md-description"> <p>A connection timeout for the SSH agent. Only used for “true” sockets, and only if the socket is not yet connected. The default value gives ample time for agent connections forwarded via SSH on high-latency networks (e.g. Tor).</p> </div> </td> <td> <code>125</code> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" title="socket.socket" href="https://docs.python.org/3/library/socket.html#socket.socket">socket</a></code> </td> <td> <div class="doc-md-description"> <p>A connected UNIX domain socket.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#KeyError">KeyError</a></code> </td> <td> <div class="doc-md-description"> <p>The <code>SSH_AUTH_SOCK</code> environment variable was not found.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" UnixDomainSocketsNotAvailableError (derivepassphrase.ssh_agent.socketprovider.UnixDomainSocketsNotAvailableError)" href="#derivepassphrase.ssh_agent.socketprovider.UnixDomainSocketsNotAvailableError">UnixDomainSocketsNotAvailableError</a></code> </td> <td> <div class="doc-md-description"> <p>This Python version does not support UNIX domain sockets, necessary to automatically connect to a running SSH agent via the <code>SSH_AUTH_SOCK</code> environment variable.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was an error setting up a socket connection to the agent.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_for_pageant" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">windows_named_pipe_for_pageant</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_for_pageant" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">windows_named_pipe_for_pageant</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title=" WindowsNamedPipeHandle (derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle)" href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle">WindowsNamedPipeHandle</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Return a socket wrapper connected to Pageant on The Annoying OS.</p> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was an error setting up a connection to Pageant.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" WindowsNamedPipesNotAvailableError (derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError)" href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError">WindowsNamedPipesNotAvailableError</a></code> </td> <td> <div class="doc-md-description"> <p>This Python version does not support Windows named pipes.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_for_openssh" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">windows_named_pipe_for_openssh</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_for_openssh" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">windows_named_pipe_for_openssh</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title=" WindowsNamedPipeHandle (derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle)" href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle">WindowsNamedPipeHandle</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Return a socket wrapper connected to the OpenSSH agent on The Annoying OS.</p> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was an error setting up a connection to the OpenSSH agent.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" WindowsNamedPipesNotAvailableError (derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError)" href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError">WindowsNamedPipesNotAvailableError</a></code> </td> <td> <div class="doc-md-description"> <p>This Python version does not support Windows named pipes.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_ssh_auth_sock" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">windows_named_pipe_ssh_auth_sock</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.windows_named_pipe_ssh_auth_sock" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">windows_named_pipe_ssh_auth_sock</span><span class="p">()</span> <span class="o">-></span> <span class="p">(</span> <span class="n"><a class="autorefs autorefs-internal" title=" WindowsNamedPipeHandle (derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle)" href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipeHandle">WindowsNamedPipeHandle</a></span> <span class="p">)</span> </code></pre></div> <div class="doc doc-contents "> <p>Return a socket wrapper connected to the agent in <code>SSH_AUTH_SOCK</code>.</p> <p>The <code>SSH_AUTH_SOCK</code> environment variable is assumed to contain a valid named pipe name, i.e., a path starting with <code>\\.\pipe\</code> or <code>//./pipe/</code>.</p> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#KeyError">KeyError</a></code> </td> <td> <div class="doc-md-description"> <p>The <code>SSH_AUTH_SOCK</code> environment variable was not found.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#ValueError">ValueError</a></code> </td> <td> <div class="doc-md-description"> <p>The path in <code>SSH_AUTH_SOCK</code> clearly does not name a valid named pipe name.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#OSError">OSError</a></code> </td> <td> <div class="doc-md-description"> <p>There was an error setting up a connection to the OpenSSH agent.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" WindowsNamedPipesNotAvailableError (derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError)" href="#derivepassphrase.ssh_agent.socketprovider.WindowsNamedPipesNotAvailableError">WindowsNamedPipesNotAvailableError</a></code> </td> <td> <div class="doc-md-description"> <p>This Python version does not support Windows named pipes.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.register" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">register</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.register" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">register</span><span class="p">(</span> <span class="n">name</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="o">*</span><span class="n">aliases</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Callable" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable">Callable</a></span><span class="p">[</span> <span class="p">[</span><span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocketProviderT module-attribute (derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT)" href="#derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT">SSHAgentSocketProviderT</a></span><span class="p">],</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocketProviderT module-attribute (derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT)" href="#derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT">SSHAgentSocketProviderT</a></span> <span class="p">]</span> </code></pre></div> <div class="doc doc-contents "> <p>Register a callable as an SSH agent socket provider (decorator).</p> <p>Attempting to re-register an existing alias, or a name with an implementation, with a different implementation is an error.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>name</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code> </td> <td> <div class="doc-md-description"> <p>The principal name under which to register the passed callable.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>aliases</code> </td> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></code> </td> <td> <div class="doc-md-description"> <p>Alternate names to register as aliases for the principal name.</p> </div> </td> <td> <code>()</code> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" title="collections.abc.Callable" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Callable">Callable</a>[[<a class="autorefs autorefs-internal" title=" SSHAgentSocketProviderT module-attribute (derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT)" href="#derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT">SSHAgentSocketProviderT</a>], <a class="autorefs autorefs-internal" title=" SSHAgentSocketProviderT module-attribute (derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT)" href="#derivepassphrase.ssh_agent.socketprovider.SSHAgentSocketProviderT">SSHAgentSocketProviderT</a>]</code> </td> <td> <div class="doc-md-description"> <p>A decorator implementing the above.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.lookup" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">lookup</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.lookup" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">lookup</span><span class="p">(</span> <span class="n">provider</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a></span> <span class="o">|</span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Look up a socket provider entry.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>provider</code> </td> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a> | <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a> | None</code> </td> <td> <div class="doc-md-description"> <p>The provider to look up.</p> </div> </td> <td> <em>required</em> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a> | None</code> </td> <td> <div class="doc-md-description"> <p>The callable indicated by this provider, if it is implemented, or <code>None</code>, if it is merely registered.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" NoSuchProviderError (derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError)" href="#derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError">NoSuchProviderError</a></code> </td> <td> <div class="doc-md-description"> <p>The provider is not registered.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.resolve" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">resolve</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.resolve" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">resolve</span><span class="p">(</span> <span class="n">provider</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a></span> <span class="o">|</span> <span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a></span> </code></pre></div> <div class="doc doc-contents "> <p>Resolve a socket provider to a proper callable.</p> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>provider</code> </td> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a> | <a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a> | None</code> </td> <td> <div class="doc-md-description"> <p>The provider to resolve.</p> </div> </td> <td> <em>required</em> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" SSHAgentSocketProvider module-attribute (derivepassphrase._types.SSHAgentSocketProvider)" href="../derivepassphrase._types/#derivepassphrase._types.SSHAgentSocketProvider">SSHAgentSocketProvider</a></code> </td> <td> <div class="doc-md-description"> <p>The callable indicated by this provider.</p> </div> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Raises:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-internal" title=" NoSuchProviderError (derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError)" href="#derivepassphrase.ssh_agent.socketprovider.NoSuchProviderError">NoSuchProviderError</a></code> </td> <td> <div class="doc-md-description"> <p>The provider is not registered.</p> </div> </td> </tr> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/exceptions.html#NotImplementedError">NotImplementedError</a></code> </td> <td> <div class="doc-md-description"> <p>The provider is registered, but is not functional or not applicable to this <code>derivepassphrase</code> installation.</p> </div> </td> </tr> </tbody> </table> </div> </div> <div class="doc doc-object doc-function"> <h4 id="derivepassphrase.ssh_agent.socketprovider.SocketProvider.grouped" class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">grouped</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small> </span> <a href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.grouped" class="headerlink" title="Permanent link">¶</a></h4> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">grouped</span><span class="p">()</span> <span class="o">-></span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Mapping" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping">Mapping</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">,</span> <span class="n"><a class="autorefs autorefs-external" title="collections.abc.Set" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Set">Set</a></span><span class="p">[</span><span class="n"><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a></span><span class="p">]]</span> </code></pre></div> <div class="doc doc-contents "> <p>Calculate a mapping of canonical socket provider entries.</p> <p>Specifically, determine the non-alias entries in the socket provider registry, and map each such non-alias entry to its set of aliases.</p> <p><span class="doc-section-title">Returns:</span></p> <table> <thead> <tr> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code><a class="autorefs autorefs-external" title="collections.abc.Mapping" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Mapping">Mapping</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a>, <a class="autorefs autorefs-external" title="collections.abc.Set" href="https://docs.python.org/3/library/collections.abc.html#collections.abc.Set">Set</a>[<a class="autorefs autorefs-external" href="https://docs.python.org/3/library/stdtypes.html#str">str</a>]]</code> </td> <td> <div class="doc-md-description"> <p>A mapping of non-alias entry names to sets of alias entry names.</p> </div> </td> </tr> </tbody> </table> <details class="warning" open> <summary>Warning</summary> <p>The results are undefined if the registry has been modified by any means other than the <a class="autorefs autorefs-internal" title=" register classmethod " href="#derivepassphrase.ssh_agent.socketprovider.SocketProvider.register"><code>register</code></a> decorator.</p> </details> </div> </div> </div> </div> </div> </div> </div> </div> </article> </div> </div> </main> <footer class="md-footer"> <nav class="md-footer__inner md-grid" aria-label="Footer" > <a href="../derivepassphrase.sequin/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Submodule sequin"> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </div> <div class="md-footer__title"> <span class="md-footer__direction"> Previous </span> <div class="md-ellipsis"> Submodule sequin </div> </div> </a> <a href="../derivepassphrase._types/" class="md-footer__link md-footer__link--next" aria-label="Next: Submodule _types"> <div class="md-footer__title"> <span class="md-footer__direction"> Next </span> <div class="md-ellipsis"> Submodule _types </div> </div> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> <div class="md-copyright__highlight"> Copyright © 2026 Marco Ricci (the-13th-letter) </div> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> and <a href="https://mkdocstrings.github.io/python/" target="_blank" rel="noopener"> mkdocstrings-python </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> </body> </html>