]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
pk: exercise decrypt2 in PCT
authorDaiki Ueno <ueno@gnu.org>
Wed, 12 Feb 2025 03:13:47 +0000 (12:13 +0900)
committerDaiki Ueno <ueno@gnu.org>
Tue, 29 Jul 2025 13:18:01 +0000 (22:18 +0900)
Signed-off-by: Daiki Ueno <ueno@gnu.org>
lib/nettle/pk.c

index e2eb6f43f5b8a30189960c4552eebd6de7bca45e..ed52d6383e2dae15e18499220941edb707eef35b 100644 (file)
@@ -1368,7 +1368,8 @@ static int _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo,
 
        FAIL_IF_LIB_ERROR;
 
-       if (algo != GNUTLS_PK_RSA || plaintext == NULL) {
+       if ((algo != GNUTLS_PK_RSA && algo != GNUTLS_PK_RSA_OAEP) ||
+           plaintext == NULL) {
                ret = gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
                goto fail;
        }
@@ -3304,6 +3305,16 @@ static int pct_test(gnutls_pk_algorithm_t algo,
                      memcmp(tmp.data, ddata.data, tmp.size) == 0)) {
                        ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR);
                }
+               if (ret == 0 &&
+                   _gnutls_pk_decrypt2(algo, &sig, tmp.data, tmp.size, params,
+                                       &spki) < 0) {
+                       ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR);
+               }
+               if (ret == 0 &&
+                   !(tmp.size == ddata.size &&
+                     memcmp(tmp.data, ddata.data, tmp.size) == 0)) {
+                       ret = gnutls_assert_val(GNUTLS_E_PK_GENERATION_ERROR);
+               }
 
                if (algo == GNUTLS_PK_RSA) {
                        if (unlikely(gnutls_fips140_pop_context() < 0)) {