| 
									
										
										
										
											1995-06-21 00:55:59 +00:00
										 |  |  | class Security: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |     def __init__(self): | 
					
						
							|  |  |  |         import os | 
					
						
							|  |  |  |         env = os.environ | 
					
						
							| 
									
										
										
										
											2007-07-17 20:59:35 +00:00
										 |  |  |         if 'PYTHON_KEYFILE' in env: | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |             keyfile = env['PYTHON_KEYFILE'] | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             keyfile = '.python_keyfile' | 
					
						
							| 
									
										
										
										
											2007-07-17 20:59:35 +00:00
										 |  |  |             if 'HOME' in env: | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |                 keyfile = os.path.join(env['HOME'], keyfile) | 
					
						
							|  |  |  |             if not os.path.exists(keyfile): | 
					
						
							|  |  |  |                 import sys | 
					
						
							|  |  |  |                 for dir in sys.path: | 
					
						
							|  |  |  |                     kf = os.path.join(dir, keyfile) | 
					
						
							|  |  |  |                     if os.path.exists(kf): | 
					
						
							|  |  |  |                         keyfile = kf | 
					
						
							|  |  |  |                         break | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             self._key = eval(open(keyfile).readline()) | 
					
						
							|  |  |  |         except IOError: | 
					
						
							| 
									
										
										
										
											2007-07-17 20:59:35 +00:00
										 |  |  |             raise IOError("python keyfile %s: cannot open" % keyfile) | 
					
						
							| 
									
										
										
										
											1995-06-21 00:55:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |     def _generate_challenge(self): | 
					
						
							|  |  |  |         import random | 
					
						
							|  |  |  |         return random.randint(100, 100000) | 
					
						
							| 
									
										
										
										
											1995-06-21 00:55:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |     def _compare_challenge_response(self, challenge, response): | 
					
						
							|  |  |  |         return self._encode_challenge(challenge) == response | 
					
						
							| 
									
										
										
										
											1995-06-21 00:55:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-18 05:56:09 +00:00
										 |  |  |     def _encode_challenge(self, challenge): | 
					
						
							|  |  |  |         p, m = self._key | 
					
						
							| 
									
										
										
										
											2007-07-17 20:59:35 +00:00
										 |  |  |         return pow(int(challenge), p, m) |