security stuff added
diff --git a/Demo/pdist/client.py b/Demo/pdist/client.py
index 4b5cfc5..b644180 100755
--- a/Demo/pdist/client.py
+++ b/Demo/pdist/client.py
@@ -120,6 +120,23 @@
 		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."""
diff --git a/Demo/pdist/server.py b/Demo/pdist/server.py
index c8acf19..4efb180 100755
--- a/Demo/pdist/server.py
+++ b/Demo/pdist/server.py
@@ -109,3 +109,36 @@
 			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