/Demo/pdist/security.py

http://unladen-swallow.googlecode.com/ · Python · 33 lines · 29 code · 4 blank · 0 comment · 8 complexity · 53280f0ef44a9e95dedfcfa4759cda61 MD5 · raw file

  1. class Security:
  2. def __init__(self):
  3. import os
  4. env = os.environ
  5. if env.has_key('PYTHON_KEYFILE'):
  6. keyfile = env['PYTHON_KEYFILE']
  7. else:
  8. keyfile = '.python_keyfile'
  9. if env.has_key('HOME'):
  10. keyfile = os.path.join(env['HOME'], keyfile)
  11. if not os.path.exists(keyfile):
  12. import sys
  13. for dir in sys.path:
  14. kf = os.path.join(dir, keyfile)
  15. if os.path.exists(kf):
  16. keyfile = kf
  17. break
  18. try:
  19. self._key = eval(open(keyfile).readline())
  20. except IOError:
  21. raise IOError, "python keyfile %s: cannot open" % keyfile
  22. def _generate_challenge(self):
  23. import random
  24. return random.randint(100, 100000)
  25. def _compare_challenge_response(self, challenge, response):
  26. return self._encode_challenge(challenge) == response
  27. def _encode_challenge(self, challenge):
  28. p, m = self._key
  29. return pow(long(challenge), p, m)