summaryrefslogtreecommitdiffstats
path: root/crypto/pem/pem_local.h
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/pem/pem_local.h')
-rw-r--r--crypto/pem/pem_local.h27
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