summaryrefslogtreecommitdiff
path: root/p11-kit/rpc-server.c
diff options
context:
space:
mode:
Diffstat (limited to 'p11-kit/rpc-server.c')
-rw-r--r--p11-kit/rpc-server.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/p11-kit/rpc-server.c b/p11-kit/rpc-server.c
index b8288c9..f074fd0 100644
--- a/p11-kit/rpc-server.c
+++ b/p11-kit/rpc-server.c
@@ -48,6 +48,7 @@
#include <sys/param.h>
#include <assert.h>
#include <errno.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -707,14 +708,29 @@ rpc_C_Finalize (CK_X_FUNCTION_LIST *self,
END_CALL;
}
+static void fix_info(const char *id, CK_INFO *info)
+{
+ unsigned len;
+ unsigned i;
+
+ /* replace description */
+ snprintf((char*)info->manufacturerID, sizeof(info->manufacturerID), "V:%s", id);
+ len = strlen((char*)info->manufacturerID);
+
+ for (i=len;i<sizeof(info->manufacturerID);i++)
+ info->manufacturerID[i] = ' ';
+}
+
static CK_RV
-rpc_C_GetInfo (CK_X_FUNCTION_LIST *self,
+rpc_C_GetInfo (const char *id,
+ CK_X_FUNCTION_LIST *self,
p11_rpc_message *msg)
{
CK_INFO info;
BEGIN_CALL (GetInfo);
PROCESS_CALL ((self, &info));
+ fix_info (id, &info);
OUT_INFO (info);
END_CALL;
}
@@ -1763,7 +1779,8 @@ rpc_C_GenerateRandom (CK_X_FUNCTION_LIST *self,
}
bool
-p11_rpc_server_handle (CK_X_FUNCTION_LIST *self,
+p11_rpc_server_handle (const char *name,
+ CK_X_FUNCTION_LIST *self,
p11_buffer *request,
p11_buffer *response)
{
@@ -1795,9 +1812,13 @@ p11_rpc_server_handle (CK_X_FUNCTION_LIST *self,
case P11_RPC_CALL_##name: \
ret = rpc_##name (self, &msg); \
break;
+ #define CASE_CALL_ID(id, name) \
+ case P11_RPC_CALL_##name: \
+ ret = rpc_##name (id, self, &msg); \
+ break;
CASE_CALL (C_Initialize)
CASE_CALL (C_Finalize)
- CASE_CALL (C_GetInfo)
+ CASE_CALL_ID (name, C_GetInfo)
CASE_CALL (C_GetSlotList)
CASE_CALL (C_GetSlotInfo)
CASE_CALL (C_GetTokenInfo)