provider
u_int maxsign, const char *provider,
if (provider != NULL) {
(r = sshbuf_put_cstring(m, provider)) != 0)
const char *provider, struct dest_constraint **dest_constraints,
provider || dest_constraints);
provider, dest_constraints, ndest_constraints, 0, NULL, 0)) != 0)
const char *provider, struct dest_constraint **dest_constraints,
char *provider;
add_p11_identity(struct sshkey *key, char *comment, const char *provider,
id->provider = xstrdup(provider);
char *provider = NULL, *pin = NULL, canonical_provider[PATH_MAX];
if ((r = sshbuf_get_cstring(e->request, &provider, NULL)) != 0 ||
"providers is disabled", provider);
if (realpath(provider, canonical_provider) == NULL) {
provider, strerror(errno));
free(provider);
char *provider = NULL, *pin = NULL, canonical_provider[PATH_MAX];
if ((r = sshbuf_get_cstring(e->request, &provider, NULL)) != 0 ||
if (realpath(provider, canonical_provider) == NULL) {
provider, strerror(errno));
if (id->provider == NULL)
if (!strcmp(canonical_provider, id->provider)) {
free(provider);
free(id->provider);
const char *alg, const char *provider, const char *pin,
if (k11->provider)
pkcs11_provider_unref(k11->provider);
pkcs11_login_slot(struct pkcs11_provider *provider, struct pkcs11_slotinfo *si,
if (provider == NULL || si == NULL || !provider->valid) {
rv = provider->function_list->C_Login(si->session, type, (u_char *)pin,
if (k11 == NULL || k11->provider == NULL || !k11->provider->valid) {
return pkcs11_login_slot(k11->provider,
&k11->provider->slotinfo[k11->slotidx], type);
if (!k11->provider || !k11->provider->valid) {
f = k11->provider->function_list;
si = &k11->provider->slotinfo[k11->slotidx];
k11->provider->name, k11->slotidx, obj, type, *val);
if (!k11->provider || !k11->provider->valid) {
f = k11->provider->function_list;
si = &k11->provider->slotinfo[k11->slotidx];
if (pkcs11_find(k11->provider, k11->slotidx, key_filter, 3, &obj) < 0 &&
pkcs11_find(k11->provider, k11->slotidx, key_filter, 2, &obj) < 0) {
f = k11->provider->function_list;
si = &k11->provider->slotinfo[k11->slotidx];
pkcs11_rsa_wrap(struct pkcs11_provider *provider, CK_ULONG slotidx,
k11->provider = provider;
provider->refcount++; /* provider referenced by RSA key */
f = k11->provider->function_list;
si = &k11->provider->slotinfo[k11->slotidx];
pkcs11_ecdsa_wrap(struct pkcs11_provider *provider, CK_ULONG slotidx,
k11->provider = provider;
provider->refcount++; /* provider referenced by ECDSA key */
struct pkcs11_provider *provider;
sshsk_sign(const char *provider, struct sshkey *key,
(r = sshbuf_put_cstring(req, provider)) != 0 ||
LIST_FOREACH(cp, &provider->lg_consumers, lg_consumer) {
plen = strlen(provider);
memcpy(data->data, provider, plen);
if (provider)
spath, provider);
Spawn(const char *prog __unused, const char *acname, const char *provider,
if (provider) {
slen = strlen(provider);
memcpy(data->data, provider, slen);
const char *label, *prog, *provider, *acname;
provider = "";
provider = optarg;
label = provider;
if ((ret = ConfigureNode(prog, argv[optind], provider, cs, ds,
if (*provider)
syslog(LOG_INFO, "Listening as provider %s", provider);
Spawn(prog, acname, provider, exec, ngc, cs, ds, response, sz, optd);
ConfigureNode(const char *prog __unused, const char *iface, const char *provider,
gpioio_alloc_pins(device_t dev, device_t provider, ACPI_RESOURCE_GPIO *gpio,
if (GPIO_ALLOC_IO_PIN(provider, gpio->PinTable[idx + i], flags,
GPIO_RELEASE_IO_PIN(provider, pins[j]);
static void **gpioio_alloc_pins(device_t dev, device_t provider,
const char *iface, *provider;
provider = strchr(iface, ':');
if (provider) {
ifacelen = provider - iface;
provider++;
providerlen = strlen(provider);
provider = "";
memcpy(data->data, provider, providerlen);
provider_t const *provider = (provider_t const *) data;
sdp_dun_profile_p dun = (sdp_dun_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_dun_profile_p dun = (sdp_dun_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_ftrn_profile_p ftrn = (sdp_ftrn_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_hf_profile_t *hf = (sdp_hf_profile_t *) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_hf_profile_t *hf = (sdp_hf_profile_t *) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_hset_profile_t *hset = (sdp_hset_profile_t *) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_irmc_profile_p irmc = (sdp_irmc_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_irmc_profile_p irmc = (sdp_irmc_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_irmc_command_profile_p irmc_command = (sdp_irmc_command_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_lan_profile_p lan = (sdp_lan_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_lan_profile_p lan = (sdp_lan_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_lan_profile_p lan = (sdp_lan_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_opush_profile_p opush = (sdp_opush_profile_p) provider->data;
provider_t const *provider = (provider_t const *) data;
sdp_opush_profile_p opush = (sdp_opush_profile_p) provider->data;
provider->profile = profile;
memcpy(provider->data, data, datalen);
provider->handle = next_handle;
memcpy(&provider->bdaddr, bdaddr,
sizeof(provider->bdaddr));
provider->fd = fd;
TAILQ_INSERT_TAIL(&providers, provider, provider_next);
free(provider);
provider = NULL;
return (provider);
provider_unregister(provider_p provider)
TAILQ_REMOVE(&providers, provider, provider_next);
if (provider->data != NULL)
free(provider->data);
free(provider);
provider_update(provider_p provider, uint8_t const *data, uint32_t datalen)
uint8_t *new_data = (uint8_t *) realloc(provider->data, datalen);
provider->data = new_data;
provider_p provider = NULL;
TAILQ_FOREACH(provider, &providers, provider_next)
if (provider->handle == handle)
return (provider);
provider_get_next(provider_p provider)
return (TAILQ_NEXT(provider, provider_next));
provider_match_uuid(provider_p provider, uint128_t *uuid, int ucount)
max = provider->profile->usize / sizeof(provider->profile->uuid[0]);
puuid.b[2] = provider->profile->uuid[num] >> 8;
puuid.b[3] = provider->profile->uuid[num];
static TAILQ_HEAD(, provider) providers = TAILQ_HEAD_INITIALIZER(providers);
provider_p provider = calloc(1, sizeof(*provider));
if (provider != NULL) {
provider->data = malloc(datalen);
if (provider->data != NULL) {
provider_p provider_get_next (provider_p provider);
int provider_match_uuid (provider_p provider,
TAILQ_ENTRY(provider) provider_next; /* all providers */
typedef struct provider provider_t;
typedef struct provider * provider_p;
void provider_unregister (provider_p provider);
int32_t provider_update (provider_p provider,
len = server_prepare_attr_value_pair(provider, lo, ptr, rsp_end);
provider_t *provider = NULL;
if ((provider = provider_by_handle(handle)) == NULL)
cs = server_prepare_attr_list(provider, req, req+aidlen, rsp, rsp_end);
provider_p const provider, uint16_t attr,
profile_attr_create_p cf = profile_get_attr(provider->profile, attr);
len = cf(buf, eob, (uint8_t const *) provider, sizeof(*provider));
server_prepare_attr_list(provider_p const provider,
provider_t *provider = NULL;
provider = provider_by_handle(handle);
if (provider == NULL || provider->fd != fd)
if (req_end - req < provider->profile->dsize ||
provider->profile->valid == NULL ||
(provider->profile->valid)(req, req_end - req) == 0)
if (provider_update(provider, req, req_end - req) < 0)
provider_p provider = NULL, provider_next = NULL;
for (provider = provider_get_first();
provider != NULL;
provider = provider_next) {
provider_next = provider_get_next(provider);
if (provider->fd == fd)
provider_unregister(provider);
provider_t const *provider = (provider_t const *) data;
sdp_sp_profile_p sp = (sdp_sp_profile_p) provider->data;
provider_t *provider = NULL;
provider = provider_register(profile, bdaddr, fd, req, req_end - req);
if (provider == NULL)
SDP_PUT32(provider->handle, rsp);
for (provider = provider_get_first();
provider != NULL;
provider = provider_get_next(provider)) {
if (!provider_match_bdaddr(provider, &srv->req_sa.bt_bdaddr))
if (!provider_match_uuid(provider, ulist, ucount))
cs = server_prepare_attr_list(provider,
provider_t *provider = NULL;
provider_t *provider = NULL;
for (provider = provider_get_first();
provider != NULL;
provider = provider_get_next(provider)) {
if (!provider_match_bdaddr(provider, &srv->req_sa.bt_bdaddr))
if (!provider_match_uuid(provider, ulist, ucount))
SDP_PUT32(provider->handle, rsp);
provider_t *provider = NULL;
provider = provider_by_handle(handle);
if (provider == NULL || provider->fd != fd)
provider_unregister(provider);