diff --git a/irc/commands/crypt.py b/irc/commands/crypt.py new file mode 100644 index 0000000..29fcd21 --- /dev/null +++ b/irc/commands/crypt.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- + +# Cryptography functions (hashing and cyphers). + +import hashlib + +from irc.base_command import BaseCommand + +class Calc(BaseCommand): + def get_hooks(self): + return ["msg"] + + def get_help(self, command): + if command == "hash": + return ("Return the hash of a string using a given algorithm, " + + "e.g. '!hash sha512 Hello world!'.") + else: + return ("{0} a string with a given key using a given algorithm, " + + "e.g. '!{1} blowfish some_key Hello world!'.").format( + command.capitalize(), command) + + def check(self, data): + if data.is_command and data.command in ["hash", "encrypt", "decrypt"]: + return True + return False + + def process(self, data): + if not data.args: + self.connection.reply(data, "what do you want me to do?") + return + + if data.command == "hash": + algo = data.args[0] + if algo in hashlib.algorithms: + string = ' '.join(data.args[1:]) + result = eval("hashlib.{0}(string)".format(algo)).hexdigest() + self.connection.reply(data, result) + else: + self.connection.reply(data, "unknown algorithm: {0}".format( + algo)) + + else: + self.connection.reply(data, "not implemented yet!")