<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ouroboros/src/ipcpd/unicast/routing/tests/CMakeLists.txt, branch testing</title>
<subtitle>Ouroboros main repository</subtitle>
<id>http://133.ip-51-38-114.eu/cgit/ouroboros/atom?h=testing</id>
<link rel='self' href='http://133.ip-51-38-114.eu/cgit/ouroboros/atom?h=testing'/>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/'/>
<updated>2026-02-13T08:22:29+00:00</updated>
<entry>
<title>build: Refactor CMake back to in-tree CMakeLists</title>
<updated>2026-02-13T08:22:29+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-02-02T21:50:17+00:00</published>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/commit/?id=3796f6b04b5fce183e5480b57725545cda033f99'/>
<id>urn:sha1:3796f6b04b5fce183e5480b57725545cda033f99</id>
<content type='text'>
This moves the build definitions back to src/ subdirectories
(CMakeLists.txt per component). Configuration and dependencies are
kept out of tree. Configuration options are bundled into cmake/config/
modules. Dependencies are grouped by component (system/, crypt/, eth/,
coverage/, etc.). It now consistently uses target-based commands
(target_include_directories, target_link_libraries) instead of global
include_directories(). Proper PRIVATE/PUBLIC visibility for executable
link libraries. CONFIG_OUROBOROS_DEBUG now properly set based on being
a valid debug config (not just checking the string name).

It also adds OuroborosTargets export for find_package() support and
CMake package config files (OuroborosConfig.cmake) for easier
integration with CMake projects.

The build logic now follows more idiomatic CMake practices with
configuration separated from target definitions.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Add post-quantum cryptography support</title>
<updated>2026-01-19T07:29:29+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-01-07T15:44:34+00:00</published>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/commit/?id=60b04305d70614580b4f883c0a147507edef3779'/>
<id>urn:sha1:60b04305d70614580b4f883c0a147507edef3779</id>
<content type='text'>
This adds initial support for runtime-configurable encryption and
post-quantum Key Encapsulation Mechanisms (KEMs) and authentication
(ML-DSA).

Supported key exchange algorithms:

  ECDH: prime256v1, secp384r1, secp521r1, X25519, X448
  Finite Field DH: ffdhe2048, ffdhe3072, ffdhe4096
  ML-KEM (FIPS 203): ML-KEM-512, ML-KEM-768, ML-KEM-1024
  Hybrid KEMs: X25519MLKEM768, X448MLKEM1024

Supported ciphers:
  AEAD: aes-128-gcm, aes-192-gcm, aes-256-gcm, chacha20-poly1305
  CTR: aes-128-ctr, aes-192-ctr, aes-256-ctr

Supported HKDFs:
  sha256, sha384, sha512, sha3-256, sha3-384, sha3-512,
  blake2b512, blake2s256

Supported Digests for DSA:
  sha256, sha384, sha512, sha3-256, sha3-384, sha3-512,
  blake2b512, blake2s256

PQC support requires OpenSSL 3.4.0+ and is detected automatically via
CMake. A DISABLE_PQC option allows building without PQC even when
available.

KEMs differ from traditional DH in that they require asymmetric roles:
one party encapsulates to the other's public key. This creates a
coordination problem during simultaneous reconnection attempts. The
kem_mode configuration parameter resolves this by pre-assigning roles:

  kem_mode=server  # Server encapsulates (1-RTT, full forward secrecy)
  kem_mode=client  # Client encapsulates (0-RTT, cached server key)

The enc.conf file format supports:

  kex=&lt;algorithm&gt;      # Key exchange algorithm
  cipher=&lt;algorithm&gt;   # Symmetric cipher
  kdf=&lt;KDF&gt;            # Key derivation function
  digest=&lt;digest&gt;      # Digest for DSA
  kem_mode=&lt;mode&gt;      # Server (default) or client
  none                 # Disable encryption

The OAP protocol is extended to negotiate algorithms and exchange KEX
data. All KEX messages are signed using existing authentication
infrastructure for integrity and replay protection.

Tests are split into base and _pqc variants to handle conditional PQC
compilation (kex_test.c/kex_test_pqc.c, oap_test.c/oap_test_pqc.c).

Bumped minimum required OpenSSL version for encryption to 3.0
(required for HKDF API). 1.1.1 is long time EOL.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Add option to toggle Ouroboros logging in tests</title>
<updated>2026-01-19T07:14:55+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2026-01-14T00:07:53+00:00</published>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/commit/?id=8aa6ab4d29df80adde0d512244d43d38264bf32e'/>
<id>urn:sha1:8aa6ab4d29df80adde0d512244d43d38264bf32e</id>
<content type='text'>
The test output is a bit polluted with logs originating fomr the
logging system, e.g.:

23: test_bind_prog started.
23: ==16636== reg/name(DB): Add prog reg_test to name testname.
23: ==16636== reg(EE): Removing  from names.
23: test_bind_prog succeeded.

This adds a flag DISABLE_TEST_LOGGING that suppresses log_* output in
tests to keep them clean:

23: test_bind_prog started.
23: test_bind_prog succeeded.

The status is printed in CMake output:

-- Ouroboros logging in test output disabled
-- Ouroboros logging in test output enabled

By default the flag is ON (clean test output).

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Refactor CMake modules</title>
<updated>2026-01-07T09:00:06+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2025-12-23T10:59:45+00:00</published>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/commit/?id=48c294105f5123dc876fbad199ec1e0166d82a18'/>
<id>urn:sha1:48c294105f5123dc876fbad199ec1e0166d82a18</id>
<content type='text'>
This moves the CMake build logic out of the source tree and splits it
up into a more modular form. The tests now have a CMakeLists.txt file
in their respective source directory.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Add build_tests target</title>
<updated>2025-11-21T07:21:38+00:00</updated>
<author>
<name>Thijs Paelman</name>
<email>thijs@ouroboros.rocks</email>
</author>
<published>2025-10-20T17:58:01+00:00</published>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/commit/?id=e54be25b524316006d7a36893c8847d438df06e5'/>
<id>urn:sha1:e54be25b524316006d7a36893c8847d438df06e5</id>
<content type='text'>
This intermediate target only builds all the tests, it doesn't run them.
It is added for clarifying the different steps involved in testing.
The 'check' target still builds AND runs the tests as before.

Signed-off-by: Thijs Paelman &lt;thijs@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Include tests in 'all' target</title>
<updated>2025-11-07T07:36:20+00:00</updated>
<author>
<name>Thijs Paelman</name>
<email>thijs@ouroboros.rocks</email>
</author>
<published>2025-11-04T12:35:52+00:00</published>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/commit/?id=535fba02cd27020f9c64dcbe4e97584a145816d4'/>
<id>urn:sha1:535fba02cd27020f9c64dcbe4e97584a145816d4</id>
<content type='text'>
When BUILD_TESTING=ON, then the default 'all' target will now build also
the tests.

This behaviour could be controlled by an extra variable
(see https://stackoverflow.com/a/42235335), but this increases
complexity without many benefits.

Signed-off-by: Thijs Paelman &lt;thijs@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Fix tests with CMake &gt;= 3.29</title>
<updated>2024-04-16T12:16:16+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2024-04-06T12:36:37+00:00</published>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/commit/?id=ce2b8755c6aa4101b0c4c4e097c7bc71493594c0'/>
<id>urn:sha1:ce2b8755c6aa4101b0c4c4e097c7bc71493594c0</id>
<content type='text'>
Removing the testdriver source by the driver name doesn't work anymore
in CMake 3.29 because of the following (breaking) change:

Changed in version 3.29: The test driver source is listed by absolute
path in the build tree. Previously it was listed only as &lt;driverName&gt;.

https://cmake.org/cmake/help/latest/command/create_test_sourcelist.html

When using CMake 3.29 or above, Ouroboros will use the list POP_FRONT
function (introduced in CMake 3.15) to get rid of it.

https://cmake.org/cmake/help/latest/command/list.html#pop-front

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>ipcpd: Restructure policy code</title>
<updated>2021-12-06T16:52:08+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2021-12-04T14:35:36+00:00</published>
<link rel='alternate' type='text/html' href='http://133.ip-51-38-114.eu/cgit/ouroboros/commit/?id=11d2ecc140486949c8d81e984137263ca48d5799'/>
<id>urn:sha1:11d2ecc140486949c8d81e984137263ca48d5799</id>
<content type='text'>
The policies were all in a single folder pol/, and have been moved to
a folder per component/mechanism to keep things a bit more orderly.

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