diff options
Diffstat (limited to 'p11-kit/rpc-server.c')
-rw-r--r-- | p11-kit/rpc-server.c | 27 |
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) |