func getSlot(p *pkcs11.Ctx, label string) (uint, error) { slots, err := p.GetSlotList(true) if err != nil { return 0, err } for _, slot := range slots { _, err := p.GetSlotInfo(slot) if err != nil { return 0, err } tokenInfo, err := p.GetTokenInfo(slot) if err != nil { return 0, err } if tokenInfo.Label == label { return slot, nil } } return 0, fmt.Errorf("Slot not found: %s", label) }