Add an implementation of mutual message exchange (bLIP31, Mutual Message Exchange, Bolt12)

https://github.com/lightningdevkit/rust-lightning/pull/2829

Host: jbesraa  -  PR author: TheBlueMatt

Notes

This is part two of the review for bLIP/31 named “Mutual Message Exchange”. In the first session we reviewed the bLIP/31 definition, and in this part we will cover the implementation at ldk/2829.

Questions

  1. Did you review the PR? Concept ACK, approach ACK, tested ACK, or NACK?
  2. In mutual-message-exchange/src/lib.rs we have three public functions, respond_with_message, decode_message, and get_init_bytes. What are the main purposes of these functions?
  3. What is the purpose of get_idx_permutation get_cover_trusted_count functions?
  4. What do we save in the TrustedSet struct and why?
  5. What is variable_time_decryption and how is it used in the code?