https://git.schokokeks.org/derivepassphrase.git/tree/30c0d6f46620b6a96e901c8a886db61b2871e137Recent commits to derivepassphrase.git (30c0d6f46620b6a96e901c8a886db61b2871e137)2026-06-14T10:05:10+02:00tag:gitlist.org,2012:commit/30c0d6f46620b6a96e901c8a886db61b2871e137Ensure the SSH agent unhappy path/misbehavior tests always run2026-06-14T10:05:10+02:00Marco Riccisoftware@the13thletter.info
<pre>The tests for various unhappy paths or misbehavior of the SSH agent now
run against the stubbed SSH agent, instead of requiring an external SSH
agent (and failing or skipping if that external agent is unavailable).
The tests need to intercept all I/O from the agent anyway, so there is
little point in requiring to connect to an external agent but then not
doing any I/O with the agent. It just introduces another unrelated and
unnecessary failure mode (e.g., SSH_AUTH_SOCK not set up).
We put the fixture for forcing use of the stubbed SSH agent at the top
level of the `ssh_agent` module tests, because that currently seems to
be the only place where we need to force use of an internal agent over
an external one.
</pre>
tag:gitlist.org,2012:commit/c61d17b815f52bf49ce840c00fbaa75db8e11b96Fix the test setup (SSH agent "query" double-response behavior)2026-06-14T07:54:14+02:00Marco Riccisoftware@the13thletter.info
<pre>The test mocks communication aspects of an SSH agent session, and thus
needs a running SSH agent. Also, the xfail markers for some of the
parametrization values were overly broad, and were masking failures in
the test setup because of a missing running SSH agent.
</pre>
tag:gitlist.org,2012:commit/6da7a92c3285a1f757cbe7530fe17caf680ad468Harmonize coverage exclusion markers (and fix one slipup)2026-06-13T21:28:11+02:00Marco Riccisoftware@the13thletter.info
<pre>Introduce a second coverage exclusion marker in the form of an
overridable session-level fixture `skip_if_no_ctypes_windll_support`,
similar to the existing `skip_if_no_af_unix_support` fixture.
Also update the description of both fixtures to match their current
usage.
Also also fix a coverage slipup in a failsafe path of the
`AgentProtocolResponseQueue` testing machinery.
</pre>
tag:gitlist.org,2012:commit/3430fde355127c4e0951bfaa6f5df63bf82b5f32Reorganize and rename SSH agent mock objects2026-06-13T19:22:20+02:00Marco Riccisoftware@the13thletter.info
<pre>Rename the `Request` and `Response` classes to `AgentProtocolRequest`
and `AgentProtocolResponse`, respectively, and move them into the
`tests.data` package. Rename the `_RequestResponseIOQueue` class to
`AgentProtocolResponseQueue`, and move it into the `tests.machinery`
package.
Along the way, fix the self-reference of `tests.data` and
`tests.machinery` contents within the `tests.machinery` package.
</pre>
tag:gitlist.org,2012:commit/2323b5742485ed8ab30c57989a399c491b7484ceTest our handling of the SSH agent "query" double-response behavior2026-06-13T18:52:55+02:00Marco Riccisoftware@the13thletter.info
<pre>Add tests to verify that we gracefully react to an SSH agent replying
twice to a "query" extension request.
</pre>
tag:gitlist.org,2012:commit/0166a2edbd9c81df63e2d9fd5c057212d4ce6b45Allow testing for mismatched SSH agent communication2026-06-13T18:52:55+02:00Marco Riccisoftware@the13thletter.info
<pre>Generalize the mocked SSH agent machinery for simulating error responses
slightly, so that instead of passing one-to-one request/response pairs,
we pass one-to-many request/list-of-responses pairs. Responses are kept
on a queue, and the machinery asserts that the queue is empty at the end
of the interaction.
This new flexibility is not yet required anywhere, but will be used in
the next commit.
</pre>
tag:gitlist.org,2012:commit/20bcd8f960b0655700905e9f20f807de15809188Work around double-response for "query" extension from ssh-agent (OpenSSH 10.3)2026-06-13T18:52:55+02:00Marco Riccisoftware@the13thletter.info
<pre>Detect and work around `ssh-agent` (OpenSSH 10.3 only) responding twice
when answering a "query" extension request: once with the expected
"extension response" or "success" message, and once with an
unexpected/additional empty "success" message. We detect the extra
empty "success" message in a generic and protocol compliant way, and
re-align request-response-pair boundaries for any future requests. From
the agent's perspective, the work-around does a read-only operation and
should not change any permanent agent state, whether there are extra
empty "success" messages or not.
As written, the work-around tests specifically for output from OpenSSH
10.3, but is otherwise agnostic to the "extension response" message
contents and could be easily adapted to trigger for other content
patterns.
</pre>
tag:gitlist.org,2012:commit/ea78e13123d1ce64bf4e02c624497ae6c37a6b3fSplit SSHAgentClient.request in two2026-06-13T16:04:08+02:00Marco Riccisoftware@the13thletter.info
<pre>Factor out the serialization of the request message and the
deserialization of the response message from `SSHAgentClient.request`
into separate helper methods. `SSHAgentClient.request` now only
contains the management of expected response codes, and the raising of
errors if unexpected response codes are received.
While this refactoring was unnecessary so far – requests and responses
were always paired and aligned – the next piece of code I intend to
commit requires handling unpaired responses, and will use only one of
these helper methods.
</pre>
tag:gitlist.org,2012:commit/57e3b1ed832e865e9f9e8316f930b1beae3714f0Turn the SSH agent protocol message numbers into ints2026-06-13T15:56:18+02:00Marco Riccisoftware@the13thletter.info
<pre>The `SSH_AGENT` and `SSH_AGENTC` types now inherit from `int`, because
SSH agent protocol message numbers are 8-bit unsigned integers. This
cuts down on a lot of (previously necessary) type conversion steps
whenever mixed groups of message numbers were involved (e.g. the
`SSHAgentClient.request` `response_code` argument), or when message
numbers needed to be compared with each other (e.g. tests).
</pre>
tag:gitlist.org,2012:commit/6de63ce9751f3988ebd2255e169a4cc9d584c34fFor SSH agent failures, print the raw response text2026-06-13T07:52:46+02:00Marco Riccisoftware@the13thletter.info
<pre>For SSHAgentFailedError, include the raw response text in the error
message. (Escaped, but not trimmed.) The response text is seldom
textual in nature, and discarding non-printable parts of the text turns
out to be much more of a hindrance than a help when debugging unexpected
agent behavior.
</pre>