equal
deleted
inserted
replaced
|
1 class 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'] |
|
8 else: |
|
9 keyfile = '.python_keyfile' |
|
10 if env.has_key('HOME'): |
|
11 keyfile = os.path.join(env['HOME'], keyfile) |
|
12 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 |
|
19 try: |
|
20 self._key = eval(open(keyfile).readline()) |
|
21 except IOError: |
|
22 raise IOError, "python keyfile %s: cannot open" % keyfile |
|
23 |
|
24 def _generate_challenge(self): |
|
25 import random |
|
26 return random.randint(100, 100000) |
|
27 |
|
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 |
|
33 return pow(long(challenge), p, m) |