# include # include # include # include # include # define AM_PATH_LIBGCRYPT /* # define AM_CPPFLAGS = $(LIBGCRYPT_CFLAGS) # define LDADD = $(LIBGCRYPT_LIBS) */ int main () { /* Version check */ if (gcry_check_version(GCRYPT_VERSION)) puts ("\nIntialization Succeed\n"); else { puts ("libgcrypt version mismatch\n"); exit(2); } /* Disable secure memory */ gcry_control(GCRYCTL_DISABLE_SECMEM,0); /* inform the libgcrypt that the intialization has completed */ gcry_control(GCRYCTL_INITIALIZATION_FINISHED,0); if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) { puts ("libgcrypt has not been intialized\n"); abort (); } /* Allocating new context for EC operations */ gcry_ctx_t my_ctx; const char *curve = "NIST P-521" ; gcry_error_t err = 1 ; err = gcry_mpi_ec_new ( &my_ctx, NULL, curve); // Displaying the error puts("Allocating a context for EC operations is"); fputs (gcry_strerror(err), stderr); puts ("\n"); // get the private key const char *d = "d"; int copy1 = 1; gcry_mpi_t x = gcry_mpi_ec_get_mpi(d, my_ctx, copy1); //displaying the private key gcry_buffer_t x_buffer; x_buffer.size = 0; x_buffer.len = 1024; unsigned char *x_buffer_name = x_buffer.data; size_t x_buffer_len = 1024 ; size_t *x_size; const gcry_mpi_t x_copy = x; gcry_mpi_release (x_copy); gcry_error_t err2 = 0; err2 = gcry_mpi_print(GCRYMPI_FMT_USG, x_buffer_name, x_buffer_len, x_size, x_copy); fputs (gcry_strerror(err2), stderr); puts ("\n"); gcry_mpi_release (x_copy); gcry_ctx_release (my_ctx); gcry_mpi_release (x); return 0; }