RSA: add simple getters for commonly used struct members
authorDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Sun, 27 May 2018 07:01:28 +0000 (09:01 +0200)
committerDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Mon, 28 May 2018 17:11:23 +0000 (19:11 +0200)
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6290)

crypto/rsa/rsa_lib.c
doc/man3/RSA_get0_key.pod
include/openssl/rsa.h
util/libcrypto.num

index 133ba21..0974aa6 100644 (file)
@@ -402,6 +402,46 @@ int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[],
     return 1;
 }
 
+const BIGNUM *RSA_get0_n(const RSA *r)
+{
+    return r->n;
+}
+
+const BIGNUM *RSA_get0_e(const RSA *r)
+{
+    return r->e;
+}
+
+const BIGNUM *RSA_get0_d(const RSA *r)
+{
+    return r->d;
+}
+
+const BIGNUM *RSA_get0_p(const RSA *r)
+{
+    return r->p;
+}
+
+const BIGNUM *RSA_get0_q(const RSA *r)
+{
+    return r->q;
+}
+
+const BIGNUM *RSA_get0_dmp1(const RSA *r)
+{
+    return r->dmp1;
+}
+
+const BIGNUM *RSA_get0_dmq1(const RSA *r)
+{
+    return r->dmq1;
+}
+
+const BIGNUM *RSA_get0_iqmp(const RSA *r)
+{
+    return r->iqmp;
+}
+
 void RSA_clear_flags(RSA *r, int flags)
 {
     r->flags &= ~flags;
index 6e6576e..ba25f32 100644 (file)
@@ -3,7 +3,10 @@
 =head1 NAME
 
 RSA_set0_key, RSA_set0_factors, RSA_set0_crt_params, RSA_get0_key,
-RSA_get0_factors, RSA_get0_crt_params, RSA_clear_flags,
+RSA_get0_factors, RSA_get0_crt_params,
+RSA_get0_n, RSA_get0_e, RSA_get0_d, RSA_get0_p, RSA_get0_q,
+RSA_get0_dmp1, RSA_get0_dmq1, RSA_get0_iqmp,
+RSA_clear_flags,
 RSA_test_flags, RSA_set_flags, RSA_get0_engine, RSA_get_multi_prime_extra_count,
 RSA_get0_multi_prime_factors, RSA_get0_multi_prime_crt_params,
 RSA_set0_multi_prime_params, RSA_get_version
@@ -22,6 +25,14 @@ RSA_set0_multi_prime_params, RSA_get_version
  void RSA_get0_crt_params(const RSA *r,
                           const BIGNUM **dmp1, const BIGNUM **dmq1,
                           const BIGNUM **iqmp);
+ const BIGNUM *RSA_get0_n(const RSA *d);
+ const BIGNUM *RSA_get0_e(const RSA *d);
+ const BIGNUM *RSA_get0_d(const RSA *d);
+ const BIGNUM *RSA_get0_p(const RSA *d);
+ const BIGNUM *RSA_get0_q(const RSA *d);
+ const BIGNUM *RSA_get0_dmp1(const RSA *r);
+ const BIGNUM *RSA_get0_dmq1(const RSA *r);
+ const BIGNUM *RSA_get0_iqmp(const RSA *r);
  void RSA_clear_flags(RSA *r, int flags);
  int RSA_test_flags(const RSA *r, int flags);
  void RSA_set_flags(RSA *r, int flags);
@@ -82,6 +93,11 @@ return values are stored in an array of B<BIGNUM *>. RSA_set0_multi_prime_params
 sets a collect of multi-prime 'triplet' members (prime, exponent and coefficient)
 into an RSA object.
 
+Any of the values B<n>, B<e>, B<d>, B<p>, B<q>, B<dmp1>, B<dmq1>, and B<iqmp> can also be
+retrieved separately by the corresponding function
+RSA_get0_n(), RSA_get0_e(), RSA_get0_d(), RSA_get0_p(), RSA_get0_q(),
+RSA_get0_dmp1(), RSA_get0_dmq1(), and RSA_get0_iqmp(), respectively.
+
 RSA_set_flags() sets the flags in the B<flags> parameter on the RSA
 object. Multiple flags can be passed in one go (bitwise ORed together).
 Any flags that are already set are left set. RSA_test_flags() tests to
@@ -116,6 +132,10 @@ triplets in RSA object B<r> and assign the new set of triplets into it.
 RSA_set0_key(), RSA_set0_factors(), RSA_set0_crt_params() and
 RSA_set0_multi_prime_params() return 1 on success or 0 on failure.
 
+RSA_get0_n(), RSA_get0_e(), RSA_get0_d(), RSA_get0_p(), RSA_get0_q(),
+RSA_get0_dmp1(), RSA_get0_dmq1(), and RSA_get0_iqmp()
+return the respective value.
+
 RSA_get0_multi_prime_factors() and RSA_get0_multi_prime_crt_params() return
 1 on success or 0 on failure.
 
index 05e4f26..a611b6a 100644 (file)
@@ -216,6 +216,14 @@ void RSA_get0_crt_params(const RSA *r,
                          const BIGNUM **iqmp);
 int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[],
                                     const BIGNUM *coeffs[]);
+const BIGNUM *RSA_get0_n(const RSA *d);
+const BIGNUM *RSA_get0_e(const RSA *d);
+const BIGNUM *RSA_get0_d(const RSA *d);
+const BIGNUM *RSA_get0_p(const RSA *d);
+const BIGNUM *RSA_get0_q(const RSA *d);
+const BIGNUM *RSA_get0_dmp1(const RSA *r);
+const BIGNUM *RSA_get0_dmq1(const RSA *r);
+const BIGNUM *RSA_get0_iqmp(const RSA *r);
 void RSA_clear_flags(RSA *r, int flags);
 int RSA_test_flags(const RSA *r, int flags);
 void RSA_set_flags(RSA *r, int flags);
index a7f50a2..bab45dd 100644 (file)
@@ -4538,3 +4538,11 @@ DSA_get0_pub_key                        4479     1_1_1   EXIST::FUNCTION:DSA
 DSA_get0_q                              4480   1_1_1   EXIST::FUNCTION:DSA
 DSA_get0_p                              4481   1_1_1   EXIST::FUNCTION:DSA
 DSA_get0_g                              4482   1_1_1   EXIST::FUNCTION:DSA
+RSA_get0_dmp1                           4483   1_1_1   EXIST::FUNCTION:RSA
+RSA_get0_d                              4484   1_1_1   EXIST::FUNCTION:RSA
+RSA_get0_n                              4485   1_1_1   EXIST::FUNCTION:RSA
+RSA_get0_dmq1                           4486   1_1_1   EXIST::FUNCTION:RSA
+RSA_get0_e                              4487   1_1_1   EXIST::FUNCTION:RSA
+RSA_get0_q                              4488   1_1_1   EXIST::FUNCTION:RSA
+RSA_get0_p                              4489   1_1_1   EXIST::FUNCTION:RSA
+RSA_get0_iqmp                           4490   1_1_1   EXIST::FUNCTION:RSA