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
