I am using a libgcrypt function gcry_prime_check
to test if the number 3
is a prime number. It turns out 3 is not a prime number according to my the function. What am i doing wrong?
Here is my code
#include <gcrypt.h>
#include <stdio.h>
int main(void)
{
gcry_mpi_t cript_prime;
gcry_error_t err;
char buffer[8] = {0};
char number[8] = {0};
printf("%s\n", gcry_check_version ( NULL ) );
gcry_control( GCRYCTL_INIT_SECMEM, 16384, 0 );
cript_prime = gcry_mpi_new(16);
strcpy(number,"3");
gcry_mpi_scan(&cript_prime,GCRYMPI_FMT_USG,number,sizeof(number),NULL);
gcry_mpi_print(GCRYMPI_FMT_USG,buffer,sizeof(buffer),NULL,cript_prime);
printf("The number tested is: %s\n",buffer);
err = gcry_prime_check(cript_prime,4);
if(err)
{
printf("%s\n",gcry_strerror(err));
}
gcry_mpi_release(cript_prime);
return 0;
}
Here is the output
1.4.4
The number tested is: 3
Number is not prime
Also, a link for a good tutorial on using libgcrypt would be a big bonus. Thanks
EDIT:
Alright, I managed to generate a prime number using gcry_prime_generate
and copied the value into number
. Turns out it failed the prime check. But when you directly the pass the mpi output from prime generate to the prime check function ... it passes!!