[#SSL_custom_ext_parse_cb_ex]
= SSL&lowbar;custom&lowbar;ext&lowbar;parse&lowbar;cb&lowbar;ex
:mrdocs:

Parse a received custom TLS extension (context&hyphen;aware form)&period;

== Synopsis

Declared in `&lt;openssl&sol;ssl&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
typedef int(* SSL&lowbar;custom&lowbar;ext&lowbar;parse&lowbar;cb&lowbar;ex)(xref:SSL.adoc[SSL]*, unsigned int, unsigned int, unsigned char const*, size&lowbar;t, xref:X509.adoc[X509]*, size&lowbar;t, int*, void*);
----

== Return Value

1 if the extension is acceptable&semi; 0 or negative to abort with `al&period;`

== Parameters

[cols="1,4"]
|===
| Name| Description
| *s*
| SSL connection parsing the message&period;
| *ext&lowbar;type*
| TLS extension type being parsed&period;
| *context*
| Bitmask identifying the message and conditions for this call&period;
| *in*
| Extension payload bytes (temporary&semi; invalid after return)&period;
| *inlen*
| Length of `in` in bytes&period;
| *x*
| Current certificate when parsing a Certificate message, else NULL&period;
| *chainidx*
| Index of `x` in the Certificate message (0 &equals; end entity)&period;
| *al*
| On fatal error, set to the TLS alert to send&period;
| *parse&lowbar;arg*
| Application argument registered with the extension&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
