magic-wormhole/src/wormhole/errors.py

57 lines
1.6 KiB
Python
Raw Normal View History

2016-05-26 22:36:44 +00:00
import functools
class ServerError(Exception):
def __init__(self, message, relay):
self.message = message
self.relay = relay
def __str__(self):
return self.message
def handle_server_error(func):
@functools.wraps(func)
def _wrap(*args, **kwargs):
try:
return func(*args, **kwargs)
except ServerError as e:
print("Server error (from %s):\n%s" % (e.relay, e.message))
return 1
return _wrap
class Timeout(Exception):
pass
2016-05-23 07:14:39 +00:00
class WelcomeError(Exception):
2016-05-26 22:36:44 +00:00
"""
The relay server told us to signal an error, probably because our version
is too old to possibly work. The server said:"""
pass
2016-05-23 07:14:39 +00:00
class WrongPasswordError(Exception):
"""
Key confirmation failed. Either you or your correspondent typed the code
wrong, or a would-be man-in-the-middle attacker guessed incorrectly. You
could try again, giving both your correspondent and the attacker another
chance.
"""
# or the data blob was corrupted, and that's why decrypt failed
2016-05-26 22:36:44 +00:00
pass
2016-06-02 21:07:27 +00:00
class KeyFormatError(Exception):
"""
The key you entered contains spaces. Magic-wormhole expects keys to be
separated by dashes. Please reenter the key you were given separating the
words with dashes.
2016-06-02 21:07:27 +00:00
"""
class ReflectionAttack(Exception):
"""An attacker (or bug) reflected our outgoing message back to us."""
class UsageError(Exception):
"""The programmer did something wrong."""
class WormholeClosedError(UsageError):
"""API calls may not be made after close() is called."""
class TransferError(Exception):
"""Something bad happened and the transfer failed."""