Add DSA_bits() function.

RT#4637

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Dr. Stephen Henson 2016-08-01 18:37:03 +01:00
parent 6c1f368d88
commit 5d8d9a8efa
4 changed files with 18 additions and 6 deletions

View file

@ -254,7 +254,7 @@ static int int_dsa_size(const EVP_PKEY *pkey)
static int dsa_bits(const EVP_PKEY *pkey) static int dsa_bits(const EVP_PKEY *pkey)
{ {
return BN_num_bits(pkey->pkey.dsa->p); return DSA_bits(pkey->pkey.dsa);
} }
static int dsa_security_bits(const EVP_PKEY *pkey) static int dsa_security_bits(const EVP_PKEY *pkey)

View file

@ -339,3 +339,8 @@ ENGINE *DSA_get0_engine(DSA *d)
{ {
return d->engine; return d->engine;
} }
int DSA_bits(const DSA *dsa)
{
return BN_num_bits(dsa->p);
}

View file

@ -2,25 +2,31 @@
=head1 NAME =head1 NAME
DSA_size - get DSA signature size DSA_size, DSA_bits - get DSA signature size or key bits
=head1 SYNOPSIS =head1 SYNOPSIS
#include <openssl/dsa.h> #include <openssl/dsa.h>
int DSA_size(const DSA *dsa); int DSA_size(const DSA *dsa);
int DSA_bits(const DSA *dsa);
=head1 DESCRIPTION =head1 DESCRIPTION
This function returns the size of an ASN.1 encoded DSA signature in DSA_size() returns the maximum size of an ASN.1 encoded DSA signature
bytes. It can be used to determine how much memory must be allocated for key B<dsa> in bytes. It can be used to determine how much memory must
for a DSA signature. be allocated for a DSA signature.
B<dsa-E<gt>q> must not be B<NULL>. B<dsa-E<gt>q> must not be B<NULL>.
DSA_bits() returns the number of bits in key B<dsa>: this is the number
of bits in the B<p> parameter.
=head1 RETURN VALUE =head1 RETURN VALUE
The size in bytes. DSA_size() returns the size in bytes.
DSA_bits() returns the number of bits in the key.
=head1 SEE ALSO =head1 SEE ALSO

View file

@ -101,6 +101,7 @@ void DSA_free(DSA *r);
/* "up" the DSA object's reference count */ /* "up" the DSA object's reference count */
int DSA_up_ref(DSA *r); int DSA_up_ref(DSA *r);
int DSA_size(const DSA *); int DSA_size(const DSA *);
int DSA_bits(const DSA *d);
int DSA_security_bits(const DSA *d); int DSA_security_bits(const DSA *d);
/* next 4 return -1 on error */ /* next 4 return -1 on error */
int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp); int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp);