Implement internally opaque bn access from evp

Reviewed-by: Tim Hudson <tjh@openssl.org>
diff --git a/crypto/evp/pmeth_gn.c b/crypto/evp/pmeth_gn.c
index b006a37..ab46e5a 100644
--- a/crypto/evp/pmeth_gn.c
+++ b/crypto/evp/pmeth_gn.c
@@ -61,7 +61,7 @@
 #include "cryptlib.h"
 #include <openssl/objects.h>
 #include <openssl/evp.h>
-#include <openssl/bn.h>
+#include "internal/bn_int.h"
 #include "evp_locl.h"
 
 int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx)
@@ -178,7 +178,7 @@
 
 static int trans_cb(int a, int b, BN_GENCB *gcb)
 	{
-	EVP_PKEY_CTX *ctx = gcb->arg;
+	EVP_PKEY_CTX *ctx = BN_GENCB_get_arg(gcb);
 	ctx->keygen_info[0] = a;
 	ctx->keygen_info[1] = b;
 	return ctx->pkey_gencb(ctx);