<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ouroboros/src/irmd, branch be</title>
<subtitle>Ouroboros main repository</subtitle>
<id>https://ouroboros.rocks/cgit/ouroboros/atom?h=be</id>
<link rel='self' href='https://ouroboros.rocks/cgit/ouroboros/atom?h=be'/>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/'/>
<updated>2026-07-22T07:04:47+00:00</updated>
<entry>
<title>ipcpd: Add flow overshoot protection to mb-ecn</title>
<updated>2026-07-22T07:04:47+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-21T04:54:55+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=3388bd9e9b82df6d7fe79fa4eee7c22a3277624e'/>
<id>urn:sha1:3388bd9e9b82df6d7fe79fa4eee7c22a3277624e</id>
<content type='text'>
The ECN marks were the only source of congestion information, and
going into congestion collapse (dropping a lot of ECN packets and
causing loss of signal) was unrecoverable.

The sender's slow-start ramp clock now tracks a measured RTT to avoid
overshooting into congestion collapse on the previously fixed (14ms)
doubling on long-delay (e.g. 100ms) links.

The flow allocator now carries a periodic heartbeat/ack to keep RTT
estimates up-to-date. The heartbeat also serves as a congestion
collapse detector: consecutive heartbeat losses will go into loss
recovery, halving the window and pausing Additive Increase until the
path is clear. The DT component now has a max_rtt config parameter that
serves as a hint for the layer RTT to optimize slow-start for
low-latency networks.

These two mechanisms follow TCP, however only during slow start up to
the first ECN signal and to recover from a total collapse until the
ECN signal returns. MB-ECN is still fully RTT-independent in the AI/PD
region. A shorter RTT path will just reach its equal fair share faster
than a longer RTT path.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Fix congestion config from file</title>
<updated>2026-07-19T09:44:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-11T04:59:37+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=8ca3d5727ffd9daea27c0418d685aa31608613bd'/>
<id>urn:sha1:8ca3d5727ffd9daea27c0418d685aa31608613bd</id>
<content type='text'>
The configfile logic was matching "lfa" instead of "mb-ecn".

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Reject rekey without KEX config</title>
<updated>2026-07-19T09:44:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-10T19:27:15+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=8bebdf2e3e3a4ead8a728f0a594e8592457660b7'/>
<id>urn:sha1:8bebdf2e3e3a4ead8a728f0a594e8592457660b7</id>
<content type='text'>
A rekey without KEX config should be rejected rather than downgrading
to plaintext. Tests added.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Fix oap_test suppression list</title>
<updated>2026-07-19T09:44:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-10T15:09:58+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=eeea0006825ac404e20656e148c2db47b454dd6a'/>
<id>urn:sha1:eeea0006825ac404e20656e148c2db47b454dd6a</id>
<content type='text'>
he crypto-disabled branch of the test driver referenced two tests that
were folded into test_oap_ts_reject_all() and missed newer ones.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Avoid in-place byteswap in OAP header</title>
<updated>2026-07-19T09:44:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-10T15:09:58+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=aa28f5bf5bd92e69c0e89a1a36c7c95f28b7057c'/>
<id>urn:sha1:aa28f5bf5bd92e69c0e89a1a36c7c95f28b7057c</id>
<content type='text'>
gcc 12 -fanalyzer misclassifies kex_len = hton16(kex_len) followed by
memcpy(&amp;kex_len) as a read of an uninitialized value. Write the
swapped value through the scratch variable like every other field in
write_oap_fixed().

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Harden OAP client KEM completion</title>
<updated>2026-07-19T09:44:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-10T15:09:58+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=de9c30b2071e4aff8819d29c03d98767c8a3ec5b'/>
<id>urn:sha1:de9c30b2071e4aff8819d29c03d98767c8a3ec5b</id>
<content type='text'>
do_client_kex_complete_kem() filled key_buf in the server-encap
branch and returned early in the client-encap branch; any other
mode value would fall through and memcpy an uninitialized stack
buffer into the session key. The client only ever sets the two
known modes today, but nothing local enforces that and the server
derives its mode from a wire bit. Give each mode an explicit path
with no fall-through.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Fix strdup error checks in registry</title>
<updated>2026-07-19T09:44:35+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-10T15:09:58+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=ad55e2710a020c0dbdd403040ec19c651efbf3e4'/>
<id>urn:sha1:ad55e2710a020c0dbdd403040ec19c651efbf3e4</id>
<content type='text'>
reg_proc_add_name() and reg_prog_add_name() checked the already
validated entry pointer instead of the fresh strdup.

Found by gcc static analyzer.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Move AUTH test macros to OAP common.h</title>
<updated>2026-07-08T09:02:24+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-02T06:09:16+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=fca717aba18850d2e32a069905f03314cd836c17'/>
<id>urn:sha1:fca717aba18850d2e32a069905f03314cd836c17</id>
<content type='text'>
The ML-DSA OAP test defined CLI_AUTH/NO_CLI_AUTH and passed them for
the srv_auth parameters of the re-key tests. Rename to the neutral
AUTH/NO_AUTH already used by oap_test.c and move the pair to the
shared common.h.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Test OAP KEM re-key floor</title>
<updated>2026-07-08T09:02:23+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-01T23:25:40+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=08a3828af7416326e8deb84c44da030b64fc5464'/>
<id>urn:sha1:08a3828af7416326e8deb84c44da030b64fc5464</id>
<content type='text'>
Add tests for two client-encap KEM properties the server enforces:
reject a client KDF below the server floor, and confirm a re-key
forces ephemeral server-encap.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Expand and parametrize OAP tests</title>
<updated>2026-07-08T09:02:23+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-07-01T23:18:03+00:00</published>
<link rel='alternate' type='text/html' href='https://ouroboros.rocks/cgit/ouroboros/commit/?id=02cc763dd69568b832516cf408b95dad47b4d9ff'/>
<id>urn:sha1:02cc763dd69568b832516cf408b95dad47b4d9ff</id>
<content type='text'>
Parametrize the re-key roundtrips over the full (srv_auth, cli_auth)
matrix. Add a KEM re-key axis, request-ID and cleartext-echo tamper
tests, and an unsupported cipher/kdf/digest NID cluster guarded by an
assertion.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
</feed>
