<div dir="ltr"><div>This is not in accordance with the documentation: <br></div><div><br></div><div>Function: int gcry_mpi_invm (gcry_mpi_t x, gcry_mpi_t a, gcry_mpi_t m)<br>Set x to the multiplicative inverse of a \bmod m. Return true if the inverse exists. <br></div><div><br></div><div>#include <gcrypt.h></div><br>#define CF_CHECK_EQ(expr, res) if ( (expr) != (res) ) { goto end; }<br><br>int main(void)<br>{<br>    gcry_mpi_t A;<br>    gcry_mpi_t B;<br>    gcry_mpi_t C;<br>    gcry_error_t err;<br><br>    CF_CHECK_EQ(err = gcry_mpi_scan(&A, GCRYMPI_FMT_HEX, "3", 0, NULL), 0);<br>    CF_CHECK_EQ(err = gcry_mpi_scan(&B, GCRYMPI_FMT_HEX, "66", 0, NULL), 0);<br>    CF_CHECK_EQ(err = gcry_mpi_scan(&C, GCRYMPI_FMT_HEX, "1", 0, NULL), 0);<br>    CF_CHECK_EQ(gcry_mpi_invm(C, A, B), 1);<br>    printf("Inverse exists\n");<br>end:<br><br>    return 0;<br>}</div>