def get_mechs_available():
        """
        Returns a list of auth mechanisms that are available to the local
        GSSAPI instance. Because we are interacting with Windows, we only
        care if SPNEGO, Kerberos and NTLM are available where NTLM is the
        only wildcard that may not be available by default.

        The only NTLM implementation that works properly is gss-ntlmssp and
        part of this test is to verify the gss-ntlmssp OID
        GSS_NTLMSSP_RESET_CRYPTO_OID_LENGTH is implemented which is required
        for SPNEGO and NTLM to work properly.

        :return: list - A list of supported mechs available in the installed
            version of GSSAPI
        """
        ntlm_oid = GSSAPIContext._AUTH_MECHANISMS['ntlm']
        ntlm_mech = gssapi.OID.from_int_seq(ntlm_oid)
        # GSS_NTLMSSP_RESET_CRYPTO_OID_LENGTH
        # github.com/simo5/gss-ntlmssp/blob/master/src/gssapi_ntlmssp.h#L68
        reset_mech = gssapi.OID.from_int_seq("1.3.6.1.4.1.7165.655.1.3")

        try:
            # we don't actually care about the account used here so just use
            # a random username and password
            ntlm_context = GSSAPIContext._get_security_context(
                gssapi.NameType.user,
                ntlm_mech,
                "http@server",
                "username",
                "password"
            )
            ntlm_context.step()
            set_sec_context_option(reset_mech, context=ntlm_context,
                                   value=b"\x00" * 4)
        except gssapi.exceptions.GSSError as exc:
            # failed to init NTLM and verify gss-ntlmssp is available, this
            # means NTLM is either not available or won't work
            # (not gss-ntlmssp) so we return kerberos as the only available
            # mechanism for the GSSAPI Context
            log.debug("Failed to init test NTLM context with GSSAPI: %s"
                      % str(exc))
            return ['kerberos']
        else:
            return ['auto', 'kerberos', 'ntlm']
Returns a list of auth mechanisms that are available to the local
        GSSAPI instance. Because we are interacting with Windows, we only
        care if SPNEGO, Kerberos and NTLM are available where NTLM is the
        only wildcard that may not be available by default.

        The only NTLM implementation that works properly is gss-ntlmssp and
        part of this test is to verify the gss-ntlmssp OID
        GSS_NTLMSSP_RESET_CRYPTO_OID_LENGTH is implemented which is required
        for SPNEGO and NTLM to work properly.

        :return: list - A list of supported mechs available in the installed
            version of GSSAPI