blob: 0ffd511a079d5a0895d8207d2e319da1b621b16f [file] [log] [blame]
Guido van Rossum37a29111995-06-21 00:55:59 +00001class Security:
2
3 def __init__(self):
4 import os
5 env = os.environ
6 if env.has_key('PYTHON_KEYFILE'):
7 keyfile = env['PYTHON_KEYFILE']
Guido van Rossum37a29111995-06-21 00:55:59 +00008 else:
9 keyfile = '.python_keyfile'
Guido van Rossum541df3e1995-06-21 02:08:55 +000010 if env.has_key('HOME'):
11 keyfile = os.path.join(env['HOME'], keyfile)
Guido van Rossum83d6bbf1995-10-07 19:35:07 +000012 if not os.path.exists(keyfile):
13 import sys
14 for dir in sys.path:
15 kf = os.path.join(dir, keyfile)
16 if os.path.exists(kf):
17 keyfile = kf
18 break
Guido van Rossum37a29111995-06-21 00:55:59 +000019 try:
20 self._key = eval(open(keyfile).readline())
21 except IOError:
Guido van Rossum83d6bbf1995-10-07 19:35:07 +000022 raise IOError, "python keyfile %s: cannot open" % keyfile
Guido van Rossum37a29111995-06-21 00:55:59 +000023
24 def _generate_challenge(self):
Guido van Rossum6c3a2cb1998-05-20 17:13:01 +000025 import random
26 return random.randint(100, 100000)
Guido van Rossum37a29111995-06-21 00:55:59 +000027
28 def _compare_challenge_response(self, challenge, response):
29 return self._encode_challenge(challenge) == response
30
31 def _encode_challenge(self, challenge):
32 p, m = self._key
Guido van Rossum541df3e1995-06-21 02:08:55 +000033 return pow(long(challenge), p, m)