Session and log-in procedures

When you use your sample code with a static linked library you can access the APIs directly. View some openCryptoki code samples for opening and closing sessions and for log-in.

C_OpenSession:

/*
 * opensession
 */

CK_RV openSession(CK_SLOT_ID slotID, CK_FLAGS sFlags,
                                     CK_SESSION_HANDLE_PTR phSession) {
 CK_RV rc;
  rc = C_OpenSession(slotID, sFlags, NULL, NULL, phSession);
  if (rc != CKR_OK) {
     printf("Error opening session: %x\n", rc);
     return rc;
  }
  printf("Open session successful.\n");
  return CKR_OK;
}
 

C_CloseSession:

/*
 * closesession
 */
CK_RV closeSession(CK_SESSION_HANDLE hSession) {
  CK_RV  rc;
  rc  = C_CloseSession(hSession);
  if (rc != CKR_OK) {
	printf("Error closing session: 0x%X\n", rc);
	return rc;
  }
  printf("Close session successful.\n");
  return CKR_OK;
}

C_Login:

/*
 * login
 */
CK_RV loginSession(CK_USER_TYPE userType, CK_CHAR_PTR pPin,
		   CK_ULONG ulPinLen, CK_SESSION_HANDLE hSession) {
  CK_RV rc;
  rc = C_Login(hSession, userType, pPin, ulPinLen);
  if (rc != CKR_OK) {
	printf("Error login session: %x\n", rc);
	return rc;
  }
  printf("Login session successful.\n");
  return CKR_OK;
}

C_Logout:

/*
 * logout
 */
CK_RV logoutSession(CK_SESSION_HANDLE hSession) {
  CK_RV rc;
  rc = C_Logout(hSession);
  if (rc != CKR_OK) {
	printf("Error logout session: %x\n", rc);
	return rc;
  }
  printf("Logout session successful.\n");
  return CKR_OK;
}