aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crypto/dsa/dsa_ameth.c2
-rw-r--r--crypto/dsa/dsa_lib.c5
-rw-r--r--doc/crypto/DSA_size.pod16
-rw-r--r--include/openssl/dsa.h1
4 files changed, 18 insertions, 6 deletions
diff --git a/crypto/dsa/dsa_ameth.c b/crypto/dsa/dsa_ameth.c
index c7573bf..f2f2cf5 100644
--- a/crypto/dsa/dsa_ameth.c
+++ b/crypto/dsa/dsa_ameth.c
@@ -254,7 +254,7 @@ static int int_dsa_size(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)
diff --git a/crypto/dsa/dsa_lib.c b/crypto/dsa/dsa_lib.c
index 9c001d7..42324c7 100644
--- a/crypto/dsa/dsa_lib.c
+++ b/crypto/dsa/dsa_lib.c
@@ -339,3 +339,8 @@ ENGINE *DSA_get0_engine(DSA *d)
{
return d->engine;
}
+
+int DSA_bits(const DSA *dsa)
+{
+ return BN_num_bits(dsa->p);
+}
diff --git a/doc/crypto/DSA_size.pod b/doc/crypto/DSA_size.pod
index 7c12146..16e6f3a 100644
--- a/doc/crypto/DSA_size.pod
+++ b/doc/crypto/DSA_size.pod
@@ -2,25 +2,31 @@
=head1 NAME
-DSA_size - get DSA signature size
+DSA_size, DSA_bits - get DSA signature size or key bits
=head1 SYNOPSIS
#include <openssl/dsa.h>
int DSA_size(const DSA *dsa);
+ int DSA_bits(const DSA *dsa);
=head1 DESCRIPTION
-This function returns the size of an ASN.1 encoded DSA signature in
-bytes. It can be used to determine how much memory must be allocated
-for a DSA signature.
+DSA_size() returns the maximum size of an ASN.1 encoded DSA signature
+for key B<dsa> in bytes. It can be used to determine how much memory must
+be allocated for a DSA signature.
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
-The size in bytes.
+DSA_size() returns the size in bytes.
+
+DSA_bits() returns the number of bits in the key.
=head1 SEE ALSO
diff --git a/include/openssl/dsa.h b/include/openssl/dsa.h
index cbc60e1..cb5fbc2 100644
--- a/include/openssl/dsa.h
+++ b/include/openssl/dsa.h
@@ -101,6 +101,7 @@ void DSA_free(DSA *r);
/* "up" the DSA object's reference count */
int DSA_up_ref(DSA *r);
int DSA_size(const DSA *);
+int DSA_bits(const DSA *d);
int DSA_security_bits(const DSA *d);
/* next 4 return -1 on error */
int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp);