Lines Matching refs:dev

17 set_random_report_len(fido_dev_t *dev)  in set_random_report_len()  argument
19 dev->rx_len = CTAP_MIN_REPORT_LEN + in set_random_report_len()
21 dev->tx_len = CTAP_MIN_REPORT_LEN + in set_random_report_len()
27 fido_dev_set_extension_flags(fido_dev_t *dev, const fido_cbor_info_t *info) in fido_dev_set_extension_flags() argument
34 dev->flags |= FIDO_DEV_CRED_PROT; in fido_dev_set_extension_flags()
38 fido_dev_set_option_flags(fido_dev_t *dev, const fido_cbor_info_t *info) in fido_dev_set_option_flags() argument
46 dev->flags |= val[i] ? in fido_dev_set_option_flags()
51 dev->flags |= FIDO_DEV_CREDMAN; in fido_dev_set_option_flags()
53 dev->flags |= val[i] ? in fido_dev_set_option_flags()
57 dev->flags |= FIDO_DEV_TOKEN_PERMS; in fido_dev_set_option_flags()
62 fido_dev_set_protocol_flags(fido_dev_t *dev, const fido_cbor_info_t *info) in fido_dev_set_protocol_flags() argument
70 dev->flags |= FIDO_DEV_PIN_PROTOCOL1; in fido_dev_set_protocol_flags()
73 dev->flags |= FIDO_DEV_PIN_PROTOCOL2; in fido_dev_set_protocol_flags()
83 fido_dev_set_flags(fido_dev_t *dev, const fido_cbor_info_t *info) in fido_dev_set_flags() argument
85 fido_dev_set_extension_flags(dev, info); in fido_dev_set_flags()
86 fido_dev_set_option_flags(dev, info); in fido_dev_set_flags()
87 fido_dev_set_protocol_flags(dev, info); in fido_dev_set_flags()
91 fido_dev_open_tx(fido_dev_t *dev, const char *path, int *ms) in fido_dev_open_tx() argument
95 if (dev->io_handle != NULL) { in fido_dev_open_tx()
96 fido_log_debug("%s: handle=%p", __func__, dev->io_handle); in fido_dev_open_tx()
100 if (dev->io.open == NULL || dev->io.close == NULL) { in fido_dev_open_tx()
105 if (dev->cid != CTAP_CID_BROADCAST) { in fido_dev_open_tx()
106 fido_log_debug("%s: cid=0x%x", __func__, dev->cid); in fido_dev_open_tx()
110 if (fido_get_random(&dev->nonce, sizeof(dev->nonce)) < 0) { in fido_dev_open_tx()
115 if ((dev->io_handle = dev->io.open(path)) == NULL) { in fido_dev_open_tx()
120 if (dev->io_own) { in fido_dev_open_tx()
121 dev->rx_len = CTAP_MAX_REPORT_LEN; in fido_dev_open_tx()
122 dev->tx_len = CTAP_MAX_REPORT_LEN; in fido_dev_open_tx()
124 dev->rx_len = fido_hid_report_in_len(dev->io_handle); in fido_dev_open_tx()
125 dev->tx_len = fido_hid_report_out_len(dev->io_handle); in fido_dev_open_tx()
129 set_random_report_len(dev); in fido_dev_open_tx()
132 if (dev->rx_len < CTAP_MIN_REPORT_LEN || in fido_dev_open_tx()
133 dev->rx_len > CTAP_MAX_REPORT_LEN) { in fido_dev_open_tx()
134 fido_log_debug("%s: invalid rx_len %zu", __func__, dev->rx_len); in fido_dev_open_tx()
139 if (dev->tx_len < CTAP_MIN_REPORT_LEN || in fido_dev_open_tx()
140 dev->tx_len > CTAP_MAX_REPORT_LEN) { in fido_dev_open_tx()
141 fido_log_debug("%s: invalid tx_len %zu", __func__, dev->tx_len); in fido_dev_open_tx()
146 if (fido_tx(dev, CTAP_CMD_INIT, &dev->nonce, sizeof(dev->nonce), in fido_dev_open_tx()
155 dev->io.close(dev->io_handle); in fido_dev_open_tx()
156 dev->io_handle = NULL; in fido_dev_open_tx()
162 fido_dev_open_rx(fido_dev_t *dev, int *ms) in fido_dev_open_rx() argument
168 if ((reply_len = fido_rx(dev, CTAP_CMD_INIT, &dev->attr, in fido_dev_open_rx()
169 sizeof(dev->attr), ms)) < 0) { in fido_dev_open_rx()
176 dev->attr.nonce = dev->nonce; in fido_dev_open_rx()
179 if ((size_t)reply_len != sizeof(dev->attr) || in fido_dev_open_rx()
180 dev->attr.nonce != dev->nonce) { in fido_dev_open_rx()
186 dev->flags = 0; in fido_dev_open_rx()
187 dev->cid = dev->attr.cid; in fido_dev_open_rx()
189 if (fido_dev_is_fido2(dev)) { in fido_dev_open_rx()
195 if ((r = fido_dev_get_cbor_info_wait(dev, info, in fido_dev_open_rx()
202 fido_dev_force_u2f(dev); in fido_dev_open_rx()
204 fido_dev_set_flags(dev, info); in fido_dev_open_rx()
208 if (fido_dev_is_fido2(dev) && info != NULL) { in fido_dev_open_rx()
209 dev->maxmsgsize = fido_cbor_info_maxmsgsiz(info); in fido_dev_open_rx()
211 FIDO_MAXMSG, (unsigned long)dev->maxmsgsize); in fido_dev_open_rx()
219 dev->io.close(dev->io_handle); in fido_dev_open_rx()
220 dev->io_handle = NULL; in fido_dev_open_rx()
227 fido_dev_open_wait(fido_dev_t *dev, const char *path, int *ms) in fido_dev_open_wait() argument
233 return (fido_winhello_open(dev)); in fido_dev_open_wait()
235 if ((r = fido_dev_open_tx(dev, path, ms)) != FIDO_OK || in fido_dev_open_wait()
236 (r = fido_dev_open_rx(dev, ms)) != FIDO_OK) in fido_dev_open_wait()
280 fido_dev_open_with_info(fido_dev_t *dev) in fido_dev_open_with_info() argument
282 int ms = dev->timeout_ms; in fido_dev_open_with_info()
284 if (dev->path == NULL) in fido_dev_open_with_info()
287 return (fido_dev_open_wait(dev, dev->path, &ms)); in fido_dev_open_with_info()
291 fido_dev_open(fido_dev_t *dev, const char *path) in fido_dev_open() argument
293 int ms = dev->timeout_ms; in fido_dev_open()
296 if (fido_is_nfc(path) && fido_dev_set_nfc(dev) < 0) { in fido_dev_open()
302 if (fido_is_pcsc(path) && fido_dev_set_pcsc(dev) < 0) { in fido_dev_open()
308 return (fido_dev_open_wait(dev, path, &ms)); in fido_dev_open()
312 fido_dev_close(fido_dev_t *dev) in fido_dev_close() argument
315 if (dev->flags & FIDO_DEV_WINHELLO) in fido_dev_close()
316 return (fido_winhello_close(dev)); in fido_dev_close()
318 if (dev->io_handle == NULL || dev->io.close == NULL) in fido_dev_close()
321 dev->io.close(dev->io_handle); in fido_dev_close()
322 dev->io_handle = NULL; in fido_dev_close()
323 dev->cid = CTAP_CID_BROADCAST; in fido_dev_close()
329 fido_dev_set_sigmask(fido_dev_t *dev, const fido_sigset_t *sigmask) in fido_dev_set_sigmask() argument
331 if (dev->io_handle == NULL || sigmask == NULL) in fido_dev_set_sigmask()
335 if (dev->transport.rx == fido_nfc_rx && dev->io.read == fido_nfc_read) in fido_dev_set_sigmask()
336 return (fido_nfc_set_sigmask(dev->io_handle, sigmask)); in fido_dev_set_sigmask()
338 if (dev->transport.rx == NULL && dev->io.read == fido_hid_read) in fido_dev_set_sigmask()
339 return (fido_hid_set_sigmask(dev->io_handle, sigmask)); in fido_dev_set_sigmask()
345 fido_dev_cancel(fido_dev_t *dev) in fido_dev_cancel() argument
347 int ms = dev->timeout_ms; in fido_dev_cancel()
350 if (dev->flags & FIDO_DEV_WINHELLO) in fido_dev_cancel()
351 return (fido_winhello_cancel(dev)); in fido_dev_cancel()
353 if (fido_dev_is_fido2(dev) == false) in fido_dev_cancel()
355 if (fido_tx(dev, CTAP_CMD_CANCEL, NULL, 0, &ms) < 0) in fido_dev_cancel()
362 fido_dev_set_io_functions(fido_dev_t *dev, const fido_dev_io_t *io) in fido_dev_set_io_functions() argument
364 if (dev->io_handle != NULL) { in fido_dev_set_io_functions()
375 dev->io = *io; in fido_dev_set_io_functions()
376 dev->io_own = true; in fido_dev_set_io_functions()
382 fido_dev_set_transport_functions(fido_dev_t *dev, const fido_dev_transport_t *t) in fido_dev_set_transport_functions() argument
384 if (dev->io_handle != NULL) { in fido_dev_set_transport_functions()
389 dev->transport = *t; in fido_dev_set_transport_functions()
390 dev->io_own = true; in fido_dev_set_transport_functions()
396 fido_dev_io_handle(const fido_dev_t *dev) in fido_dev_io_handle() argument
399 return (dev->io_handle); in fido_dev_io_handle()
414 fido_dev_t *dev; in fido_dev_new() local
416 if ((dev = calloc(1, sizeof(*dev))) == NULL) in fido_dev_new()
419 dev->cid = CTAP_CID_BROADCAST; in fido_dev_new()
420 dev->timeout_ms = -1; in fido_dev_new()
421 dev->io = (fido_dev_io_t) { in fido_dev_new()
428 return (dev); in fido_dev_new()
434 fido_dev_t *dev; in fido_dev_new_with_info() local
436 if ((dev = calloc(1, sizeof(*dev))) == NULL) in fido_dev_new_with_info()
443 fido_dev_free(&dev); in fido_dev_new_with_info()
448 dev->io = di->io; in fido_dev_new_with_info()
449 dev->io_own = di->transport.tx != NULL || di->transport.rx != NULL; in fido_dev_new_with_info()
450 dev->transport = di->transport; in fido_dev_new_with_info()
451 dev->cid = CTAP_CID_BROADCAST; in fido_dev_new_with_info()
452 dev->timeout_ms = -1; in fido_dev_new_with_info()
454 if ((dev->path = strdup(di->path)) == NULL) { in fido_dev_new_with_info()
456 fido_dev_free(&dev); in fido_dev_new_with_info()
460 return (dev); in fido_dev_new_with_info()
466 fido_dev_t *dev; in fido_dev_free() local
468 if (dev_p == NULL || (dev = *dev_p) == NULL) in fido_dev_free()
471 free(dev->path); in fido_dev_free()
472 free(dev); in fido_dev_free()
478 fido_dev_protocol(const fido_dev_t *dev) in fido_dev_protocol() argument
480 return (dev->attr.protocol); in fido_dev_protocol()
484 fido_dev_major(const fido_dev_t *dev) in fido_dev_major() argument
486 return (dev->attr.major); in fido_dev_major()
490 fido_dev_minor(const fido_dev_t *dev) in fido_dev_minor() argument
492 return (dev->attr.minor); in fido_dev_minor()
496 fido_dev_build(const fido_dev_t *dev) in fido_dev_build() argument
498 return (dev->attr.build); in fido_dev_build()
502 fido_dev_flags(const fido_dev_t *dev) in fido_dev_flags() argument
504 return (dev->attr.flags); in fido_dev_flags()
508 fido_dev_is_fido2(const fido_dev_t *dev) in fido_dev_is_fido2() argument
510 return (dev->attr.flags & FIDO_CAP_CBOR); in fido_dev_is_fido2()
514 fido_dev_is_winhello(const fido_dev_t *dev) in fido_dev_is_winhello() argument
516 return (dev->flags & FIDO_DEV_WINHELLO); in fido_dev_is_winhello()
520 fido_dev_supports_pin(const fido_dev_t *dev) in fido_dev_supports_pin() argument
522 return (dev->flags & (FIDO_DEV_PIN_SET|FIDO_DEV_PIN_UNSET)); in fido_dev_supports_pin()
526 fido_dev_has_pin(const fido_dev_t *dev) in fido_dev_has_pin() argument
528 return (dev->flags & FIDO_DEV_PIN_SET); in fido_dev_has_pin()
532 fido_dev_supports_cred_prot(const fido_dev_t *dev) in fido_dev_supports_cred_prot() argument
534 return (dev->flags & FIDO_DEV_CRED_PROT); in fido_dev_supports_cred_prot()
538 fido_dev_supports_credman(const fido_dev_t *dev) in fido_dev_supports_credman() argument
540 return (dev->flags & FIDO_DEV_CREDMAN); in fido_dev_supports_credman()
544 fido_dev_supports_uv(const fido_dev_t *dev) in fido_dev_supports_uv() argument
546 return (dev->flags & (FIDO_DEV_UV_SET|FIDO_DEV_UV_UNSET)); in fido_dev_supports_uv()
550 fido_dev_has_uv(const fido_dev_t *dev) in fido_dev_has_uv() argument
552 return (dev->flags & FIDO_DEV_UV_SET); in fido_dev_has_uv()
556 fido_dev_supports_permissions(const fido_dev_t *dev) in fido_dev_supports_permissions() argument
558 return (dev->flags & FIDO_DEV_TOKEN_PERMS); in fido_dev_supports_permissions()
562 fido_dev_force_u2f(fido_dev_t *dev) in fido_dev_force_u2f() argument
564 dev->attr.flags &= (uint8_t)~FIDO_CAP_CBOR; in fido_dev_force_u2f()
565 dev->flags = 0; in fido_dev_force_u2f()
569 fido_dev_force_fido2(fido_dev_t *dev) in fido_dev_force_fido2() argument
571 dev->attr.flags |= FIDO_CAP_CBOR; in fido_dev_force_fido2()
575 fido_dev_get_pin_protocol(const fido_dev_t *dev) in fido_dev_get_pin_protocol() argument
577 if (dev->flags & FIDO_DEV_PIN_PROTOCOL2) in fido_dev_get_pin_protocol()
579 else if (dev->flags & FIDO_DEV_PIN_PROTOCOL1) in fido_dev_get_pin_protocol()
586 fido_dev_maxmsgsize(const fido_dev_t *dev) in fido_dev_maxmsgsize() argument
588 return (dev->maxmsgsize); in fido_dev_maxmsgsize()
592 fido_dev_set_timeout(fido_dev_t *dev, int ms) in fido_dev_set_timeout() argument
597 dev->timeout_ms = ms; in fido_dev_set_timeout()