On 09/02/2017 01:21, Tim Hudson wrote: A simple extension to C_Login to allow specification of a username for those devices which support multiple users. /* C_LoginUser logs a user into a token. */ CK_PKCS11_FUNCTION_INFO(C_LoginUser) #ifdef CK_NEED_ARG_LIST ( CK_SESSION_HANDLE hSession, /* the session's handle */ CK_USER_TYPE userType, /* the user type */ CK_UTF8CHAR_PTR pPin, /* the user's PIN */ CK_ULONG ulPinLen /* the length of the PIN */ CK_UTF8CHAR_PTR pUsername, /* the user name */ CK_ULONG ulUsernameLen /* the length of the user name */ ); #endif What is the rationale for requiring the user type here ? Are you assuming that a given username might be able to login as both user and SO so they need to choose ? -- Darren J Moffat