Lines Matching refs:slot

69     struct p11_slot *slot;
97 struct p11_slot *slot;
145 ret = p11_get_session(NULL, p11rsa->p, p11rsa->slot, NULL, &session);
151 p11_put_session(p11rsa->p, p11rsa->slot, session);
157 p11_put_session(p11rsa->p, p11rsa->slot, session);
183 ret = p11_get_session(NULL, p11rsa->p, p11rsa->slot, NULL, &session);
189 p11_put_session(p11rsa->p, p11rsa->slot, session);
195 p11_put_session(p11rsa->p, p11rsa->slot, session);
240 struct p11_slot *slot,
246 ret = P11FUNC(p, GetMechanismList, (slot->id, NULL_PTR, &i));
249 "Failed to get mech list count for slot %d",
255 "no mech supported for slot %d", num);
258 slot->mechs.list = calloc(i, sizeof(slot->mechs.list[0]));
259 if (slot->mechs.list == NULL) {
264 slot->mechs.num = i;
265 ret = P11FUNC(p, GetMechanismList, (slot->id, slot->mechs.list, &i));
268 "Failed to get mech list for slot %d",
272 assert(i == slot->mechs.num);
274 slot->mechs.infos = calloc(i, sizeof(*slot->mechs.infos));
275 if (slot->mechs.list == NULL) {
281 for (i = 0; i < slot->mechs.num; i++) {
282 slot->mechs.infos[i] = calloc(1, sizeof(*(slot->mechs.infos[0])));
283 if (slot->mechs.infos[i] == NULL) {
288 ret = P11FUNC(p, GetMechanismInfo, (slot->id, slot->mechs.list[i],
289 slot->mechs.infos[i]));
292 "Failed to get mech info for slot %d",
307 struct p11_slot *slot)
314 slot->certs = NULL;
315 slot->id = id;
317 ret = P11FUNC(p, GetSlotInfo, (slot->id, &slot_info));
320 "Failed to init PKCS11 slot %d",
333 asprintf(&slot->name, "%.*s",
339 ret = P11FUNC(p, GetTokenInfo, (slot->id, &token_info));
342 "Failed to init PKCS11 slot %d "
347 slot->flags |= P11_TOKEN_PRESENT;
350 slot->flags |= P11_LOGIN_REQ;
352 ret = p11_get_session(context, p, slot, lock, &session);
356 ret = p11_mech_info(context, p, slot, num);
360 ret = p11_list_keys(context, p, slot, session, lock, &slot->certs);
362 p11_put_session(p, slot, session);
370 struct p11_slot *slot,
376 if (slot->flags & P11_SESSION_IN_USE)
377 _hx509_abort("slot already in session");
379 if (slot->flags & P11_SESSION) {
380 slot->flags |= P11_SESSION_IN_USE;
381 *psession = slot->session;
385 ret = P11FUNC(p, OpenSession, (slot->id,
389 &slot->session));
393 "Failed to OpenSession for slot id %d "
395 (int)slot->id, ret);
399 slot->flags |= P11_SESSION;
413 if ( (slot->flags & P11_LOGIN_REQ)
414 && (slot->flags & P11_LOGIN_DONE) == 0
415 && (lock || slot->pin))
421 slot->flags |= P11_LOGIN_DONE;
423 if (slot->pin == NULL) {
427 asprintf(&str, "PIN code for %s: ", slot->name);
438 "Failed to get pin code for slot "
440 (int)slot->id, ret);
445 strlcpy(pin, slot->pin, sizeof(pin));
448 ret = P11FUNC(p, Login, (slot->session, CKU_USER,
453 "Failed to login on slot id %d "
455 (int)slot->id, ret);
456 p11_put_session(p, slot, slot->session);
459 if (slot->pin == NULL) {
460 slot->pin = strdup(pin);
461 if (slot->pin == NULL) {
465 p11_put_session(p, slot, slot->session);
470 slot->flags |= P11_LOGIN_DONE;
472 slot->flags |= P11_SESSION_IN_USE;
474 *psession = slot->session;
481 struct p11_slot *slot,
484 if ((slot->flags & P11_SESSION_IN_USE) == 0)
485 _hx509_abort("slot not in session");
486 slot->flags &= ~P11_SESSION_IN_USE;
493 struct p11_module *p, struct p11_slot *slot,
541 ret = (*func)(context, p, slot, session, object, ptr, query, num_query);
570 struct p11_slot *slot,
604 struct p11_module *p, struct p11_slot *slot,
632 rsa->n = getattr_bn(p, slot, session, object, CKA_MODULUS);
633 rsa->e = getattr_bn(p, slot, session, object, CKA_PUBLIC_EXPONENT);
640 p11rsa->slot = slot;
678 struct p11_module *p, struct p11_slot *slot,
737 struct p11_slot *slot,
765 ret = iterate_entries(context, p, slot, session,
773 ret = iterate_entries(context, p, slot, session,
780 ret = _hx509_collector_collect_certs(context, collector, &slot->certs);
822 if (strncasecmp(str, "slot=", 5) == 0)
893 "Failed getting slot-list from "
899 p->slot = calloc(p->num_slots, sizeof(p->slot[0]));
900 if (p->slot == NULL) {
903 "Failed to get memory for slot-list");
909 ret = p11_init_slot(context, p, lock, slot_ids[i], i, &p->slot[i]);
912 if (p->slot[i].flags & P11_TOKEN_PRESENT)
943 if (p->slot[i].flags & P11_SESSION_IN_USE)
945 if (p->slot[i].flags & P11_SESSION) {
948 ret = P11FUNC(p, CloseSession, (p->slot[i].session));
953 if (p->slot[i].name)
954 free(p->slot[i].name);
955 if (p->slot[i].pin) {
956 memset(p->slot[i].pin, 0, strlen(p->slot[i].pin));
957 free(p->slot[i].pin);
959 if (p->slot[i].mechs.num) {
960 free(p->slot[i].mechs.list);
962 if (p->slot[i].mechs.infos) {
965 for (j = 0 ; j < p->slot[i].mechs.num ; j++)
966 free(p->slot[i].mechs.infos[j]);
967 free(p->slot[i].mechs.infos);
971 free(p->slot);
990 if (p->slot[i].certs)
991 hx509_certs_free(&p->slot[i].certs);
1022 if (p->slot[i].certs == NULL)
1024 ret = hx509_certs_merge(context, c->certs, p->slot[i].certs);
1111 _hx509_pi_printf(func, ctx, "pkcs11 driver with %d slot%s",
1115 struct p11_slot *s = &p->slot[i];
1117 _hx509_pi_printf(func, ctx, "slot %d: id: %d name: %s flags: %08x",