diff options
author | Simon Josefsson <simon@josefsson.org> | 2009-06-17 09:20:08 +0200 |
---|---|---|
committer | Simon Josefsson <simon@josefsson.org> | 2009-08-07 01:01:38 +0200 |
commit | ce53471aa4f2887c684f5cdc6918d8e8c549f143 (patch) | |
tree | 7d33356d5df46f877c74e1c92d1ff5cafad21176 /lib | |
parent | f758d36a9839ad86221c598a48cdeda5a94eebdf (diff) | |
download | gnutls-ce53471aa4f2887c684f5cdc6918d8e8c549f143.tar.gz |
Return proper MPI lengths in bits.
Reported by Peter Hendrickson <pdh@wiredyne.com> in
<http://thread.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/3607>.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gnutls_ui.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/lib/gnutls_ui.c b/lib/gnutls_ui.c index d0a6d00809..2be9b14a00 100644 --- a/lib/gnutls_ui.c +++ b/lib/gnutls_ui.c @@ -288,6 +288,24 @@ gnutls_dh_get_secret_bits (gnutls_session_t session) } } +static int +mpi_buf2bits (gnutls_datum_t *mpi_buf) +{ + bigint_t mpi; + int rc; + + rc = _gnutls_mpi_scan_nz (&mpi, mpi_buf->data, mpi_buf->size); + if (rc) + { + gnutls_assert (); + return rc; + } + + rc = _gnutls_mpi_get_nbits (mpi); + _gnutls_mpi_release (&mpi); + + return rc; +} /** * gnutls_dh_get_prime_bits - return the bits used in DH authentication @@ -346,8 +364,7 @@ gnutls_dh_get_prime_bits (gnutls_session_t session) return GNUTLS_E_INVALID_REQUEST; } - return (dh->prime.size) * 8; - + return mpi_buf2bits (&dh->prime); } /** @@ -368,7 +385,7 @@ gnutls_rsa_export_get_modulus_bits (gnutls_session_t session) if (info == NULL) return GNUTLS_E_INTERNAL_ERROR; - return info->rsa_export.modulus.size * 8; + return mpi_buf2bits (&info->rsa_export.modulus); } /** @@ -426,8 +443,7 @@ gnutls_dh_get_peers_public_bits (gnutls_session_t session) return GNUTLS_E_INVALID_REQUEST; } - return dh->public_key.size * 8; - + return mpi_buf2bits (&dh->public_key); } /* CERTIFICATE STUFF */ |