|
@@ -282,10 +282,18 @@ class BotConfig(object): |
|
|
self._setup_logging() |
|
|
self._setup_logging() |
|
|
if self.is_encrypted(): |
|
|
if self.is_encrypted(): |
|
|
if not self._decryption_cipher: |
|
|
if not self._decryption_cipher: |
|
|
|
|
|
try: |
|
|
|
|
|
blowfish_new = Blowfish.new |
|
|
|
|
|
hashpw = bcrypt.hashpw |
|
|
|
|
|
except ImportError: |
|
|
|
|
|
url1 = "http://www.mindrot.org/projects/py-bcrypt" |
|
|
|
|
|
url2 = "https://www.dlitz.net/software/pycrypto/" |
|
|
|
|
|
e = "Encryption requires the 'py-bcrypt' and 'pycrypto' packages: {0}, {1}" |
|
|
|
|
|
raise NoConfigError(e.format(url1, url2)) |
|
|
key = getpass("Enter key to decrypt bot passwords: ") |
|
|
key = getpass("Enter key to decrypt bot passwords: ") |
|
|
self._decryption_cipher = Blowfish.new(sha256(key).digest()) |
|
|
|
|
|
|
|
|
self._decryption_cipher = blowfish_new(sha256(key).digest()) |
|
|
signature = self.metadata["signature"] |
|
|
signature = self.metadata["signature"] |
|
|
if bcrypt.hashpw(key, signature) != signature: |
|
|
|
|
|
|
|
|
if hashpw(key, signature) != signature: |
|
|
raise RuntimeError("Incorrect password.") |
|
|
raise RuntimeError("Incorrect password.") |
|
|
for node, nodes in self._decryptable_nodes: |
|
|
for node, nodes in self._decryptable_nodes: |
|
|
self._decrypt(node, nodes) |
|
|
self._decrypt(node, nodes) |
|
|