import typing as t
if t.TYPE_CHECKING:
from gssapi.raw.named_tuples import DisplayNameResult
from gssapi.raw.oids import OID
[docs]class Name:
"""
A GSSAPI Name
"""
def __new__(
cls,
cpy: t.Optional["Name"] = None,
) -> "Name": ...
[docs]def import_name(
name: bytes,
name_type: t.Optional["OID"] = None,
) -> Name:
"""Convert a string and a name type into a GSSAPI name.
This method takes a string name and a name type and converts
them into a GSSAPI :class:`Name`.
Args:
name (~gssapi.raw.names.Name): the string version of the name
name_type (~gssapi.raw.types.MechType): the type of this name
Returns:
Name: the GSSAPI version of the name
Raises:
~gssapi.exceptions.BadNameTypeError
~gssapi.exceptions.BadNameError
~gssapi.exceptions.BadMechanismError
"""
[docs]def display_name(
name: Name,
name_type: bool = True,
) -> "DisplayNameResult":
"""Convert a GSSAPI name into its components.
This method converts a GSSAPI :class:`Name` back into its
text form. If ``name_type`` is True, it also attempts to
retrieve the :class:`~gssapi.raw.types.NameType` of the name (otherwise the
returned name type will be ``None``).
Args:
name (~gssapi.raw.names.Name): the name in question
name_type (~gssapi.raw.types.MechType): whether or not to retrieve the
name type
Returns:
DisplayNameResult: the text part of the name and its type
Raises:
~gssapi.exceptions.BadNameError
"""
[docs]def compare_name(
name1: Name,
name2: Name,
) -> bool:
"""Check two GSSAPI names to see if they are the same.
This method compares two GSSAPI names, checking to
see if they are equivalent.
Args:
name1 (~gssapi.raw.names.Name): the first name to compare
name2 (~gssapi.raw.names.Name): the second name to compare
Returns:
bool: whether or not the names are equal
Raises:
~gssapi.exceptions.BadNameTypeError
~gssapi.exceptions.BadNameError
"""
[docs]def export_name(
name: Name,
) -> bytes:
"""Export a GSSAPI name.
This method "produces a canonical contigous string representation
of a mechanism name, suitable for direct comparison for use in
authorization functions".
The input name must be a valid GSSAPI mechanism name, as generated by
:func:`canonicalize_name` or
:func:`~gssapi.raw.sec_contexts.accept_sec_context`.
Args:
name (~gssapi.raw.names.Name): the name to export
Returns:
bytes: the exported name
Raises:
~gssapi.exceptions.MechanismNameRequiredError
~gssapi.exceptions.BadNameTypeError
~gssapi.exceptions.BadNameError
"""
[docs]def canonicalize_name(
name: Name,
mech: "OID",
) -> Name:
"""Canonicalize an arbitrary GSSAPI Name into a Mechanism Name
This method turns any GSSAPI name into a "mechanism name" --
a full form name specific to a mechanism.
Args:
name (~gssapi.raw.names.Name): the name to canonicalize
mech (~gssapi.raw.types.MechType): the mechanism type to use to
canonicalize the name
Returns:
Name: a canonicalized version of the input name
Raises:
~gssapi.exceptions.BadMechanismError
~gssapi.exceptions.BadNameTypeError
~gssapi.exceptions.BadNameError
"""
[docs]def duplicate_name(
name: Name,
) -> Name:
"""Duplicate a GSSAPI name.
Args:
name (~gssapi.raw.names.Name): the name to duplicate
Returns:
Name: a duplicate of the input name
Raises:
~gssapi.exceptions.BadNameError
"""
[docs]def release_name(
name: Name,
) -> None:
"""Release a GSSAPI name.
This method frees a GSSAPI :class:`Name`.
You probably won't have to do this.
Warning:
This method is deprecated. Names are
automatically freed by Python.
Args:
name (~gssapi.raw.names.Name): the name in question
Raises:
~gssapi.exceptions.BadNameError
"""