IMPLEMENT_PEM_provided_write_body_main(pkey, bio);
legacy:
- if (x->ameth == NULL || x->ameth->priv_encode != NULL)
+ if (x != NULL && (x->ameth == NULL || x->ameth->priv_encode != NULL))
return PEM_write_bio_PKCS8PrivateKey(out, x, enc,
(const char *)kstr, klen, cb, u);
return PEM_write_bio_PrivateKey_traditional(out, x, enc, kstr, klen, cb, u);
EVP_PKEY *copy = NULL;
int ret;
+ if (x == NULL)
+ return 0;
+
if (evp_pkey_is_assigned(x)
&& evp_pkey_is_provided(x)
&& evp_pkey_copy_downgraded(©, x))
/* Unencrypted private key in PEM form */
|| !TEST_true(PEM_write_bio_PrivateKey(membio, pk,
NULL, NULL, 0, NULL, NULL))
- || !TEST_true(compare_with_file(alg, PRIV_PEM, membio)))
+ || !TEST_true(compare_with_file(alg, PRIV_PEM, membio))
+ /* NULL key */
+ || !TEST_false(PEM_write_bio_PrivateKey(membio, NULL,
+ NULL, NULL, 0, NULL, NULL))
+ || !TEST_false(PEM_write_bio_PrivateKey_traditional(membio, NULL,
+ NULL, NULL, 0, NULL, NULL)))
goto err;
ret = 1;