Add DSA_bits() function.
authorDr. Stephen Henson <steve@openssl.org>
Mon, 1 Aug 2016 17:37:03 +0000 (18:37 +0100)
committerDr. Stephen Henson <steve@openssl.org>
Mon, 1 Aug 2016 18:37:42 +0000 (19:37 +0100)
RT#4637

Reviewed-by: Rich Salz <rsalz@openssl.org>
crypto/dsa/dsa_ameth.c
crypto/dsa/dsa_lib.c
doc/crypto/DSA_size.pod
include/openssl/dsa.h

index c7573bf..f2f2cf5 100644 (file)
@@ -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)
index 9c001d7..42324c7 100644 (file)
@@ -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);
+}
index 7c12146..16e6f3a 100644 (file)
@@ -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
 
index cbc60e1..cb5fbc2 100644 (file)
@@ -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);