aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Twisted/py3/twisted/conch/error.py
blob: a923b9a4c4a4b01cf50fe9299d1deab66e4b69cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.

"""
An error to represent bad things happening in Conch.

Maintainer: Paul Swartz
"""


from twisted.cred.error import UnauthorizedLogin


class ConchError(Exception):
    def __init__(self, value, data=None):
        Exception.__init__(self, value, data)
        self.value = value
        self.data = data


class NotEnoughAuthentication(Exception):
    """
    This is thrown if the authentication is valid, but is not enough to
    successfully verify the user.  i.e. don't retry this type of
    authentication, try another one.
    """


class ValidPublicKey(UnauthorizedLogin):
    """
    Raised by public key checkers when they receive public key credentials
    that don't contain a signature at all, but are valid in every other way.
    (e.g. the public key matches one in the user's authorized_keys file).

    Protocol code (eg
    L{SSHUserAuthServer<twisted.conch.ssh.userauth.SSHUserAuthServer>}) which
    attempts to log in using
    L{ISSHPrivateKey<twisted.cred.credentials.ISSHPrivateKey>} credentials
    should be prepared to handle a failure of this type by telling the user to
    re-authenticate using the same key and to include a signature with the new
    attempt.

    See U{http://www.ietf.org/rfc/rfc4252.txt} section 7 for more details.
    """


class IgnoreAuthentication(Exception):
    """
    This is thrown to let the UserAuthServer know it doesn't need to handle the
    authentication anymore.
    """


class MissingKeyStoreError(Exception):
    """
    Raised if an SSHAgentServer starts receiving data without its factory
    providing a keys dict on which to read/write key data.
    """


class UserRejectedKey(Exception):
    """
    The user interactively rejected a key.
    """


class InvalidEntry(Exception):
    """
    An entry in a known_hosts file could not be interpreted as a valid entry.
    """


class HostKeyChanged(Exception):
    """
    The host key of a remote host has changed.

    @ivar offendingEntry: The entry which contains the persistent host key that
    disagrees with the given host key.

    @type offendingEntry: L{twisted.conch.interfaces.IKnownHostEntry}

    @ivar path: a reference to the known_hosts file that the offending entry
    was loaded from

    @type path: L{twisted.python.filepath.FilePath}

    @ivar lineno: The line number of the offending entry in the given path.

    @type lineno: L{int}
    """

    def __init__(self, offendingEntry, path, lineno):
        Exception.__init__(self)
        self.offendingEntry = offendingEntry
        self.path = path
        self.lineno = lineno