diff --git a/gck-rpc-dispatch.c b/gck-rpc-dispatch.c
index be1d7d9296a41c68aecafb755193578e583092b3..a6f76343986527374e91b6fc46f54b86c34fa0b9 100644
--- a/gck-rpc-dispatch.c
+++ b/gck-rpc-dispatch.c
@@ -572,35 +572,6 @@ proto_write_attribute_array(CallState * cs, CK_ATTRIBUTE_PTR array,
 	return CKR_OK;
 }
 
-static CK_RV proto_read_null_string(CallState * cs, CK_UTF8CHAR_PTR * val)
-{
-	GckRpcMessage *msg;
-	const unsigned char *data;
-	size_t n_data;
-
-	assert(cs);
-	assert(val);
-
-	msg = cs->req;
-
-	/* Check that we're supposed to have this at this point */
-	assert(!msg->signature || gck_rpc_message_verify_part(msg, "z"));
-
-	if (!egg_buffer_get_byte_array
-	    (&msg->buffer, msg->parsed, &msg->parsed, &data, &n_data))
-		return PARSE_ERROR;
-
-	/* Allocate a block of memory for it. The +1 accomodates the NULL byte. */
-	*val = call_alloc(cs, n_data + 1);
-	if (!*val)
-		return CKR_DEVICE_MEMORY;
-
-	memcpy(*val, data, n_data);
-	(*val)[n_data] = 0;
-
-	return CKR_OK;
-}
-
 static CK_RV proto_read_space_string(CallState * cs, CK_UTF8CHAR_PTR * val, CK_ULONG length)
 {
 	GckRpcMessage *msg;
@@ -805,10 +776,6 @@ static CK_RV proto_write_session_info(CallState * cs, CK_SESSION_INFO_PTR info)
 	if (!gck_rpc_message_read_ulong (cs->req, &val)) \
 		{ _ret = PARSE_ERROR; goto _cleanup; }
 
-#define IN_STRING(val) \
-	_ret = proto_read_null_string (cs, &val); \
-	if (_ret != CKR_OK) goto _cleanup;
-
 #define IN_SPACE_STRING(val, len)			   \
 	_ret = proto_read_space_string (cs, &val, len);	   \
 	if (_ret != CKR_OK) goto _cleanup;
diff --git a/gck-rpc-message.c b/gck-rpc-message.c
index 440d88dbdbae992ea942072da563685bc806d2fe..a99ecdfa0e948ce7d2fa94a132ab49ab80b5e8a2 100644
--- a/gck-rpc-message.c
+++ b/gck-rpc-message.c
@@ -477,13 +477,3 @@ gck_rpc_message_write_space_string(GckRpcMessage * msg, CK_UTF8CHAR * buffer,
 
 	return egg_buffer_add_byte_array(&msg->buffer, buffer, length);
 }
-
-int gck_rpc_message_write_zero_string(GckRpcMessage * msg, CK_UTF8CHAR * string)
-{
-	assert(msg);
-	assert(string);
-
-	assert(!msg->signature || gck_rpc_message_verify_part(msg, "z"));
-
-	return egg_buffer_add_string(&msg->buffer, (const char *)string);
-}
diff --git a/gck-rpc-module.c b/gck-rpc-module.c
index c3b62c131ffe27c17156f1833b6feab440413ddc..1ce0665af712e9d1fc5569cc11895d35abfd3026 100644
--- a/gck-rpc-module.c
+++ b/gck-rpc-module.c
@@ -1130,10 +1130,6 @@ proto_read_sesssion_info(GckRpcMessage * msg, CK_SESSION_INFO_PTR info)
 	if (!gck_rpc_message_write_ulong (_cs->req, val)) \
 		{ _ret = CKR_HOST_MEMORY; goto _cleanup; }
 
-#define IN_STRING(val) \
-	if (!gck_rpc_message_write_zero_string (_cs->req, val)) \
-		{ _ret = CKR_HOST_MEMORY; goto _cleanup; }
-
 #define IN_SPACE_STRING(val, len)						\
 	if (!gck_rpc_message_write_space_string (_cs->req, val, len))	\
 		{ _ret = CKR_HOST_MEMORY; goto _cleanup; }
diff --git a/gck-rpc-private.h b/gck-rpc-private.h
index a3843e5e82d7de3af2a588467120dbef7670eba2..f888c418b6cb29472b296bc420fc94a758feb109 100644
--- a/gck-rpc-private.h
+++ b/gck-rpc-private.h
@@ -130,7 +130,6 @@ typedef struct _GckRpcCall {
  *  s  = space padded string
  *  v  = CK_VERSION
  *  y  = CK_BYTE
- *  z  = null terminated string
  */
 
 static const GckRpcCall gck_rpc_calls[] = {
@@ -263,9 +262,6 @@ int gck_rpc_message_write_byte(GckRpcMessage * msg, CK_BYTE val);
 
 int gck_rpc_message_write_ulong(GckRpcMessage * msg, CK_ULONG val);
 
-int gck_rpc_message_write_zero_string(GckRpcMessage * msg,
-				      CK_UTF8CHAR * string);
-
 int gck_rpc_message_write_space_string(GckRpcMessage * msg,
 				       CK_UTF8CHAR * buffer, CK_ULONG length);