<div dir="ltr"><div dir="ltr">On Thu, Oct 6, 2022 at 7:27 AM Jean Aunis <<a href="mailto:jean.aunis@prescom.fr">jean.aunis@prescom.fr</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  

    
  
  <div>
    <p>Hello,</p>
    <p>I'm working on a patch to add support for MKI in res_srtp.</p>
    <p>For those who may not be familiar with the subject, MKI is a
      re-keying mechanism for SRTP which involves appending a Master Key
      Identifier (MKI) inside each SRTP packet in order to change the
      master key in use.</p>
    <p>Master key and MKI negotiation is out of scope of this patch.<br>
    </p>
    <p>Before going forward, I'd like to submit to you the changes I
      plan in res_srtp's API, just to know if I'm going in the right
      direction or if I should design it another way.</p>
    <p>First, I would add a method in <font face="monospace"><b>ast_srtp_policy_res</b></font>
      to add several master keys (together with their MKI) to the SRTP
      policy. It returns the index at which the key was inserted, which
      can be used later to reference the master key:</p>
    <p><b><font face="monospace">struct ast_srtp_policy_res {<br>
                  [...]<br>
          +       int (*add_master_key)(struct ast_srtp_policy *policy,
          const unsigned char *key, size_t key_len, const unsigned char
          *salt, size_t salt_len, const unsigned char *mki, size_t
          mki_len);<br>
           };</font></b></p>
    <p>Second, I would add two methods in <font face="monospace"><b>ast_srtp_res</b></font>
      to enable or disable MKI usage for incoming and outgoing SRTP
      packets. The MKI to use for outgoing packets is referenced by its
      index, as returned by <b><font face="monospace">ast_srtp_policy_res.</font></b><b><font face="monospace">add_master_key</font></b> :</p>
    <p><b><font face="monospace">struct ast_srtp_res {<br>
                  [...]<br>
          +       int (*use_inbound_mki)(struct ast_srtp *srtp, int
          enable);</font></b><b><br>
      </b><b><font face="monospace">+       int
          (*use_outbound_mki)(struct ast_srtp *srtp, int enable, int
          mki_index);<br>
           };</font></b><br>
    </p>
    <p>Also attached a patch file summarizing these changes.</p>
    <p>Any feedback will be appreciated!</p></div></blockquote><div><br></div><div>From a general perspective it seems sane, but that's without any further knowledge of MKI.</div></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="font-family:tahoma,sans-serif"><font color="#073763">Joshua C. Colp</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Asterisk Project Lead</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Sangoma Technologies</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Check us out at <a href="http://www.sangoma.com" target="_blank">www.sangoma.com</a> and <a href="http://www.asterisk.org" target="_blank">www.asterisk.org</a></font><br></div></div></div></div></div></div></div></div></div></div></div>