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;
}
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)) {