- Fixed to support 4096 bit DHM params as well

diff --git a/programs/pkey/dh_client.c b/programs/pkey/dh_client.c
index 3810507..db9283a 100644
--- a/programs/pkey/dh_client.c
+++ b/programs/pkey/dh_client.c
@@ -68,7 +68,7 @@
     int server_fd = -1;
 
     unsigned char *p, *end;
-    unsigned char buf[1024];
+    unsigned char buf[2048];
     unsigned char hash[20];
     char *pers = "dh_client";
 
@@ -179,7 +179,7 @@
         goto exit;
     }
 
-    if( dhm.len < 64 || dhm.len > 256 )
+    if( dhm.len < 64 || dhm.len > 512 )
     {
         ret = 1;
         printf( " failed\n  ! Invalid DHM modulus size\n\n" );
@@ -218,7 +218,7 @@
     fflush( stdout );
 
     n = dhm.len;
-    if( ( ret = dhm_make_public( &dhm, 256, buf, n,
+    if( ( ret = dhm_make_public( &dhm, dhm.len, buf, n,
                                  ctr_drbg_random, &ctr_drbg ) ) != 0 )
     {
         printf( " failed\n  ! dhm_make_public returned %d\n\n", ret );
diff --git a/programs/pkey/dh_server.c b/programs/pkey/dh_server.c
index d7133f7..8babef2 100644
--- a/programs/pkey/dh_server.c
+++ b/programs/pkey/dh_server.c
@@ -68,7 +68,7 @@
     int listen_fd = -1;
     int client_fd = -1;
 
-    unsigned char buf[1024];
+    unsigned char buf[2048];
     unsigned char hash[20];
     unsigned char buf2[2];
     char *pers = "dh_server";
@@ -181,7 +181,7 @@
 
     memset( buf, 0, sizeof( buf ) );
 
-    if( ( ret = dhm_make_params( &dhm, 256, buf, &n,
+    if( ( ret = dhm_make_params( &dhm, mpi_size( &dhm.P ), buf, &n,
                                  ctr_drbg_random, &ctr_drbg ) ) != 0 )
     {
         printf( " failed\n  ! dhm_make_params returned %d\n\n", ret );