<div dir="ltr"><div>Dear All,</div><div><br></div><div>I was requested to write a dissector for Wireshark where I need to decrypt data. I have the ephemeral X public key provided in compressed format.</div><div>This means: </div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>compressed_y_1 := 'CF2A7D7467F217A6B7AEF4C34452A4C62FEDA99C1E1EDEB740F662841B84D394'O</div><div><div><div class="gmail-m_8526428139181729953gmail-m_5133983488386661913gmail_signature"><div><div><div>compressed_y_1 means that the LSB bit of Y in 1.</div></div></div></div></div></div></blockquote><div><div dir="ltr" class="gmail-m_8526428139181729953gmail-m_5133983488386661913gmail_signature"><div dir="ltr"><div dir="ltr"><div>I know I have t use Nist P256 (or Brainpool P256 r1).</div><div><br></div><div>My problem is to calculate Y based on previous information.</div><div>First I calculated Y^2:</div><div>    /* y^2=x^3+a*x+b */<br></div><div><div>    three = gcry_mpi_set_ui (NULL, 3);</div><div>    x_3   = gcry_mpi_new (0);</div><div>    axb   = gcry_mpi_new (0);</div><div>    y_2   = gcry_mpi_new (0);</div><div>    gcry_mpi_powm (x_3, x, three, p); // w = b^e \bmod m.</div><div>    gcry_mpi_mulm (axb, a, x, p);</div><div>    gcry_mpi_addm (axb, axb, b, p);</div><div>    gcry_mpi_addm (y_2, x_3, axb, p);</div><div>    show_mpi("y_2", "", y_2);</div></div><div>Where a, b, p are parameters from the Nist P-256 elliptic curve.<br></div><div><br></div><div>My concerns now is how to get the two possible values of y? In other words, how can I calculate sqrt(y^2).</div><div><br></div><div>I did some research on the Internet, but what I found is too much Mathematical oriented and I was lost. I need something close than an algorithm I can implement with libgcrypt MIP library.</div><div><br></div><div>Please can anyone provide me to some hints?</div><div> <span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Many thanks in advance for your help,</span></div><div><span style="font-size:12.8px"><br></span></div></div></div></div></div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Best regards,<br><br>Yann Garcia<br><div><br></div></div></div></div></div></div></div></div></div></div></div></div></div>