]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/python/contrib/Demo/pdist/security.py
Inital import
[l4.git] / l4 / pkg / python / contrib / Demo / pdist / security.py
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)