diff --git a/Demo/rpc/rpc.py b/Demo/rpc/rpc.py
index ba3bd54..607a25e 100644
--- a/Demo/rpc/rpc.py
+++ b/Demo/rpc/rpc.py
@@ -102,6 +102,21 @@
 		# Caller must get procedure-specific part of reply
 
 
+# Subroutines to create opaque authentication objects
+
+def make_auth_null():
+	return ''
+
+def make_auth_unix(seed, host, uid, gid, groups):
+	p = Packer().init()
+	p.pack_auth_unix(seed, host, uid, gid, groups)
+	return p.get_buf()
+
+def make_auth_unix_default():
+	return make_auth_unix(0, socket.gethostname(), \
+		os.getuid(), os.getgid(), [])
+
+
 # Common base class for clients
 
 class Client:
@@ -136,14 +151,13 @@
 
 	def mkcred(self, proc):
 		if self.cred == None:
-			p = Packer().init()
-			p.pack_auth_unix(0, socket.gethostname(), \
-				os.getuid(), os.getgid(), [])
-			self.cred = p.get_buf()
-		return (AUTH_UNIX, self.cred)
+			self.cred = (AUTH_NULL, make_auth_null())
+		return self.cred
 
 	def mkverf(self, proc):
-		return (AUTH_NULL, '')
+		if self.verf == None:
+			self.verf = (AUTH_NULL, make_auth_null())
+		return self.verf
 
 
 # Record-Marking standard support
