]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
security stuff added
authorGuido van Rossum <guido@python.org>
Wed, 21 Jun 1995 01:00:17 +0000 (01:00 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 21 Jun 1995 01:00:17 +0000 (01:00 +0000)
Demo/pdist/client.py
Demo/pdist/server.py

index 4b5cfc5945e4986fd27dae7d0a32d7ab50fc275d..b644180406ed9cd94dd8f19247d62c8afa25cce4 100755 (executable)
@@ -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."""
index c8acf19103db968675febc69dac94851edc2175e..4efb180bc8a5104cfbe4005779b06baf94b26780 100755 (executable)
@@ -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