Function: gnutls-available-p
gnutls-available-p is a function defined in gnutls.c.
Signature
(gnutls-available-p)
Documentation
Return list of capabilities if GnuTLS is available in this instance of Emacs.
...if supported : then...
GnuTLS 3 or higher : the list will contain gnutls3.
GnuTLS MACs : the list will contain macs.
GnuTLS digests : the list will contain digests.
GnuTLS symmetric ciphers: the list will contain ciphers.
GnuTLS AEAD ciphers : the list will contain AEAD-ciphers.
%DUMBFW : the list will contain ClientHello\ Padding.
Any GnuTLS extension with ID up to 100
: the list will contain its name.
Probably introduced at or before Emacs version 24.1.
Source Code
// Defined in /usr/src/emacs/src/gnutls.c
{
Lisp_Object capabilities = Qnil;
#ifdef HAVE_GNUTLS
# ifdef WINDOWSNT
Lisp_Object found = Fassq (Qgnutls, Vlibrary_cache);
if (CONSP (found))
return XCDR (found);
/* Load the GnuTLS DLL and find exported functions. The external
library cache is updated after the capabilities have been
determined. */
if (!init_gnutls_functions ())
return Qnil;
# endif /* WINDOWSNT */
capabilities = Fcons (Qgnutls, capabilities);
# ifdef HAVE_GNUTLS_EXT__DUMBFW
capabilities = Fcons (QClientHello_Padding, capabilities);
# endif
# ifdef HAVE_GNUTLS3
capabilities = Fcons (Qgnutls3, capabilities);
capabilities = Fcons (Qdigests, capabilities);
capabilities = Fcons (Qciphers, capabilities);
# ifdef HAVE_GNUTLS_AEAD
capabilities = Fcons (QAEAD_ciphers, capabilities);
# endif
capabilities = Fcons (Qmacs, capabilities);
# ifdef HAVE_GNUTLS_EXT_GET_NAME
for (unsigned int ext=0; ext < 100; ext++)
{
const char* name = gnutls_ext_get_name(ext);
if (name != NULL)
{
Lisp_Object cap = intern (name);
if (NILP (Fmemq (cap, capabilities)))
capabilities = Fcons (cap, capabilities);
}
}
# endif
# endif /* HAVE_GNUTLS3 */
# ifdef WINDOWSNT
Vlibrary_cache = Fcons (Fcons (Qgnutls, capabilities), Vlibrary_cache);
# endif /* WINDOWSNT */
#endif /* HAVE_GNUTLS */
return capabilities;
}