Lines Matching full:slot
68 struct p11_slot *slot; member
96 struct p11_slot *slot; member
144 ret = p11_get_session(NULL, p11rsa->p, p11rsa->slot, NULL, &session); in p11_rsa_private_encrypt()
150 p11_put_session(p11rsa->p, p11rsa->slot, session); in p11_rsa_private_encrypt()
156 p11_put_session(p11rsa->p, p11rsa->slot, session); in p11_rsa_private_encrypt()
182 ret = p11_get_session(NULL, p11rsa->p, p11rsa->slot, NULL, &session); in p11_rsa_private_decrypt()
188 p11_put_session(p11rsa->p, p11rsa->slot, session); in p11_rsa_private_decrypt()
194 p11_put_session(p11rsa->p, p11rsa->slot, session); in p11_rsa_private_decrypt()
265 struct p11_slot *slot, in p11_mech_info() argument
271 ret = P11FUNC(p, GetMechanismList, (slot->id, NULL_PTR, &i)); in p11_mech_info()
274 "Failed to get mech list count for slot %d", in p11_mech_info()
280 "no mech supported for slot %d", num); in p11_mech_info()
283 slot->mechs.list = calloc(i, sizeof(slot->mechs.list[0])); in p11_mech_info()
284 if (slot->mechs.list == NULL) { in p11_mech_info()
289 slot->mechs.num = i; in p11_mech_info()
290 ret = P11FUNC(p, GetMechanismList, (slot->id, slot->mechs.list, &i)); in p11_mech_info()
293 "Failed to get mech list for slot %d", in p11_mech_info()
297 assert(i == slot->mechs.num); in p11_mech_info()
299 slot->mechs.infos = calloc(i, sizeof(*slot->mechs.infos)); in p11_mech_info()
300 if (slot->mechs.list == NULL) { in p11_mech_info()
306 for (i = 0; i < slot->mechs.num; i++) { in p11_mech_info()
307 slot->mechs.infos[i] = calloc(1, sizeof(*(slot->mechs.infos[0]))); in p11_mech_info()
308 if (slot->mechs.infos[i] == NULL) { in p11_mech_info()
313 ret = P11FUNC(p, GetMechanismInfo, (slot->id, slot->mechs.list[i], in p11_mech_info()
314 slot->mechs.infos[i])); in p11_mech_info()
317 "Failed to get mech info for slot %d", in p11_mech_info()
332 struct p11_slot *slot) in p11_init_slot() argument
340 slot->certs = NULL; in p11_init_slot()
341 slot->id = id; in p11_init_slot()
343 ret = P11FUNC(p, GetSlotInfo, (slot->id, &slot_info)); in p11_init_slot()
346 "Failed to init PKCS11 slot %d", in p11_init_slot()
359 asprintf(&slot->name, "%.*s", in p11_init_slot()
365 ret = P11FUNC(p, GetTokenInfo, (slot->id, &token_info)); in p11_init_slot()
368 "Failed to init PKCS11 slot %d " in p11_init_slot()
373 slot->flags |= P11_TOKEN_PRESENT; in p11_init_slot()
376 slot->flags |= P11_LOGIN_REQ; in p11_init_slot()
378 ret = p11_get_session(context, p, slot, lock, &session); in p11_init_slot()
382 ret = p11_mech_info(context, p, slot, num); in p11_init_slot()
386 ret = p11_list_keys(context, p, slot, session, lock, &slot->certs); in p11_init_slot()
388 p11_put_session(p, slot, session); in p11_init_slot()
396 struct p11_slot *slot, in p11_get_session() argument
402 if (slot->flags & P11_SESSION_IN_USE) in p11_get_session()
403 _hx509_abort("slot already in session"); in p11_get_session()
405 if (slot->flags & P11_SESSION) { in p11_get_session()
406 slot->flags |= P11_SESSION_IN_USE; in p11_get_session()
407 *psession = slot->session; in p11_get_session()
411 ret = P11FUNC(p, OpenSession, (slot->id, in p11_get_session()
415 &slot->session)); in p11_get_session()
419 "Failed to OpenSession for slot id %d " in p11_get_session()
421 (int)slot->id, ret); in p11_get_session()
425 slot->flags |= P11_SESSION; in p11_get_session()
439 if ( (slot->flags & P11_LOGIN_REQ) in p11_get_session()
440 && (slot->flags & P11_LOGIN_DONE) == 0 in p11_get_session()
441 && (lock || slot->pin)) in p11_get_session()
447 if (slot->pin == NULL) { in p11_get_session()
451 asprintf(&str, "PIN code for %s: ", slot->name); in p11_get_session()
462 "Failed to get pin code for slot " in p11_get_session()
464 (int)slot->id, ret); in p11_get_session()
469 strlcpy(pin, slot->pin, sizeof(pin)); in p11_get_session()
472 ret = P11FUNC(p, Login, (slot->session, CKU_USER, in p11_get_session()
477 "Failed to login on slot id %d " in p11_get_session()
479 (int)slot->id, ret); in p11_get_session()
482 slot->flags |= P11_LOGIN_DONE; in p11_get_session()
484 if (slot->pin == NULL) { in p11_get_session()
485 slot->pin = strdup(pin); in p11_get_session()
486 if (slot->pin == NULL) { in p11_get_session()
494 slot->flags |= P11_LOGIN_DONE; in p11_get_session()
496 slot->flags |= P11_SESSION_IN_USE; in p11_get_session()
498 *psession = slot->session; in p11_get_session()
505 struct p11_slot *slot, in p11_put_session() argument
508 if ((slot->flags & P11_SESSION_IN_USE) == 0) in p11_put_session()
509 _hx509_abort("slot not in session"); in p11_put_session()
510 slot->flags &= ~P11_SESSION_IN_USE; in p11_put_session()
517 struct p11_module *p, struct p11_slot *slot, in iterate_entries() argument
565 ret = (*func)(context, p, slot, session, object, ptr, query, num_query); in iterate_entries()
593 struct p11_slot *slot, in getattr_bn() argument
627 struct p11_module *p, struct p11_slot *slot, in collect_private_key() argument
657 n = getattr_bn(p, slot, session, object, CKA_MODULUS); in collect_private_key()
658 e = getattr_bn(p, slot, session, object, CKA_PUBLIC_EXPONENT); in collect_private_key()
672 p11rsa->slot = slot; in collect_private_key()
715 struct p11_module *p, struct p11_slot *slot, in collect_cert() argument
776 struct p11_slot *slot, in p11_list_keys() argument
804 ret = iterate_entries(context, p, slot, session, in p11_list_keys()
812 ret = iterate_entries(context, p, slot, session, in p11_list_keys()
819 ret = _hx509_collector_collect_certs(context, collector, &slot->certs); in p11_list_keys()
861 if (strncasecmp(str, "slot=", 5) == 0) in p11_init()
933 "Failed getting slot-list from " in p11_init()
939 p->slot = calloc(p->num_slots, sizeof(p->slot[0])); in p11_init()
940 if (p->slot == NULL) { in p11_init()
943 "Failed to get memory for slot-list"); in p11_init()
949 ret = p11_init_slot(context, p, lock, slot_ids[i], i, &p->slot[i]); in p11_init()
952 if (p->slot[i].flags & P11_TOKEN_PRESENT) in p11_init()
983 if (p->slot[i].flags & P11_SESSION_IN_USE) in p11_release_module()
985 if (p->slot[i].flags & P11_SESSION) { in p11_release_module()
986 P11FUNC(p, CloseSession, (p->slot[i].session)); in p11_release_module()
989 if (p->slot[i].name) in p11_release_module()
990 free(p->slot[i].name); in p11_release_module()
991 if (p->slot[i].pin) { in p11_release_module()
992 memset(p->slot[i].pin, 0, strlen(p->slot[i].pin)); in p11_release_module()
993 free(p->slot[i].pin); in p11_release_module()
995 if (p->slot[i].mechs.num) { in p11_release_module()
996 free(p->slot[i].mechs.list); in p11_release_module()
998 if (p->slot[i].mechs.infos) { in p11_release_module()
1001 for (j = 0 ; j < p->slot[i].mechs.num ; j++) in p11_release_module()
1002 free(p->slot[i].mechs.infos[j]); in p11_release_module()
1003 free(p->slot[i].mechs.infos); in p11_release_module()
1007 free(p->slot); in p11_release_module()
1026 if (p->slot[i].certs) in p11_free()
1027 hx509_certs_free(&p->slot[i].certs); in p11_free()
1059 if (p->slot[i].certs == NULL) in p11_iter_start()
1061 ret = hx509_certs_merge(context, c->certs, p->slot[i].certs); in p11_iter_start()
1148 _hx509_pi_printf(func, ctx, "pkcs11 driver with %d slot%s", in p11_printinfo()
1152 struct p11_slot *s = &p->slot[i]; in p11_printinfo()
1154 _hx509_pi_printf(func, ctx, "slot %d: id: %d name: %s flags: %08x", in p11_printinfo()