PRELIMINARY
SYNOPSIS
        #include <sys/ tls.h>
        int *tls_query_connection_info (object ob)

DESCRIPTION
        If <ob> does not have a TLS connection or if the connection
        is still being set-up, or if <ob> is not interactive, the efun
        returns 0.

        If <ob> has a TLS connection, tls_query_connection_info()
        returns an array that contains some parameters of <ob>'s
        connection:

          int|string [TLS_CIPHER]: the cipher used
          int        [TLS_COMP]:   the compression used
          int        [TLS_KX]:     the key-exchange used
          int        [TLS_MAC]:    the digest algorithm used
          int|string [TLS_PROT]:   the protocol used

        To translate these numbers into strings, <tls.h> offers a
        number of macros:

          TLS_xxx_TABLE: a literal array of strings describing the
            value in question.
          TLS_xxx_NAME(x): a macro translating the numeric result
            value into a string.

          xxx: CIPHER, COMP, KX, MAC, PROT

HISTORY
        Introduced in LDMud 3.3.474 and following, backported to 3.2.11.

SEE ALSO
	tls_init_connection(E), tls_deinit_connection(E), tls_error(E),
	tls_query_connection_state(E), tls_available(E),
        tls_check_certificate(E), tls_refresh_certs(E)
