[PATCH] Add `reserved` fields to the agent protocol specification

Wiktor Kwapisiewicz
Wed, 17 Apr 2024 07:30:28 -0000

The ssh client appends empty `reserved` fields to the destination
constraint extension [0]. This was found when working on our Rust-based
library for writing SSH agents [1] which includes tests for messages
captured using the OpenSSH client.

This patch adjusts the documentation of the agent protocol to include
the reserved fields.

I have not found out the reasoning for this reserved value in commit
5e950d7657 and as such I didn't expand the documentation to include
further context but I think it would be a good idea to add it.

[0]:
https://github.com/openssh/openssh-portable/blob/88351eca17dcc55189991ba60e50819b6d4193c1/authfd.c#L469
[1]:
https://github.com/wiktor-k/ssh-agent-lib/blob/2605fba8497075d35daedc1f78522f3e2c17bf8d/src/proto/extension.rs#L71

Co-authored-by: Arthur Gautier <arthur.gautier at arista.com>
Signed-off-by: Wiktor Kwapisiewicz <wiktor at metacode.biz>
---
 PROTOCOL.agent | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/PROTOCOL.agent b/PROTOCOL.agent
index 7637882f1..3412cf5b8 100644
--- a/PROTOCOL.agent
+++ b/PROTOCOL.agent
@@ -49,10 +49,13 @@ Where a constraint consists of:

 	string		from_username (must be empty)
 	string		from_hostname
+	string		reserved
 	keyspec[]	from_hostkeys
 	string		to_username
 	string		to_hostname
+	string		reserved
 	keyspec[]	to_hostkeys
+	string		reserved

 And a keyspec consists of:

--
2.44.0