factor error classes into a common file
This commit is contained in:
		
							parent
							
								
									8f1ce1f835
								
							
						
					
					
						commit
						46f1fd2cd0
					
				|  | @ -1,5 +1,5 @@ | ||||||
| from __future__ import print_function | from __future__ import print_function | ||||||
| import os, sys, time, re, requests, json, textwrap | import os, sys, time, re, requests, json | ||||||
| from binascii import hexlify, unhexlify | from binascii import hexlify, unhexlify | ||||||
| from spake2 import SPAKE2_Symmetric | from spake2 import SPAKE2_Symmetric | ||||||
| from nacl.secret import SecretBox | from nacl.secret import SecretBox | ||||||
|  | @ -8,32 +8,13 @@ from nacl import utils | ||||||
| from .eventsource import EventSourceFollower | from .eventsource import EventSourceFollower | ||||||
| from .. import __version__ | from .. import __version__ | ||||||
| from .. import codes | from .. import codes | ||||||
| from ..errors import ServerError | from ..errors import (ServerError, Timeout, WrongPasswordError, | ||||||
|  |                       ReflectionAttack, UsageError) | ||||||
| from ..util.hkdf import HKDF | from ..util.hkdf import HKDF | ||||||
| 
 | 
 | ||||||
| SECOND = 1 | SECOND = 1 | ||||||
| MINUTE = 60*SECOND | MINUTE = 60*SECOND | ||||||
| 
 | 
 | ||||||
| class Timeout(Exception): |  | ||||||
|     pass |  | ||||||
| 
 |  | ||||||
| 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 |  | ||||||
|     def explain(self): |  | ||||||
|         return textwrap.dedent(self.__doc__) |  | ||||||
| 
 |  | ||||||
| class ReflectionAttack(Exception): |  | ||||||
|     """An attacker (or bug) reflected our outgoing message back to us.""" |  | ||||||
| 
 |  | ||||||
| class UsageError(Exception): |  | ||||||
|     """The programmer did something wrong.""" |  | ||||||
| 
 |  | ||||||
| # relay URLs are: | # relay URLs are: | ||||||
| # GET /list                                         -> {channel-ids: [INT..]} | # GET /list                                         -> {channel-ids: [INT..]} | ||||||
| # POST /allocate/SIDE                               -> {channel-id: INT} | # POST /allocate/SIDE                               -> {channel-id: INT} | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import functools | import functools, textwrap | ||||||
| 
 | 
 | ||||||
| class ServerError(Exception): | class ServerError(Exception): | ||||||
|     def __init__(self, message, relay): |     def __init__(self, message, relay): | ||||||
|  | @ -16,3 +16,23 @@ def handle_server_error(func): | ||||||
|             print("Server error (from %s):\n%s" % (e.relay, e.message)) |             print("Server error (from %s):\n%s" % (e.relay, e.message)) | ||||||
|             return 1 |             return 1 | ||||||
|     return _wrap |     return _wrap | ||||||
|  | 
 | ||||||
|  | class Timeout(Exception): | ||||||
|  |     pass | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
|  |     def explain(self): | ||||||
|  |         return textwrap.dedent(self.__doc__) | ||||||
|  | 
 | ||||||
|  | class ReflectionAttack(Exception): | ||||||
|  |     """An attacker (or bug) reflected our outgoing message back to us.""" | ||||||
|  | 
 | ||||||
|  | class UsageError(Exception): | ||||||
|  |     """The programmer did something wrong.""" | ||||||
|  |  | ||||||
|  | @ -13,20 +13,10 @@ from spake2 import SPAKE2_Symmetric | ||||||
| from .eventsource_twisted import ReconnectingEventSource | from .eventsource_twisted import ReconnectingEventSource | ||||||
| from .. import __version__ | from .. import __version__ | ||||||
| from .. import codes | from .. import codes | ||||||
| from ..errors import ServerError | from ..errors import (ServerError, WrongPasswordError, | ||||||
|  |                       ReflectionAttack, UsageError) | ||||||
| from ..util.hkdf import HKDF | from ..util.hkdf import HKDF | ||||||
| 
 | 
 | ||||||
| class WrongPasswordError(Exception): |  | ||||||
|     """ |  | ||||||
|     Key confirmation failed. |  | ||||||
|     """ |  | ||||||
| 
 |  | ||||||
| class ReflectionAttack(Exception): |  | ||||||
|     """An attacker (or bug) reflected our outgoing message back to us.""" |  | ||||||
| 
 |  | ||||||
| class UsageError(Exception): |  | ||||||
|     """The programmer did something wrong.""" |  | ||||||
| 
 |  | ||||||
| @implementer(IBodyProducer) | @implementer(IBodyProducer) | ||||||
| class DataProducer: | class DataProducer: | ||||||
|     def __init__(self, data): |     def __init__(self, data): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user