<br>
Hi, Michael and Tim, <br>
<br>
Thanks for the help. It looks like Mark Spencer checked in some basic
IAX encryption code in Dec, 2004. When &quot;encryption&quot; is set, IAX
encrypts frames using AES128 which is the only supported algorithm. As
of clients, I would think KIAX and DIAX would work as well. <br>
<br>
Thanks<br>
<br>
-Scott<br>
<br>
<br>
Date: Wed, 28 Sep 2005 14:28:11 -0700<br>
From: Michael Jia &lt;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:michael.mjia@gmail.com">michael.mjia@gmail.com</a>&gt;<br>
Subject: Re: [Asterisk-Users] Voice Encryption<br>
To: Asterisk Users Mailing List - Non-Commercial Discussion<br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:asterisk-users@lists.digium.com">asterisk-users@lists.digium.com</a>&gt;<br>
Cc: <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:kzliao@yahoo.com">kzliao@yahoo.com</a><br>
Message-ID: &lt;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:692781cd0509281428324cb5eb@mail.gmail.com">692781cd0509281428324cb5eb@mail.gmail.com</a>&gt;<br>
Content-Type: text/plain; charset=&quot;iso-8859-1&quot;<br>
<br>
Hi, Scott<br>
<br>
The source code I found is in chan_iax.c, from the name of parameters, it<br>
looks like it is using<br>
AES. Can anyone here confirm that?<br>
<br>
static int encrypt_frame(aes_encrypt_ctx *ecx, struct ast_iax2_full_hdr *fh,<br>
unsigned char *poo, int *datalen)<br>
{<br>
int padding;<br>
unsigned char *workspace;<br>
workspace = alloca(*datalen + 32);<br>
if (!workspace)<br>
return -1;<br>
if (ntohs(fh-&gt;scallno) &amp; IAX_FLAG_FULL) {<br>
struct ast_iax2_full_enc_hdr *efh = (struct ast_iax2_full_enc_hdr *)fh;<br>
if (option_debug)<br>
ast_log(LOG_DEBUG, &quot;Encoding full frame with length %d\n&quot;, *datalen);<br>
padding = 16 - ((*datalen - sizeof(struct ast_iax2_full_enc_hdr)) % 16);<br>
padding = 16 + (padding &amp; 0xf);<br>
memcpy(workspace, poo, padding);<br>
memcpy(workspace + padding, efh-&gt;encdata, *datalen - sizeof(struct<br>
ast_iax2_full_enc_hdr));<br>
*datalen += padding;<br>
workspace[15] &amp;= 0xf0;<br>
workspace[15] |= (padding &amp; 0xf);<br>
memcpy_encrypt(efh-&gt;encdata, workspace, *datalen, ecx);<br>
if (*datalen &gt;= 32 + sizeof(struct ast_iax2_full_enc_hdr))<br>
memcpy(poo, workspace + *datalen - 32, 32);<br>
} else {<br>
struct ast_iax2_mini_enc_hdr *efh = (struct ast_iax2_mini_enc_hdr *)fh;<br>
if (option_debug)<br>
ast_log(LOG_DEBUG, &quot;Encoding mini frame with length %d\n&quot;, *datalen);<br>
padding = 16 - ((*datalen - sizeof(struct ast_iax2_mini_enc_hdr)) % 16);<br>
padding = 16 + (padding &amp; 0xf);<br>
memset(workspace, 0, padding);<br>
memcpy(workspace + padding, efh-&gt;encdata, *datalen - sizeof(struct<br>
ast_iax2_mini_enc_hdr));<br>
workspace[15] &amp;= 0xf0;<br>
workspace[15] |= (padding &amp; 0x0f);<br>
*datalen += padding;<br>
memcpy_encrypt(efh-&gt;encdata, workspace, *datalen, ecx);<br>
if (*datalen &gt;= 32 + sizeof(struct ast_iax2_mini_enc_hdr))<br>
memcpy(poo, workspace + *datalen - 32, 32);<br>
}<br>
return 0;<br>
}<br>
<br>
<br>
<br>
On 9/28/05, tim panton &lt;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:tpanton@attglobal.net">tpanton@attglobal.net</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On 28 Sep 2005, at 07:26, Michael Jia wrote:<br>
&gt;<br>
&gt; Hi, Scott<br>
&gt;<br>
&gt; This is Michael Jia. So far, I searched the lists and with the following<br>
&gt; email threads<br>
&gt; <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://lists.digium.com/pipermail/asterisk-dev/2004-December/008295.html" target="_blank">http://lists.digium.com/pipermail/asterisk-dev/2004-December/008295.html
</a><br>
&gt; I don't know what is the current working status now. Maybe somone in the<br>
&gt; lists<br>
&gt; knows.<br>
&gt;<br>
&gt;<br>
&gt; Last I heard IAX2 in CVS Head has encryption that works between 2 asterisk<br>
&gt; systems. There is no documentation (yet) except the source code, and no<br>
&gt; clients that support it (yet).<br>
&gt;<br>
&gt; Tim.<br>
&gt;<br>
&gt;<br>
&gt;