path() = string()
prf_random() = client_random | server_random
reason() = term()
ssl_imp() = new | old
ssl_option() = {versions, ssl_record:ssl_atom_version()}
| {verify, verify_type()}
| {verify_fun,
{function(), InitialUserState :: term()}}
| {fail_if_no_peer_cert, boolean()}
| {depth, integer()}
| {cert, Der :: binary()}
| {certfile, path()}
| {key, Der :: binary()}
| {keyfile, path()}
| {password, string()}
| {cacerts, [Der :: binary()]}
| {cacertfile, path()}
| {dh, Der :: binary()}
| {dhfile, path()}
| {user_lookup_fun,
{function(), InitialUserState :: term()}}
| {psk_identity, string()}
| {srp_identity, {string(), string()}}
| {ciphers, ciphers()}
| {ssl_imp, ssl_imp()}
| {reuse_sessions, boolean()}
| {reuse_session, function()}
| {hibernate_after, integer() | undefined}
| {next_protocols_advertised, [binary()]}
| {client_preferred_next_protocols,
binary(),
client | server,
[binary()]}
sslsocket() = #sslsocket{}
transport_option() =
{cb_info,
{CallbackModule :: atom(),
DataTag :: atom(),
ClosedTag :: atom(),
ErrTag :: atom()}}
verify_type() = verify_none | verify_peer