summaryrefslogtreecommitdiff
path: root/lib/openpgp/privkey.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-05-23 21:19:48 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-06-03 19:54:53 +0200
commitbab8c93bf9501e0eece9d99b491987c83b998e26 (patch)
treeef223bf13227b371e3f7fdff93e2a260635a8eed /lib/openpgp/privkey.c
parent805694523f9cead85dcf221f5f715527e2b15ffc (diff)
downloadgnutls-bab8c93bf9501e0eece9d99b491987c83b998e26.tar.gz
Common code for calculation of RSA exp1 and exp2. Also update the openpgp
code to calculate those values.
Diffstat (limited to 'lib/openpgp/privkey.c')
-rw-r--r--lib/openpgp/privkey.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/openpgp/privkey.c b/lib/openpgp/privkey.c
index bc4c63518b..4bec39baa6 100644
--- a/lib/openpgp/privkey.c
+++ b/lib/openpgp/privkey.c
@@ -708,7 +708,7 @@ _gnutls_openpgp_privkey_get_mpis (gnutls_openpgp_privkey_t pkey,
switch (pk_algorithm)
{
case GNUTLS_PK_RSA:
- local_params = RSA_PRIVATE_PARAMS;
+ local_params = RSA_PRIVATE_PARAMS-2;
break;
case GNUTLS_PK_DSA:
local_params = DSA_PRIVATE_PARAMS;
@@ -726,7 +726,6 @@ _gnutls_openpgp_privkey_get_mpis (gnutls_openpgp_privkey_t pkey,
*params_size = local_params;
-
for (i = 0; i < local_params; i++)
{
result = _gnutls_read_pgp_mpi (pkt, 1, i, &params[i]);
@@ -737,6 +736,19 @@ _gnutls_openpgp_privkey_get_mpis (gnutls_openpgp_privkey_t pkey,
}
}
+ if (pk_algorithm==GNUTLS_PK_RSA)
+ {
+ /* on RSA we need to calculate exp1 and exp2 */
+ result = _gnutls_calc_rsa_exp(params, RSA_PRIVATE_PARAMS);
+ if (result < 0)
+ {
+ gnutls_assert();
+ i = *params_size;
+ goto error;
+ }
+ *params_size = RSA_PRIVATE_PARAMS;
+ }
+
return 0;
error: