}
}
+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 D-H key exchange
return GNUTLS_E_INVALID_REQUEST;
}
- return (dh->prime.size) * 8;
-
+ return mpi_buf2bits (&dh->prime);
}
/**
if (info == NULL)
return GNUTLS_E_INTERNAL_ERROR;
- return info->rsa_export.modulus.size * 8;
+ return mpi_buf2bits (&info->rsa_export.modulus);
}
/**
return GNUTLS_E_INVALID_REQUEST;
}
- return dh->public_key.size * 8;
-
+ return mpi_buf2bits (&dh->public_key);
}
/* CERTIFICATE STUFF */