<div dir="ltr"><div dir="ltr"><span style="font-size:12.8px">Hi Everyone,</span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><b><font size="4">This issue had  discussed before, you can check at:</font></b><div><div dir="ltr"><div><br>Sun Nov 9 17:54:36 CST 2014<br>[asterisk-dev] Notes from setting up SIP+TLS/RTP+DTLS</div><div><a href="http://lists.digium.com/pipermail/asterisk-dev/2014-November/071322.html" target="_blank">http://lists.digium.com/pipermail/asterisk-dev/2014-November/071322.html</a><br></div></div><div dir="ltr"><div><br></div><div><br></div><div><b><font size="4">Current situation:</font></b></div><div><br></div><div>1. currently, asterisk (13.6) use "identity" ( ip / FROM / TO ) to identify incoming user and attach an matched  "endpoint" configuration to it.<br></div><div><br></div><div>2. in the configuration, there is a option named: <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Configuration_res_pjsip#Asterisk13Configuration_res_pjsip-endpoint_media_encryption" target="_blank">media_encryption</a> = no / dtls / srtp, default: no</div><div>    it means the endpoint should use this setting during RTP setup, you can use one of it.</div><div>    so if you set to: dtls, the matched client should always use dtls in their sdp and send to asterisk</div><div><br></div>3. fortunately, you can combine with other options:<br>    <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Configuration_res_pjsip#Asterisk13Configuration_res_pjsip-endpoint_media_use_received_transport" target="_blank">media_encryption_optimistic</a> = yes<br>    <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Configuration_res_pjsip#Asterisk13Configuration_res_pjsip-endpoint_media_encryption_optimistic" target="_blank">media_use_received_transport</a> = yes</div><div dir="ltr"><br></div><div>    it will achieve: Asterisk can accept both the "encryption type" set in <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Configuration_res_pjsip#Asterisk13Configuration_res_pjsip-endpoint_media_encryption" target="_blank">media_encryption</a> and No Encryption.</div><div>    ex: if you set <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Configuration_res_pjsip#Asterisk13Configuration_res_pjsip-endpoint_media_encryption" target="_blank">media_encryption</a> = dtls, then you can accept both dtls and no encryption ( but not sdes ) and vice versa.</div><div dir="ltr"><div><br></div><div><br></div><div><b><font size="4">Different use case of asterisk:</font></b></div><div><br></div><div>I know from the perspective of using asterisk as an all in one sip proxy, it makes non-sense to support both dtls/sdes on the same endpoint. How come we use different encryption for the same endpoint in and out? and how to determine which encryption should we use while outgoing?</div><div><br></div><div>But I know there are lots of users not use asterisk as an all-in-one sip server, we just use it as a solid trunk to connect to pstn world or do the transcoding stuff. </div><div><br></div><div><br></div><div><b><font size="4">TL;DR</font></b><br></div><div><br></div><div>For the backward-compatibility to the huge amount of old-school devices which may still alive in a decade, can we add a new argument "optional" to media_encryption option?</div><div><br></div><div>it means it can accept any encryption of the incoming, and if we want to restrict, we still can reject it in extensions based on our logic.</div><div><br></div><div>To avoid conflict that " How we determine the outgoing if we set to 'optional'", maybe it can split media_encryption into "IN" and "OUT", ex: "in_media_encryption", "out_media_encryption", and it will not be confused.</div><div><br></div><div><b>p.s. </b></div><div><br></div><div>out_media_encryption is an default value to me though. we can use syntax for example:</div><div><br></div><div>exten => s,n,Set(pjsipoutgoing=outgoing-no-encrypt/sip:)<br></div><div>exten => s,n,Set(pjsipoutgoing=outgoing-sdes-encrypt/sip:)<br></div><div>exten => s,n,Set(pjsipoutgoing=outgoing-dtls-encrypt/sip:)<br></div><div><br></div><div>to determine which encryption should we use or not based on our user database, so I don't mind which encryption was set for outgoing. I always do it in specific way when outgoing.</div><div><br></div><div><br></div><div><b><font size="4">Here are scenario:</font></b></div><div><br></div><div><br></div><div>1. use other sip proxy for register ( ex: kamailio ), so the endpoint will have only one section, the identity is ip adress of our sip proxy.</div><div><br></div><div>2. every call to kamailio will forward to asterisk, and asterisk can accept any encryption that caller requested in the sdp.</div><div><br></div><div>3. when outgoing, we know which encryption to use of our destinations ( every users or other pstn trunk)</div><div><br></div><div>without accept all encryption when incoming, we must force our users to register to different ip address of register servers, and use different ip identity to attach different endpoint setting in asterisk conf. </div><div><br></div><div><br></div><div><br></div><div><br></div><div>Correct me if I am wrong.</div><div>Any alternative suggestions are appreciated!</div><div><br></div><div>Cheers.</div></div></div></div></div></div>