Lines Matching refs:session

53 static void close_ck_session(struct pkcs11_session *session);
71 struct handle_db *get_object_handle_db(struct pkcs11_session *session) in get_object_handle_db() argument
73 return &session->client->object_handle_db; in get_object_handle_db()
76 struct session_list *get_session_list(struct pkcs11_session *session) in get_session_list() argument
78 return &session->client->session_list; in get_session_list()
128 struct pkcs11_session *session = NULL; in unregister_client() local
136 TAILQ_FOREACH_SAFE(session, &client->session_list, link, next) in unregister_client()
137 close_ck_session(session); in unregister_client()
187 enum pkcs11_rc set_processing_state(struct pkcs11_session *session, in set_processing_state() argument
195 if (session->processing) in set_processing_state()
241 session->processing = proc; in set_processing_state()
548 struct pkcs11_session *session, bool readonly) in set_session_state() argument
564 assert(sess != session); in set_session_state()
566 if (sess->token == session->token) { in set_session_state()
595 session->state = state; in set_session_state()
612 struct pkcs11_session *session = NULL; in entry_ck_open_session() local
616 out->memref.size != sizeof(session->handle)) in entry_ck_open_session()
650 TAILQ_FOREACH(session, &client->session_list, link) in entry_ck_open_session()
651 if (pkcs11_session_is_so(session)) in entry_ck_open_session()
655 session = TEE_Malloc(sizeof(*session), TEE_MALLOC_FILL_ZERO); in entry_ck_open_session()
656 if (!session) in entry_ck_open_session()
659 session->handle = handle_get(&client->session_handle_db, session); in entry_ck_open_session()
660 if (!session->handle) { in entry_ck_open_session()
661 TEE_Free(session); in entry_ck_open_session()
665 session->token = token; in entry_ck_open_session()
666 session->client = client; in entry_ck_open_session()
668 LIST_INIT(&session->object_list); in entry_ck_open_session()
670 set_session_state(client, session, readonly); in entry_ck_open_session()
672 TAILQ_INSERT_HEAD(&client->session_list, session, link); in entry_ck_open_session()
674 session->token->session_count++; in entry_ck_open_session()
676 session->token->rw_session_count++; in entry_ck_open_session()
678 TEE_MemMove(out->memref.buffer, &session->handle, in entry_ck_open_session()
679 sizeof(session->handle)); in entry_ck_open_session()
681 DMSG("Open PKCS11 session %"PRIu32, session->handle); in entry_ck_open_session()
686 static void close_ck_session(struct pkcs11_session *session) in close_ck_session() argument
688 release_active_processing(session); in close_ck_session()
689 release_session_find_obj_context(session); in close_ck_session()
692 while (!LIST_EMPTY(&session->object_list)) in close_ck_session()
693 destroy_object(session, in close_ck_session()
694 LIST_FIRST(&session->object_list), true); in close_ck_session()
696 TAILQ_REMOVE(&session->client->session_list, session, link); in close_ck_session()
697 handle_put(&session->client->session_handle_db, session->handle); in close_ck_session()
699 session->token->session_count--; in close_ck_session()
700 if (pkcs11_session_is_read_write(session)) in close_ck_session()
701 session->token->rw_session_count--; in close_ck_session()
703 DMSG("Close PKCS11 session %"PRIu32, session->handle); in close_ck_session()
705 TEE_Free(session); in close_ck_session()
718 struct pkcs11_session *session = NULL; in entry_ck_close_session() local
725 rc = serialargs_get_session_from_handle(&ctrlargs, client, &session); in entry_ck_close_session()
732 close_ck_session(session); in entry_ck_close_session()
749 struct pkcs11_session *session = NULL; in entry_ck_close_all_sessions() local
770 TAILQ_FOREACH_SAFE(session, &client->session_list, link, next) in entry_ck_close_all_sessions()
771 if (session->token == token) in entry_ck_close_all_sessions()
772 close_ck_session(session); in entry_ck_close_all_sessions()
788 struct pkcs11_session *session = NULL; in entry_ck_session_info() local
798 rc = serialargs_get_session_from_handle(&ctrlargs, client, &session); in entry_ck_session_info()
805 info.slot_id = get_token_id(session->token); in entry_ck_session_info()
806 info.state = session->state; in entry_ck_session_info()
807 if (pkcs11_session_is_read_write(session)) in entry_ck_session_info()
812 DMSG("Get find on PKCS11 session %"PRIu32, session->handle); in entry_ck_session_info()
972 static enum pkcs11_rc set_pin(struct pkcs11_session *session, in set_pin() argument
976 struct ck_token *token = session->token; in set_pin()
984 if (!pkcs11_session_is_read_write(session)) in set_pin()
1094 struct pkcs11_session *session = NULL; in entry_ck_init_pin() local
1106 rc = serialargs_get_session_from_handle(&ctrlargs, client, &session); in entry_ck_init_pin()
1121 if (!pkcs11_session_is_so(session)) in entry_ck_init_pin()
1124 assert(session->token->db_main->flags & PKCS11_CKFT_TOKEN_INITIALIZED); in entry_ck_init_pin()
1126 IMSG("PKCS11 session %"PRIu32": init PIN", session->handle); in entry_ck_init_pin()
1128 return set_pin(session, pin, pin_size, PKCS11_CKU_USER); in entry_ck_init_pin()
1131 static enum pkcs11_rc check_so_pin(struct pkcs11_session *session, in check_so_pin() argument
1134 struct ck_token *token = session->token; in check_so_pin()
1188 static enum pkcs11_rc check_user_pin(struct pkcs11_session *session, in check_user_pin() argument
1191 struct ck_token *token = session->token; in check_user_pin()
1255 struct pkcs11_session *session = NULL; in entry_ck_set_pin() local
1269 rc = serialargs_get_session_from_handle(&ctrlargs, client, &session); in entry_ck_set_pin()
1292 if (!pkcs11_session_is_read_write(session)) in entry_ck_set_pin()
1295 if (pkcs11_session_is_so(session)) { in entry_ck_set_pin()
1296 if (!(session->token->db_main->flags & in entry_ck_set_pin()
1300 rc = check_so_pin(session, old_pin, old_pin_size); in entry_ck_set_pin()
1304 IMSG("PKCS11 session %"PRIu32": set PIN", session->handle); in entry_ck_set_pin()
1306 return set_pin(session, pin, pin_size, PKCS11_CKU_SO); in entry_ck_set_pin()
1309 if (!(session->token->db_main->flags & in entry_ck_set_pin()
1313 rc = check_user_pin(session, old_pin, old_pin_size); in entry_ck_set_pin()
1317 IMSG("PKCS11 session %"PRIu32": set PIN", session->handle); in entry_ck_set_pin()
1319 return set_pin(session, pin, pin_size, PKCS11_CKU_USER); in entry_ck_set_pin()
1322 static void session_login_user(struct pkcs11_session *session) in session_login_user() argument
1324 struct pkcs11_client *client = session->client; in session_login_user()
1328 if (sess->token != session->token) in session_login_user()
1338 static void session_login_so(struct pkcs11_session *session) in session_login_so() argument
1340 struct pkcs11_client *client = session->client; in session_login_so()
1344 if (sess->token != session->token) in session_login_so()
1354 static void session_logout(struct pkcs11_session *session) in session_logout() argument
1356 struct pkcs11_client *client = session->client; in session_logout()
1364 if (sess->token != session->token) in session_logout()
1367 release_active_processing(session); in session_logout()
1379 LIST_FOREACH(obj, &session->token->object_list, link) { in session_logout()
1380 handle = pkcs11_object2handle(obj, session); in session_logout()
1386 release_session_find_obj_context(session); in session_logout()
1402 struct pkcs11_session *session = NULL; in entry_ck_login() local
1416 rc = serialargs_get_session_from_handle(&ctrlargs, client, &session); in entry_ck_login()
1437 if (pkcs11_session_is_so(session)) in entry_ck_login()
1440 if (pkcs11_session_is_user(session)) in entry_ck_login()
1444 if (sess->token == session->token && in entry_ck_login()
1468 rc = check_so_pin(session, pin, pin_size); in entry_ck_login()
1470 session_login_so(session); in entry_ck_login()
1475 if (pkcs11_session_is_so(session)) in entry_ck_login()
1478 if (pkcs11_session_is_user(session)) in entry_ck_login()
1487 rc = check_user_pin(session, pin, pin_size); in entry_ck_login()
1489 session_login_user(session); in entry_ck_login()
1501 IMSG("PKCS11 session %"PRIu32": login", session->handle); in entry_ck_login()
1513 struct pkcs11_session *session = NULL; in entry_ck_logout() local
1523 rc = serialargs_get_session_from_handle(&ctrlargs, client, &session); in entry_ck_logout()
1530 if (pkcs11_session_is_public(session)) in entry_ck_logout()
1533 session_logout(session); in entry_ck_logout()
1535 IMSG("PKCS11 session %"PRIu32": logout", session->handle); in entry_ck_logout()
1583 struct pkcs11_session *session = NULL; in entry_ck_seed_random() local
1591 rc = serialargs_get_session_from_handle(&ctrlargs, client, &session); in entry_ck_seed_random()
1608 DMSG("PKCS11 session %"PRIu32": seed random", session->handle); in entry_ck_seed_random()
1624 struct pkcs11_session *session = NULL; in entry_ck_generate_random() local
1635 rc = serialargs_get_session_from_handle(&ctrlargs, client, &session); in entry_ck_generate_random()
1666 DMSG("PKCS11 session %"PRIu32": generate random", session->handle); in entry_ck_generate_random()