Tim Henderson wrote:
Hi,So this may have been asked before but i haven't found the answer by googling so far. My situation is this: I want this structure for my code: @overloaded def sign_auth(secret, salt, auth_normalized): return __sign_auth(saltedhash_bin(secret, salt), auth_normalized) @sign_auth.register(str, str) def sign_auth(secret_hash_normalized, auth_normalized): return __sign_auth(qcrypt.denormalize(secret_hash_normalized), auth_normalized) def __sign_auth(secret_hash_bin, auth_normalized): auth = qcrypt.denormalize(auth_normalized) aes = AES.new(secret_hash_bin, AES.MODE_CBC) plaintext = aes.decrypt(auth) ciphertext = qcrypt.normalize(xor_in_pi(plaintext)) if debug: print '\n------sign_auth------' print qcrypt.normalize(secret_hash_bin) print qcrypt.normalize(plaintext) print ciphertext print '-----sign_auth-------\n' return ciphertext I am using the overloading module from: http://svn.python.org/view/sandbox/trunk/overload/overloading.py?rev=43727&view=log However it doesn't actually support this functionality. Does any one know of a decorator that does this? It would be really nice to have a unified interface into the __sign_auth function for the two different use cases.
Are you aware that you can do this kind of thing yourself, without using a module/decorator.
def sign_auth(*args): if len(args) == 3: secret, salt, auth_normalized = args return __sign_auth(saltedhash_bin(secret, salt), auth_normalized) elif len(args) == 2: secret_hash_normalized, auth_normalized = args return __sign_auth(qcrypt.denormalize(secret_hash_normalized), auth_normalized) The checks could be more involved, perhaps checking not jsut the nuimber of args, but their types, and even their values, before calling __sign_auth(...). Gary Herron
Tim Henderson -- http://mail.python.org/mailman/listinfo/python-list
-- http://mail.python.org/mailman/listinfo/python-list
