<html><body><div style="color:#000; background-color:#fff; font-family:bookman old style, new york, times, serif;font-size:10pt"><div><div><span>Thanks Paul. That works! After recompiling the kernel with icv_tuncbits=128 I was able to successfully create a transport tunnel between linux and windows.</span></div><div><br></div></div>  <div style="font-size: 10pt; font-family: 'bookman old style', 'new york', times, serif; "> <div style="font-size: 12pt; font-family: 'times new roman', 'new york', times, serif; "> <div dir="ltr"> <font size="2" face="Arial"> <hr size="1">  <b><span style="font-weight:bold;">From:</span></b> Paul Wouters &lt;paul@nohats.ca&gt;<br><b><span style="font-weight: bold;">Sent:</span></b> Friday, February 3, 2012 10:48 PM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [Openswan Users] pluto segfaults when using SHA2 256 hash<br> </font> </div> <br>
On Thu, 2 Feb 2012, Abhinav Bhagwat wrote:<br><br>&gt; Thanks Paul. That works. However, I see another issue. If I connect two linux boxes it works fine.<br>&gt; Simiarly if I connect two windows boxes, it works fine. However, if I try to connect to a windows 2K8 box<br>&gt; to a linux box, it does not work. Phase 1 and phase 2 SAs are both successfully established. But, when I<br>&gt; telnet to windows box, the ESP packet reaches the windows box but there is not reply back. If I replace<br>&gt; sha256 with sha1, it all works fine.<br><br>That is probably due to the SHA2 256 Linux bug. In all kernels up to<br>2.6.32 or so, the SHA256 was truncated. For newer kernels, it requires<br>a different call via kernel_netlink to use the fixed up version of the<br>XFM code that fixed the truncation.<br><br>I started work on fixing that, but it did not yet quite work as<br>expected.<br><br>A quick and dirty hack could be to change the kernel truncation
 and<br>recompile the kernel. That would be in linux-2.6.xx/net/crypto/xfrm_algo.c<br>around the section:<br><br>{<br>&nbsp; &nbsp; &nbsp; &nbsp; .name = "hmac(sha256)",<br>&nbsp; &nbsp; &nbsp; &nbsp; .compat = "sha256",<br><br>&nbsp; &nbsp; &nbsp; &nbsp; .uinfo = {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .auth = {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .icv_truncbits = 96,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .icv_fullbits = 256,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; },<br><br>While the draft had 96, the final RFC has fullbits/2, so you should make<br>it 128. For sha256 it would be "256".<br><br>I hope to get back on track to fix that so we can specify:<br><br>&nbsp;&nbsp;&nbsp; phase2alg=aes128-sha2_256-128<br><br>and<br><br>&nbsp;&nbsp;&nbsp; phase2alg=aes128-sha2_256-96<br><br>But
 those changes are more invasive then I had time for a few weeks ago.<br><br>I'll forward another message to the list with details that did not make<br>it to the dev archives.<br><br>Paul<br><br><br> </div> </div>  </div></body></html>