Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[mosquitto-dev] Modifying mosquitto source in C to use my own encryption/decryption on broker.

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:

  1. Username/Password Decryption: I have successfully modified the authentication plugin to decrypt username/password credentials using my custom encryption library and headers.
  2. Subscriber Topic Decryption:
    • Initially, I modified mosquitto_subscribe_multiple(...) in lib/actions.c to 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(...) in src/subs.c. as this seems a better place to decrypt, however, I am encountering difficulties passing a char* key_id into this function.
  3. Publisher Topic/Payload Encryption: This step has been completed successfully.
  4. Broker Topic Decryption (Before Subscriber Routing):
    • I am struggling to determine the optimal method for passing a char* key_id from a published message (topic/payload) through to the subscriber.
    • I have attempted the following approaches:
      • Adding char* key_id to mosquitto_internal.h and implementing corresponding getter/setter functions.
      • Using mosquitto_property_add_string(...), but I am unable to retrieve the string value.
  5. Broker Topic Encryption (Before Subscriber Delivery): This step requires the key_id to be passed through the broker.
  6. 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_id from 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



Back to the top