security stuff added

This commit is contained in:
Guido van Rossum 1995-06-21 01:00:17 +00:00
parent 37a291180c
commit 45babef8c2
2 changed files with 50 additions and 0 deletions

View File

@ -120,6 +120,23 @@ class Client:
self._wf.flush()
from security import Security
class SecureClient(Client, Security):
def __init__(self, *args):
import string
apply(Client.__init__, (self,) + args)
Security.__init__(self)
line = self._rf.readline()
challenge = string.atoi(string.strip(firstline))
response = self._encode_challenge(challenge)
line = `long(response)`
if line[-1] in 'Ll': line = line[:-1]
self._wf.write(line + '\n')
self._wf.flush()
class _stub:
"""Helper class for Client -- each instance serves as a method of the client."""

View File

@ -109,3 +109,36 @@ class Server:
basenames = filter(lambda x, names=names: x not in names, basenames)
names[len(names):] = basenames
return names
from security import Security
class SecureServer(Server, Security):
def __init__(self, *args):
apply(Server.__init__, (self,) + args)
Security.__init__(self)
def _verify(self, conn, address):
challenge = self._generate_challenge()
conn.send("%d\n" % challenge)
response = ""
while "\n" not in response and len(response) < 100:
data = conn.recv(100)
if not data:
break
response = response + data
try:
response = string.atol(string.strip(response))
except string.atol_error:
if self._verbose > 0:
print "Invalid response syntax", `response`
return 0
if not self._compare_challenge_response(challenge, response):
if self._verbose > 0:
print "Invalid response value", `response`
return 0
if self._verbose > 1:
print "Response matches challenge. Go ahead!"
return 1