]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Ignore the extra EVP_PKEY_get_bn_param() failures
authorOndřej Surý <ondrej@isc.org>
Mon, 9 Jan 2023 20:50:01 +0000 (21:50 +0100)
committerOndřej Surý <ondrej@isc.org>
Mon, 9 Jan 2023 21:10:17 +0000 (22:10 +0100)
In opensslrsa_components_get(), ignore the extra EVP_PKEY_get_bn_param()
return codes as RSA key might not have all those components.

lib/dns/openssl_link.c
lib/dns/opensslrsa_link.c

index c10a978cefce073a74eb614f5976e347427a6e0f..3ec31330daeb29f6e6434631aace2652483d8efd 100644 (file)
@@ -290,8 +290,7 @@ dst__openssl_fromlabel_provider(int key_base_id, const char *engine,
 
        ctx = OSSL_STORE_open(label, NULL, NULL, NULL, NULL);
        if (!ctx) {
-               DST_RET(dst__openssl_toresult2("OSSL_STORE_open_ex",
-                                              DST_R_OPENSSLFAILURE));
+               DST_RET(dst__openssl_toresult(DST_R_OPENSSLFAILURE));
        }
 
        while (!OSSL_STORE_eof(ctx)) {
index 2d657993f7678b2bd020bbf53fce11d16090360e..e143df0276e572d01270a00c2b7c1038554ef45d 100644 (file)
@@ -65,51 +65,26 @@ opensslrsa_components_get(const dst_key_t *key, rsa_components_t *c,
        if (EVP_PKEY_get_bn_param(pub, OSSL_PKEY_PARAM_RSA_E,
                                  (BIGNUM **)&c->e) == 1)
        {
-               isc_result_t ret = ISC_R_UNSET;
-
                c->bnfree = true;
-               if (EVP_PKEY_get_bn_param(pub, OSSL_PKEY_PARAM_RSA_N,
-                                         (BIGNUM **)&c->n) != 1)
-               {
-                       DST_RET(dst__openssl_toresult(DST_R_OPENSSLFAILURE));
-               }
+               (void)EVP_PKEY_get_bn_param(pub, OSSL_PKEY_PARAM_RSA_N,
+                                           (BIGNUM **)&c->n);
                if (!private) {
                        return (ISC_R_SUCCESS);
                }
-               if (EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_D,
-                                         (BIGNUM **)&c->d) != 1)
-               {
-                       DST_RET(dst__openssl_toresult(DST_R_OPENSSLFAILURE));
-               }
-               if (EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_FACTOR1,
-                                         (BIGNUM **)&c->p) != 1)
-               {
-                       DST_RET(dst__openssl_toresult(DST_R_OPENSSLFAILURE));
-               }
-               if (EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_FACTOR2,
-                                         (BIGNUM **)&c->q) != 1)
-               {
-                       DST_RET(dst__openssl_toresult(DST_R_OPENSSLFAILURE));
-               }
-               if (EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_EXPONENT1,
-                                         (BIGNUM **)&c->dmp1) != 1)
-               {
-                       DST_RET(dst__openssl_toresult(DST_R_OPENSSLFAILURE));
-               }
-               if (EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_EXPONENT2,
-                                         (BIGNUM **)&c->dmq1) != 1)
-               {
-                       DST_RET(dst__openssl_toresult(DST_R_OPENSSLFAILURE));
-               }
-               if (EVP_PKEY_get_bn_param(priv,
-                                         OSSL_PKEY_PARAM_RSA_COEFFICIENT1,
-                                         (BIGNUM **)&c->iqmp) != 1)
-               {
-                       DST_RET(dst__openssl_toresult(DST_R_OPENSSLFAILURE));
-               }
+               (void)EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_D,
+                                           (BIGNUM **)&c->d);
+               (void)EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_FACTOR1,
+                                           (BIGNUM **)&c->p);
+               (void)EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_FACTOR2,
+                                           (BIGNUM **)&c->q);
+               (void)EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_EXPONENT1,
+                                           (BIGNUM **)&c->dmp1);
+               (void)EVP_PKEY_get_bn_param(priv, OSSL_PKEY_PARAM_RSA_EXPONENT2,
+                                           (BIGNUM **)&c->dmq1);
+               (void)EVP_PKEY_get_bn_param(priv,
+                                           OSSL_PKEY_PARAM_RSA_COEFFICIENT1,
+                                           (BIGNUM **)&c->iqmp);
                return (ISC_R_SUCCESS);
-       err:
-               return (ret);
        }
 #endif
 #if OPENSSL_VERSION_NUMBER < 0x30000000L || OPENSSL_API_LEVEL < 30000