View Issue Details

IDProjectCategoryView StatusLast Update
0011125GNUnetutil librarypublic2026-02-21 02:23
Reporterthejackimonster Assigned Tothejackimonster  
PriorityhighSeveritymajorReproducibilityalways
Status assignedResolutionopen 
Product VersionGit master 
Target Version0.27.0 
Summary0011125: Multiple services are using the wrong peer identity key
DescriptionSince the PILS service has been implemented, there are still multiple services and components in GNUnet which use the function `GNUNET_CRYPTO_eddsa_key_create_from_configuration()`. This function simply reads a private key for the peer from the a configuration instead of asking the PILS service about the current peer identity. This results in signature mismatches for example and other cryptographic issues.

I'd suggest that we fully remove this function, replacing it with PILS integration. So that services like CADET, DHT, NSE, EXIT, REGEX and multiple TRANSPORT communicators work as intended again and they could react to peer identity changes.
Steps To Reproduce- enable logging to INFO level in the CADET service.
- open any port with `gnunet-cadet -o $ANY_PORT` to start CADET if not running already
- search for "CADET started for peer " in the log from CADET service
- compare the peer identity in that line with the output from `gnunet-pils -1`
Additional InformationOriginally I was looking into CADET issues and noticed a signature verification failure. The CORE and TRANSPORT services were making a connection from one peer to another properly but CADET was using a different peer identity key for its signatures. So naturally it failed.
TagsNo tags attached.

Activities

thejackimonster

2026-02-21 02:23

developer   ~0027834

I've started working on a patch to address the issue and so far my changes are working for CADET. You can find them under the `dev/thejackimonster/fixes` branch.

First the idea is to reduce copying code for the PILS usage, I've found in the tcp and udp communicators. Now I'm using a simplified struct to supply all the services which require the current peer identity and potentially even the derived private key with it.

So far I was able to make a successful connection from a host using CADET to another vm running CADET with an open port. Both peers were able to exchange hellos, resolve the peer identity and establish a connection. The udp communicator is still throwing some errors when sending KX with payload size 48 to some IPv6 address failed (but this could depend on the vm setup - unsure).

Issue History

Date Modified Username Field Change
2026-02-20 17:23 thejackimonster New Issue
2026-02-21 02:17 thejackimonster Assigned To => thejackimonster
2026-02-21 02:17 thejackimonster Status new => assigned
2026-02-21 02:23 thejackimonster Note Added: 0027834