I am implementing application-layer encryption in Mosquitto, replicating TLS functionality. My goal is to encrypt and decrypt the topic at various stages of the MQTT communication process:
- Username/Password Decryption: I have successfully modified the authentication plugin to decrypt username/password credentials using my custom encryption library and headers.
- Subscriber Topic Decryption:- Initially, I modified mosquitto_subscribe_multiple(...)inlib/actions.cto decrypt the subscription topic before it's added to Mosquitto's routing table. This appears to function correctly.
- I am now attempting to move this decryption logic to sub__add(...)insrc/subs.c. as this seems a better place to decrypt, however, I am encountering difficulties passing achar* key_idinto this function.
 
- Publisher Topic/Payload Encryption: This step has been completed successfully.
- Broker Topic Decryption (Before Subscriber Routing):- I am struggling to determine the optimal method for passing a char* key_idfrom a published message (topic/payload) through to the subscriber.
- I have attempted the following approaches:- Adding char* key_idtomosquitto_internal.hand implementing corresponding getter/setter functions.
- Using mosquitto_property_add_string(...), but I am unable to retrieve the string value.
 
 
- Broker Topic Encryption (Before Subscriber Delivery): This step requires the key_id to be passed through the broker.
- Subscriber Topic/Payload Decryption: This step also requires the key_id to be passed through the broker.
Specific Questions:
- Question 1 (Regarding Step 2): Where exactly should I be decrypting the subscriber topic? in src/subs.c or lib/acrions.c or some other place?
- Question 2 (Regarding Step 4): What is the most effective method for passing a char* key_idfrom a published message to the subscriber, enabling topic and payload decryption at the subscriber?
- Question 3 (Regarding Step 4): Would using  mosquitto_property_add_string(…) be a solution instead adding char* key_id to mosquitto_internal.h?
Any assistance or guidance would be greatly appreciated.
Thank you,
Tim