diff options
Diffstat (limited to 'crypto/pem/pem_local.h')
-rw-r--r-- | crypto/pem/pem_local.h | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/crypto/pem/pem_local.h b/crypto/pem/pem_local.h index 728fefb33a..3f54644e89 100644 --- a/crypto/pem/pem_local.h +++ b/crypto/pem/pem_local.h @@ -44,12 +44,12 @@ /* Alternative IMPLEMENT macros for provided encoders */ -# define IMPLEMENT_PEM_provided_write_body_vars(type, asn1) \ +# define IMPLEMENT_PEM_provided_write_body_vars(type, asn1, pq) \ int ret = 0; \ OSSL_ENCODER_CTX *ctx = \ OSSL_ENCODER_CTX_new_by_##type(x, PEM_SELECTION_##asn1, \ "PEM", PEM_STRUCTURE_##asn1, \ - NULL); \ + (pq)); \ \ if (OSSL_ENCODER_CTX_get_num_encoders(ctx) == 0) { \ OSSL_ENCODER_CTX_free(ctx); \ @@ -95,14 +95,21 @@ # define IMPLEMENT_PEM_provided_write_body_fallback_cb(str, asn1, \ writename) \ legacy: \ - return PEM_ASN1_##writename((i2d_of_void *)i2d_##asn1, str, out, \ - x, enc, kstr, klen, cb, u) + return PEM_ASN1_##writename##((i2d_of_void *)i2d_##asn1, str, out, \ + x, enc, kstr, klen, cb, u) # define IMPLEMENT_PEM_provided_write_to(name, type, str, asn1, \ OUTTYPE, outtype, writename) \ PEM_write_fnsig(name, type, OUTTYPE, writename) \ { \ - IMPLEMENT_PEM_provided_write_body_vars(type, asn1); \ + IMPLEMENT_PEM_provided_write_body_vars(type, asn1, NULL); \ + IMPLEMENT_PEM_provided_write_body_main(type, outtype); \ + IMPLEMENT_PEM_provided_write_body_fallback(str, asn1, \ + writename); \ + } \ + PEM_write_ex_fnsig(name, type, OUTTYPE, writename) \ + { \ + IMPLEMENT_PEM_provided_write_body_vars(type, asn1, propq); \ IMPLEMENT_PEM_provided_write_body_main(type, outtype); \ IMPLEMENT_PEM_provided_write_body_fallback(str, asn1, \ writename); \ @@ -113,11 +120,19 @@ OUTTYPE, outtype, writename) \ PEM_write_cb_fnsig(name, type, OUTTYPE, writename) \ { \ - IMPLEMENT_PEM_provided_write_body_vars(type, asn1); \ + IMPLEMENT_PEM_provided_write_body_vars(type, asn1, NULL); \ IMPLEMENT_PEM_provided_write_body_pass(); \ IMPLEMENT_PEM_provided_write_body_main(type, outtype); \ IMPLEMENT_PEM_provided_write_body_fallback_cb(str, asn1, \ writename); \ + } \ + PEM_write_ex_cb_fnsig(name, type, OUTTYPE, writename) \ + { \ + IMPLEMENT_PEM_provided_write_body_vars(type, asn1, propq); \ + IMPLEMENT_PEM_provided_write_body_pass(); \ + IMPLEMENT_PEM_provided_write_body_main(type, outtype); \ + IMPLEMENT_PEM_provided_write_body_fallback(str, asn1, \ + writename); \ } # ifdef OPENSSL_NO_STDIO |